2011-11-24 php勉強会 lt用資料

21
1 PHPでも顔認識してみようぜ!! 株式会社ソフトレット 山崎誠 (@letkun)

Upload: -

Post on 28-Jun-2015

652 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 2011-11-24 PHP勉強会 LT用資料

1

PHPでも顔認識してみようぜ!!

株式会社ソフトレット

山崎誠 (@letkun)

Page 2: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 2

•株式会社ソフトレットの紹介

�WEBアプリケーション(主にPHP)の開発

�スマホアプリの開発 (Android、iPhone、iPad)

softolet.comsoftolet.comsoftolet.comsoftolet.com

Page 3: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 3

今日はPHPから画像の顔認識を

試してやってみたいと思います!

Page 4: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 4

まず「OpenCV」とは

米 Intel 社で開発された画像処理・画像認識用のC言語ライブラリです。

Page 5: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 5

まず準備するもの

Page 6: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 6

PHPを動かすサーバー

Page 7: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 7

•今回サーバーはAmazonWebService のEC2-microインスタンスを利用しました。

•1時間あたり 0.027$

•1か月間起動していても、たったの1,566円 (78円換算)

今回のような「お試し」環境を作成する場合等に便利です。

Page 8: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 8

それ以外に、今回準備したもの

•Apache+ PHP 5.3

•OpenCVをビルドする為のライブラリzlib、libjpeg、libpng、jasper、及びそれぞれのdevel

•OpenCV 本体 (今回は 1.0,0)

•Facedetect (PHP用のExtension)

Page 9: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 9

php.ini に以下を追加して、Apacheを再起動すれば使えるようになります。

; Directory in which the loadable extensions (modules) reside.

; http://www.php.net/manual/en/ini.core.php#ini.extension-dir; extension_dir = "./"

extension_dir = "/usr/lib/php/modules/"

extension = face_detect.so

; Whether or not to enable the dl() function. The dl() function does NOT work; properly in multithreaded servers, such as IIS or Zeus, and is automatically

; disabled on them.; http://www.php.net/manual/en/info.configuration.php#ini.enable-dl

enable_dl = Off

Page 10: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 10

ちなみに結構ネット上に

やり方転がってます。

Page 11: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 11

さっそく使ってみましょう

Page 12: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 12

以下のような画面を2つ作成しました。

画像アップロード用HTML

画像アップロード用HTML

顔認識して、結果を出力するPHP

顔認識して、結果を出力するPHP

画像をPOSTする

Page 13: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 13

// POSTされた画像の取出しif (is_uploaded_file($_FILES["image1"]["tmp_name"])) {

$upfile = "./upfile/".$_FILES["image1"]["name"];move_uploaded_file($_FILES['image1']['tmp_name'], $upfile);

} else

exit();

$file_path = $upfile; // upload画像を入力する$cascade = ‘./haarcascade_frontalface_alt.xml’; // 正面顔検出器

$faces = face_detect( $file_path, $cascade );

// 以降で $facesの内容を処理する// $faces は、連像配列で、検出した顔の数分 $f[‘x’]、 $f[‘y’]、

// $f[‘width’]、 $f[‘height’] を返します。

phpでのポイントは以下のface_detect()をCALLする部分のみです。 (簡単)

Page 14: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 14

それでは、実際に画像をPOSTしてみます

Page 15: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 15

①手島優さん。

いつもお世話になってます。m(__)m

Page 16: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 16

②2名の場合、麻里子様(AKB)

やっぱり、かわいい・・・

Page 17: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 17

③2名でいけるなら・・・AKB大勢(12名)

もう!最高ですね☆

Page 18: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 18

④アニメはどうなのか?

世紀末救世主伝説

Page 19: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 19

感想と考察

Page 20: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 20

•OpenCVは1.0.0 を使用したが、本来2.0以降を使用したかった。ビルド上の問題で断念。

•検出器(XML)の調整も必要だが、検出が今一甘い。

•サーバー側で検出するので、スマートフォンや携帯からでも組み合わせのシステムを作れるかも?

Page 21: 2011-11-24 PHP勉強会 LT用資料

(株)ソフトレット 山崎誠 @letkun 21

ご清聴ありがとうございました。