簡単にできるOpenCVを使った顔検出

簡単にできるOpenCVを使った顔検出

画像からの顔検出は意外と簡単

こんにちは。

AI coordinatorの清水秀樹です。

以前から画像に写っている顔の検出ができたら良いなぁって思っていましたが、そう簡単ではないイメージを持っていました。

ただ、最近になってちょっと調べてみたら、案外簡単にできそうだということが分かったので挑戦してみました。

そしてビックリするほどあっさりできたので、その内容を紹介します。

 

OpenCVを使えばあっさり画像からの顔検出ができますので、興味がある方はぜひやってみてください。

 

テスト環境

macOS Sierra

Anaconda3-4.2.0-MacOSX-x86_64

opencv3 3.1.0

 

顔検出に挑戦

それでは早速、画像からの顔検出に挑戦したいと思います。

今回使用する画像は以下の画像です。

 

適当にネットから拝借してきた新垣結衣さんの画像を使ってみたいと思います。

ソースコードは本当に少なくてすみます。

OpenCVには初めから顔検出ができるカスケードファイルが準備されています。

顔検出をしたい場合は、「haarcascade_frontalface_alt.xml」を指定しください。(ソースコードの真ん中あたり)

顔と検出した部分を赤枠で囲み、ファイル出力するようにしています。

 

実行はjupyter notebookで実行して頂ければ、入力前の画像と出力画像をjupyter notebook上に表示できるようにしています。

 

それでは早速実行しみましょう。

実行すると以下のような結果が表示されます。

 

しっかりと顔を検出できました。

画像が小さすぎる場合、上記ソースコードそのままでは検出しないことがあります。

その場合は、minSize(100,100)部分の数字を小さくしてください。

これは100ピクセル以下の画像は検出させないという指定になっています。

 

今度は別のカスケードファイルを使ってみましょう。

目を検出するカスケードファイルを使ってみると以下のような画像になりました。

minSize = (10,10)で実行しています。

なんだが目以外の画像も目と検出しているようです。

この辺の精度はあまり高くなさそうですね。

 

いずれにせよ、OpenCVを使用すれば簡単に画像からの物体検出ができるようです。

この技術を使えば色々なことに使用できそうですね。

ぜひお試しあれ。

それではまた。

About The Author

Hideki
東京大学発AIスタートアップ企業でロボット開発室室長、画像解析室室長、動画解析室室長を務め、AIエンジニアとしても画像認識関連の特許を在籍中に3つ取得。その後、KDDIグループ内でプロダクトリーダーとして自然言語処理パッケージの自社開発を経て、現在はAGRISTのテックリードとして農業の人手不足の解決に向けた収穫ロボットの開発にチャレンジしている。ロボットは技術の総合格闘技との考え方から、AIだけでなく、ハードやエレキ、通信からクラウド、IOTまで幅広く手掛けることができる。最近では人とロボットの共存を目指すべく、性能だけを追い求める開発から「感動やワクワク体験」をデザインできるロボットの研究を進めており、人とロボットがうまく共存できる世界を作り出したいと日々行動している。

COMMENTS & TRACKBACKS

  • Comments ( 0 )
  • Trackbacks ( 1 )

コメントはまだありません。

  1. […] 前回の記事で、OpenCVを使った顔認識を紹介しました。 […]

LEAVE A REPLY

*
*
* (公開されません)