OpenCV

 OpenCVは画像処理・画像解析および機械学習等の機能を持つC/C++、Java、Python、MATLAB用ライブラリ。画像処理 (Image Processing)、構造解析 (Structural Analysis)、モーション解析と物体追跡 (Motion Analysis and Object Tracking)、パターン認識 (Pattern Recognition)など入力画像を処理・解析することができる。

機械学習での画像の読み込みには画像の特徴点をニューラルネットワークに読み込ませることはあるが、OpenCV自体は機械学習に分類される(ニューラルネットワークモデルを用いた)アルゴリズムではない

使用する際には認識させる対象(例:目、顔、上半身、全身、ナンバープレート)に応じた特徴量データファイル(xml形式)をCascadeClassifier関数を使って読み込んで用いる。自身が認識させる対象を独自に決める場合はこの特徴量データファイルを予め作成する必要がある。

下記がサンプルとしてアメリカ大統領の顔を認識させた(赤い四角で囲われた部位を顔と認識している)画像だが、画像全体に対して顔と認識する部位の大きさをパラメーターで適切に設定してやらないとOpenCVは顔を認識しないところがポイント。その部位の大きさをあまりに小さく設定してしまうとネクタイの結び目や顔に似た模様にも反応してしまう。下記の画像では、下の複数の大統領が写っている画像では、上のオバマ大統領の画像を認識させる際の65%の大きさに顔の部位の大きさを指定することによって適切に認識するようになった。

 

 

 
このことから、このような認識をOpenCVでさせる際には、被写体の認識対象となる部位が常に一定の距離で写った画像を用いることが重要で、監視用にカメラを設置して撮影した画像を認識に用いる場合は、被写体が必ず一定の場所を通るように環境を設計して置くことが肝要と思われる。

 
 
補足
 
参考URL
 
https://opencv.org/
https://en.wikipedia.org/wiki/OpenCV
https://github.com/opencv/opencv/tree/master/data/haarcascades
http://ai-coordinator.jp/opencv