AIプログラミング

Docomoの画像認識でLineBotを行ってみる

投稿日:

Docomoの画像認識でLineBotを行ってみる

今回は、Docomoの画像認識を使用したLineBotを作成します。
Docomoの画像認識とはカテゴリ認識、物体検出、類似画像検索、オブジェクト認識などの種類がありますが、その中のカテゴリ認識を行います。

カテゴリ認識とは、画像に写っているものが、指定されたモデルの中のどのカテゴリに属するのかを判定し、そのカテゴリの名称と判定の確からしさを表すスコアを返却するAPIです。

Docomoの画像認識

https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=image_recognition&p_name=api_reference

Lineと組み合わせることにより、このようなアプリケーションが簡単に作成できます。

金閣寺

この前旅行に行ってきた金閣寺です。正しく画像認識がされています。

というよりも目立つ建物なので正解するのは当然かも・・。

使用する環境

  • Amazon AWS(EC2)
  • Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type
  • Flask
  • Python 2.7

Python3系では存在しないライブラリを使用するので2系で作成してください。

ソースコード

ソースコードの詳細

LineよりPost受信処理

Lineより画像が送られた来た場合、POSTメソッドにて通知されます。

テキスト・画像・スタンプの場合、event['type']はMessageとして通知されます。

Message以外は友達登録時のFollowやテンプレートメッセージに対する返信であるPostbackなどがありますが、今回は画像のみを扱うため、通知されたevent['type']がMessageかどうかを判定しています。

続いて、['message']['type']の判定を行います。画像の場合はimage、テキストの場合はtextとして通知されます。

こちらも画像かどうかを判定したいので、imageかどうかを判定しています。

このようにしてLineより画像が送られた来たメッセージが画像かどうかを判定することが出来ます。

送られた画像はLineBotの仕組み上、画像データそのものは渡されません。固有のIDのみが渡されます。

渡された固有のIDを指定して再度LINEに問い合わせることにより、画像を取得することができます。

そのための処理を別メソッド(getImageLine)として作成しています。

このメソッド(getImageLine)は固有のIDを引数に持ち、応答の文字列を戻り値として持ちます。

このメソッドで返却された文字列をそのままLineの応答として使用するため、lineReplyメソッドを起動しています。

全てが終了したら正常終了を意味する200を返却しています。

指定されたメッセージで返送する

引数で指定されたメッセージをLineBotのメッセージとして返却しています。LineBotのエンドポイントを指定し、requestsメソッドを起動することでLineに返却することができます。

LINEから画像データを取得

このメソッドの目的は固有のIDからLineに問い合わせを行い、画像を取得することが目的です。取得した画像は/tmp配下にjpg形式として保存しています。

最後に、jpeg形式として保存したフルパスを指定して、DoCoMo画像認識を行い結果を整形するSetImageCategoryメソッドを起動しています。

DoCoMo画像認識を行い結果を整形する

このメソッドの目的は、DoCoMo画像認識(カテゴリ認識)を行い、出力された内容を整形することです。

最初にgetDocomoImageCategoryメソッドを起動しています。その後、出力されたカテゴリのタグとスコアを整形して表示しています。

DoCoMo画像認識(カテゴリ認識)を行う

このメソッドは実際にDoCoMo画像認識(カテゴリ認識)のAPIを起動し、取得した結果をそのまま戻り値として返却しています。

今回はDocomo画像認識を行った単純なLineBotのアプリケーションですが、出力した結果に対してWikipediaから情報を持ってきて表示したり、位置情報を出力するなど、いろいろ応用することで様々なアプリケーションを作成することができます。

是非試してみてください。

参考URL
こちらのサイトを参考にさせて頂きました。

docomoの画像認識APIを用いたカテゴリ推定
https://qiita.com/ichiroex/items/16a6dcd893a131624a71

-AIプログラミング
-, ,

Copyright© AI人工知能テクノロジー , 2019 All Rights Reserved.