hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

Haar-like(ハールライク)

◉「Haar-like」とは??

顔を判定する方法で有名な方法。

切り取った画像を縦と横の単純な縞模様のパターン(評価器)に

一致するかどうかを判定する方法。

 

より判定精度を上げるには、大量の顔画像のサンプルが必要になる。

ビッグデータ時代の今だからできる技術。

 

顔をブロック単位で見ていき、

顔の特徴に近いかどうかを判定する。

特徴は、顔にあたる光と影でできた明暗のパターンを使う。

 

◉評価器

f:id:hiyoko-programing:20200602234412p:plain


顔検出に関しては、OpenCVを開発しているインテルが大量の顔画像からの

評価器を作って準備してくれている。

その他、いくつか例としては,

MITの顔画像データ
カリフォルニア工科大学のオブジェクト画像データ

などがある。

 

◉ Haar_like の使い方。

 ●グレースケールのコード下に、顔検出用の評価器を準備する。

  img_gray = cv2.cvtColor(img_resize, cv2.COLOR_RGB2GRAY)

  CASCADE_FILE = 'haarcascade_fronttalface_alt.xml'

                                        ※それぞれのファイル名(今回はこれ。)        

 ●顔を見つける「検出器」を準備する。

  haar_cascade = cv2.CasecadeClassifier(CASCADE_FILE)

 ●検出器を使って顔を検出する。

  detectMultiScale(画像、scaleFactor, minNeighbors, minSize)

         ⚫︎画像:顔を検出したい画像(入力画像)。

   ⚫︎scaleFactor:入力画像を縮小する割合。

   ⚫︎minNeighbors:検出対象となる部分を少しくらい動かしても

    判定できるパターンから大きくずれない最低の数。

   ⚫︎minSize:検出対象の最小サイズ。

       

 <検出器を使って顔を検出するPythonコード>

  detection = haar_cascade.detectMultiScale(img_resize, scaleFactor=1.1,    minNeightbors=2, minSize=(30, 30))