
こんな疑問にお答えします。
LINE BOOT AWARDS 2018で賞を頂いてから、LINE BOT サービスを運用しています。
LINE botは、文字だけではなく画像も扱えます。
また、簡単にAWSのサービスと連携することができます。
筆者の紹介
2018年にフリーランスに転身。
現在は、Web・アプリの開発やITコンサルタントとして月250万円以上を稼ぎながら暮らしています。
この記事では、LINE botとAWS Rekognitionを連携させて、画像から物体検出するサービスを紹介します。
もくじ
LINE bot概要
以下の記事で作成したLINE botをベースに、物体検出部分の処理を追加していきます。
-
-
【超簡単】JavaでLINE Messaging APIを動かす【プログラム公開中】
続きを見る
赤枠部分が今回の実装範囲です。
AWS Rekognition
AWSが提供している画像認識AI「Rekognition」を使って物体検出を行います。
AWS SDKで「Rekognition」へ接続するためには、アクセスキーが必要です。
アクセスキー 取得の流れ
- IAMポリシーを作成
- IAMポリシーをアタッチしたユーザーを作成
- ユーザーのアクセスキーを取得
IAMポリシーを作成
RekognitionのDetectLabelsアクションに読み込み権限を持ったポリシーを作ります。
ポリシー名は「Rekognition-DetectLabels」にしました。
IAMポリシーをアタッチしたユーザーを作成
新規ユーザーを作成します。
ポリシー「Rekognition-DetectLabels」をアタッチします。
ユーザー作成完了です。
後ほど「アクセスキー ID」と「シークレットアクセスキー」をHerokuの環境変数に設定します。csvをダウンロードしておいてください。
更新箇所
ソースコードとHerokuの更新箇所を紹介します。
ソースコード
AWS SDK追加
dependencies { compile "org.springframework.boot:spring-boot-starter-web" compile "com.linecorp.bot:line-bot-spring-boot:2.1.0" compile "com.amazonaws:aws-java-sdk:1.11.414" compileOnly "org.projectlombok:lombok" testCompile "org.springframework.boot:spring-boot-starter-test" }
AWSアクセスキー設定
aws: accessKey: ${AWS_ACCESS_KEY} secretKey: ${AWS_SECRET_KEY}
AWS Rekognition接続サービスクラス追加
src/main/java/com/sample/bot/line/service/RekognitionService.java
AWS Rekognition接続サービスクラス呼出元追加
import com.sample.bot.line.service.RekognitionService; ----- 省略 ----- @Autowired private RekognitionService rekognitionService; ----- 省略 ----- /** * 画像 * @param event * @return * @throws Exception */ @EventMapping public void handleImageMessageEvent(MessageEvent<ImageMessageContent> event) throws Exception { String messageId = event.getMessage().getId(); InputStream is = lineMessagingClient.getMessageContent(messageId).get().getStream(); String result = rekognitionService.detect(is); lineMessagingClient.replyMessage( new ReplyMessage( event.getReplyToken(), Arrays.asList(new TextMessage(result)) ) ); }
ソースはGitHubにあります。
Heroku
Herokuの環境変数に、AWSのアクセスキーを設定します。
[Settings] - [Reveal Config Vars」
AWS_ACCESS_KEY:アクセスキー ID
AWS_SECRET_KEY:シークレットアクセスキー
deploy設定
注意ポイント
新規リポジトリを使う場合は、deployのリポジトリも変更してください。
LINEで動作確認
スマホから、写真を送信してみましょう。
物体検出の結果が表示されます。
(物体:適合率)
まとめ
AWSには、様々なサービスが用意されています。
実際に手を動かして、最新の技術をキャッチアップすることは非常に重要です。
各サービスに触れて、アイデアを膨らませてみてください。
リファレンスと、以下の書籍が参考になると思います。
IBM Watson Visual Recognition編はこちらの記事をご覧ください。
-
-
【簡単】LINE botで画像認識AIに挑戦!IBM Watson Visual Recognition編
続きを見る