2018/04/11

Deep Learningのハリーポッター組分け帽子をLINE Botにしてみた

先日、Deep Learningを使ってハリーポッターの組分け帽子を作りました。

作ったはいいものの、利用するには環境を構築して、試さなければいけません。。。
ですので、作ったソフト"Sorting Deep Hat"をLINE Botにしてみました!

QRコードは下記です。
LINE Botで公開しているので、誰でも利用することができるのですが、
LINE Botのプランはフリーのものを使用しているため、送信数に限度があります。
よって、そのうち利用できなくなる可能性があります。
(MAXになってLINE Botが使えなくなったら、Twitter Botにでもしようかな。)

送信された画像は送り返すために一時ファイルとして保存していますが、
プログラム終了時に消えるようになっています。

また、デバッグ等を行っている時には正常に動作しない場合もありますので、その場合はご了承ください。

LINE Botの使い方

Botに画像を送信すると、すぐに結果を文字と画像で送信してくれるというものです。
文字を送信した場合には同じ文字をオウム返しで送り直してきます。
もしも、画像内に顔が見つからない場合には、「もっと大きく写る写真を使う」よう言われます。
顔認識にはOpenCVを用いていて、模様等をご認識することがよくあるので、顔が大きく写っている画像でないと認識しないよう厳し目にパラメータを設定しています。
大まかに画像の縦1/3程度は顔になるくらい顔が大きく写っているものを送信してください。

HerokuでWebサーバーを立てて、運用していますが、その中のプログラムはGithubで公開しています。

2018/04/03

Heroku, PythonでLine Botを作る

ここでは送信したメッセージをオウム返しするLine Botを作ります。
基本的に他のブログの引用ですが、体系的にまとめました。

Lineアカウント作成

Botを作るためには、下記の2アカウントを作る必要があります。
  • Line Business
  • Messasing API
ここは下記URLを参考に
https://qiita.com/yoshizaki_kkgk/items/bd4277d3943200beab26

Herokuアカウント作成

下記URLを参考に
https://j-hack.gitbooks.io/deploy-meteor-app-to-heroku/content/step1.html

Line Bot作成

基本的には下記URLと同じです。

しかし、この説明ではHeroku Gitのみを使用していますが、
ここではGithubとHerokuを連携させて使用します。

Githubレポジトリ作成・実装

まずは、Githubで連携したいレポジトリを新規作成します。
そのレポジトリ内に上記URLの「実装」章を参考にして、ファイルの追加・編集を行い、レポジトリにpushしてください。
tree
.
├── LICENSE
├── Procfile
├── README.md
├── main.py
└── requirements.txt

次にブラウザでHerokuのアカウントにログインをして、"Create new app"等を押して、アプリケーションを作成します。
設定画面の"Deploy"タブ内のDevelopment methodでGithubを選び、先ほど作成したレポジトリを設定します。

初期設定・デプロイ

まずは初期設定を行います。下記コマンドでHerokuにログインします。
参考にしているサイトではheroku createでアプリケーションを作成していますが、先ほどブラウザ上で作成しましたので不要です。
heroku login
次に同じようにLINEのアカウント設定を環境変数に追加する必要があるのですが、、、
  • LINE_CHANNEL_SECRET
  • LINE_CHANNEL_ACCESS_TOKEN
参考にしたサイトと同じようにconfig:setのコマンドを打ってもエラーになってしまいます。。。
これは、heroku createをCLIで行っていないため、config:setコマンドがどのHerokuアプリケーションを対象にしているのかわからないためだと思います。
よって、下記のように変更して実行します。
heroku config:set LINE_CHANNEL_SECRET="チャンネルシークレット" -app アプリケーション名
heroku config:set LINE_CHANNEL_ACCESS_TOKEN="アクセストークン" -app アプリケーション名
その後、ブラウザ上で手動でデプロイします。

最後に、同じようにLine DevelopperサイトのChannel基本設定画面で、Webhook URLを登録します。
ここで注意するのは、URLは下記のように最後に"callback"がつきます。
(自分はこれを追加しないで長い間悩んでしまいました。。。)
https://アプリケーション名.herokuapp.com/callback
これで自分のスマホでBotを友達にして、メッセージを投げるとオウム返しします。