2015/11/26 (木)

【AI】OpenBRで顔認識やってみた

こんにちは。そうまです。

人工知能の勉強中に画像認識について調べてたところ、「OpenBR」というライブラリを見つけました。
OpenBR___Home
公式サイトのドキュメントには
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
認識対象としたのは、このファイルです。
agassi
テニス界のレジェンド、アンドレ・アガシですね!

結果ファイルを開くと、、、
Ubuntu14_04-OpenBR__Running_
A列に画像ファイル名、B列にそのファイルと認識対象の画像との類似度が出力されています。
一番上のAndre_Agassi_0007.jpgは同一ファイルなので、意味は無いですが他のアガシの画像が上位に来ているので、ちゃんと認識されていますね!

ちなみに、アガシ本人を差し置いて15番目に似ていると判定された、Amy Brennemanの画像はこれです。
amy
似てるっちゃ、似てますね。アガシがロン毛になったらこんな感じになるのかもしれません。

以上です!また次回をお楽しみに!

続きを読む

2015/11/20 (金)

【AI】TensorFlowやってみた

こんにちは!そうまです。

2015/11/10 Googleが自社で使っているディープラーニングなどの機械学ライブラリを”TensorFlow”という名前で公開しました!
さすがGoogle太っ腹ですね。さっそくダウンロードして使ってみました。
TensorFlow公式ページのガイドにしたがって、Macにインストールと思ったら、pipが古かったり、pythonが古かったり、Xcodeが古かったりで時間がかかっちゃいました。
※Xcodeのアップデートはサイズが大きいので、後回しにしちゃいがちですよね。。。

無事インストールが終わり、”Try your first TensorFlow program”ってことでやってみます。
ガイドの”Run TensorFlow”をそのまま走らせると、エラー。。。
どうやらTensorFlowがMacのCPUのコア数を自動で取得できないので、コードで指定する必要があるみたいです。
import multiprocessing as mp

core_num = mp.cpu_count()
config = tf.ConfigProto(
inter_op_parallelism_threads=core_num,
intra_op_parallelism_threads=core_num )
sess = tf.Session(config=config)

こんな感じで、Session()に引数で指定します。
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42
>>>

ガイド通りに、結果が表示されました!

今日はここまで。次回もお楽しみに!

続きを読む

2015/11/11 (水)

ArduinoでLチカ!

こんにちは!そうまです。

突然ですが、この度、Arduinoはじめました。

Wikipediaによると、
Arduino(アルドゥイーノ[1])は、AVRマイコン入出力ポートを備えた基板、C++風のArduino言語とそれの統合開発環境から構成されるシステム。
とのことです。

簡単にセンサーやらLEDやらモーターやらを繋いで、それを使うソフトウェアも自分で書けて、動かせてしまう機械です!
障害物を自動的に避けて走るロボットカーや、畑の状態を遠隔で監視するシステムなど、電子工作からIoTデバイスまで様々なものが制作されています。

今回は、このArduinoを使ってLチカ(LEDをチカチカさせる、入門的な内容)にチャレンジしてみました。

購入したのは、OSOYOOの「Arduinoをはじめよう 互換キット UNO R3対応互換ボード 初心者専用実験キット 基本部品セット20 in 1」です。
P1180425

20種類のパーツがセットになっています。たくさんのセンサーやリモコンまで入っていて、夢が広がります。
P1180427

こちらが、Arduino UNOです。たくさんあるArduinoの中でも、もっとも基本的なボードとのこと。
P1180428

パーツを確認したら、ArduinoのサイトからIDE(統合開発環境)をダウンロードして、インストールします。
picture

PCとArduino UNOをUSBケーブルで繋ぎ、LEDを挿してサンプルスケッチの”Blink”を実行すると、、、
1446771771kwrXc4JwFu9JTNK1446771769

光りました!
キットの開封からここまで、IDEのダウンロードも含めてわずか30分!
インターネット上にたくさん情報があるのも、Arduinoの優れた点ですね!

今後もいろいろなものを作ってみたいと思いますので、お楽しみに!

続きを読む

2015/11/04 (水)

はじめまして!

はじめまして!そうまと申します。 この度、ITソリューションサイトでもブログをはじめました! このブログでは弊社のITソリューション事業に関連のある話題や人工知能・IoTに関係する情報をご紹介していく予定です! 拙い部分もあるかと思いますが、どうぞお付き合いください。 よろしくお願いします! it-changes-it

続きを読む