Edited at

顔認識AIで似ている有名人を検索するLINEbotを作ってみた

More than 1 year has passed since last update.


:star: 作ったもの


:star: 使い方


  • 次のボタン、QRコード、もしくは@dxg4720jでID検索すると友達に追加できます


  • 画像を送ると似ている有名人(女性)の検索結果を返します

  • 「画像をもっと見る」で登録されている画像一覧を見ることができます

  • 「Wikipediaで開く」でその人のWikipediaを参照できるようにしました

  • Wilkipediaで閲覧数の多い人を優先的に約900人を登録しています

  • テキストを送った場合、登録されている氏名と一致した時は画像一覧を返します


:star: 実装の概要


  • 登録する名前の一覧を用意する

  • Google画像検索で名前を検索し、httpsの画像の一覧を用意する

  • MicrosoftのFaceAPIを使用して画像から顔を検出して登録し、学習させる

  • 2枚目以降は顔識別を行い、定めた閾値以上の場合は同一人物と判断して顔画像を追加し、再び学習させる

  • これを人数分繰り返す

  • LINEからwebhookを受け取るAPIを用意する

  • 画像が送られてきた場合、FaceAPIで顔検出を行ってfaceIdを取得する

  • 続けて顔識別を行って似ている顔を取得して返すようにする


:star: 簡単な補足


:pencil: 登録する名前の一覧


:pencil: Google画像検索から画像を取得


:pencil: Microsoft FaceAPI


  • MicrosoftのCognitiveServicesのうちFaceAPIを使用して顔検出・顔識別を行っています。

  • まずLargePersonGroupを作成し、先ほど取得した名前でPersonを作成し、顔検出の結果を登録し、トレーニング(学習)を行います

  • 2枚目以降は顔識別を行い、定めた閾値以上の場合は同一人物と判断して顔画像を追加し、再び学習させています

  • FaceAPIではどんな画像が登録されているか分からないため、別途、誰にどの画像を登録したのかを保存しておく必要があります。

  • また、APIのRateLimitが1分あたり20回までなので、連続してAPIを叩く場合は間隔をあける必要があります

  • GoogleCloudのAutoMLでも同じようなことができるはずですが、APIのコール回数の無料枠が少ない(月1000回)なので、FaceAPI(月30000回)にしました


:pencil: LINE MessagingAPI


:star: 余談


  • 登録されていない名前の場合は新たにデータを追加できるようにしたいですね