【AI】OpenBRで顔認識やってみた
こんにちは。そうまです。
人工知能の勉強中に画像認識について調べてたところ、「OpenBR」というライブラリを見つけました。
公式サイトのドキュメントには
気になるので、さっそく試してみました。
DocumentのInstallにしたがって、インストールしていきます。
今回は、VirtualBoxでUbuntu 14.04の仮想マシンを使いました。
OpenBRは、OpenCVを使っています。せっかくなので、OpenCVもPythonで使えるように、python-devとpython-numpyを先に入れときます。
インストールが終わったら、チュートリアルをやってみます。
Quick Startに載っている以下のコマンドを実行すると、ウェブカメラに映る顔の周りにフレームが表示されます!
データセットが必要なので、LFWのデータセットをダウンロードして使いました。
ダウンロードして、解凍したら、以下のコマンドでデータセットを元にしたギャラリーファイルを作成します。
テニス界のレジェンド、アンドレ・アガシですね!
結果ファイルを開くと、、、
A列に画像ファイル名、B列にそのファイルと認識対象の画像との類似度が出力されています。
一番上のAndre_Agassi_0007.jpgは同一ファイルなので、意味は無いですが他のアガシの画像が上位に来ているので、ちゃんと認識されていますね!
ちなみに、アガシ本人を差し置いて15番目に似ていると判定された、Amy Brennemanの画像はこれです。
似てるっちゃ、似てますね。アガシがロン毛になったらこんな感じになるのかもしれません。
以上です!また次回をお楽しみに!
人工知能の勉強中に画像認識について調べてたところ、「OpenBR」というライブラリを見つけました。
公式サイトのドキュメントには
OpenBRは、新しい様式を調査する既存のアルゴリズムを改善し、商用システムとのインターフェース、認識性能を測定し、自動化された生体認証システムを導入するためのフレームワークです。とあります(Google翻訳)。Apache2 licenseなので、出典を明記すれば商用利用もOKなのがいいですね!
気になるので、さっそく試してみました。
DocumentのInstallにしたがって、インストールしていきます。
今回は、VirtualBoxでUbuntu 14.04の仮想マシンを使いました。
OpenBRは、OpenCVを使っています。せっかくなので、OpenCVもPythonで使えるように、python-devとpython-numpyを先に入れときます。
$ sudo apt-get install python-dev python-numpyその後はインストールガイドにしたがって、粛々と進めます。ソースからのビルドになるので、少し時間がかかります。
インストールが終わったら、チュートリアルをやってみます。
Quick Startに載っている以下のコマンドを実行すると、ウェブカメラに映る顔の周りにフレームが表示されます!
$ br -gui -algorithm “Cvt(Gray)+Cascade(FrontalFace)+Draw(lineThickness=3)+Show(false)” -enroll 0.webcamさて、正常にインストールできていることが確認できたので、1対Nの顔認識のチュートリアルをやってみます。
データセットが必要なので、LFWのデータセットをダウンロードして使いました。
ダウンロードして、解凍したら、以下のコマンドでデータセットを元にしたギャラリーファイルを作成します。
$ br -algorithm FaceRecognition -enrollAll -enroll ./lfw/ ‘lfw.gal’ギャラリーファイルができたら、ギャラリーファイル、認識対象となる画像ファイルと結果を出力するファイルを指定して、認識を行います。
$ br -algorithm FaceRecognition -compare lfw.gal Andre_Agassi_0007.jpg match_scores.csv認識対象としたのは、このファイルです。
テニス界のレジェンド、アンドレ・アガシですね!
結果ファイルを開くと、、、
A列に画像ファイル名、B列にそのファイルと認識対象の画像との類似度が出力されています。
一番上のAndre_Agassi_0007.jpgは同一ファイルなので、意味は無いですが他のアガシの画像が上位に来ているので、ちゃんと認識されていますね!
ちなみに、アガシ本人を差し置いて15番目に似ていると判定された、Amy Brennemanの画像はこれです。
似てるっちゃ、似てますね。アガシがロン毛になったらこんな感じになるのかもしれません。
以上です!また次回をお楽しみに!