スポンサーリンク
スポンサーリンク

【OpenCV】顔認識を高速化する2つのポイント【Python】

普通に顔認識

まずは普通に顔認識を行なっていきます。

(main.py)

かなり速度が遅いので、100カウント分のデータを取ることにします。

実際に算出した平均値のデータは、「51.94ms」となりました。

ちなみに「ms」は「milli second(ミリ秒)」のことです。

顔認識を高速化する

それでは顔認識を高速化していきます。

顔認識を高速化するポイントは2点あります。

グレースケール化

まずはグレースケール化です。

これはつまり、色の情報を「R・G・B」の3つのチャンネルから「明るさ(0〜255)」のみに変えることです。

こうすることにより、処理する情報の量が減って速度向上に繋がります

(main.py)

こちらの平均値は「50.41ms」となりました。

先ほどと比べると、若干速くなりました。

リサイズ(画面縮小)

次は、画面サイズを縮小して、そもそも(顔認識の)調べる範囲を小さくすることで速度向上を図ります。

今回は縦・横それぞれを「\(\displaystyle\frac{1}{2}\)」にします。

なので、実際に調べる範囲は「\(\displaystyle\frac{1}{4}\)」となります。

(main.py)

ここで注意する点は、「\(\displaystyle\frac{1}{4}\)」サイズに変換された画面を調べているという点です

つまり実際に顔があったとされる座標は、リサイズされた画面での座標なので、矩形を描画する際に縮小前の座標に戻してあげる必要があります。

今回は縦・横をそれぞれ「\(\displaystyle\frac{1}{2}\)」にしたので、2倍にしてあげる必要があります。

 

リサイズで顔認識をした結果、平均値は「28.93ms」と、格段に速くなりました。

グレースケール化+リサイズ(画面縮小)

最後に、この2点を同時に行なっていきます。

(main.py)

平均値は「26.18ms」となり、リサイズ単体より少し速くなりました。

まとめ

処理内容処理時間
なにもなし51.94ms
グレースケール50.41ms
1/2×1/2 リサイズ28.93ms
グレースケール+リサイズ26.18ms

以上が今回の測定結果となります。

※各環境のパフォーマンスに大きく依存するため、この値に絶対に近くなるとは限りません。

コメント