画像解析はやっぱり CUDA ! 顔認証もサクサク!

ビデオカード(アイキャッチ画像)

はじめに

Face01 シリーズは GPU の使用を前提としております。画像解析では Nvidia 製グラフィックカードがデファクトスタンダードとなっています。計算資源が CPU のみの場合、次のような対策をしております。

  • Face01 Graphics
    引数「frame_skip」を指定することでフレームをスキップして計算量を削減します
  • Face01 Imager
    通常処理の時は HOG を使用し HOG で顔を検出できない場合のみ CNN を用います

これら対策の副作用として「カクつく」、「遅い」などが出てきます。

今回は

  • CUDA & AVX 環境
  • AVX のみの環境

の両方について比較動画を作りました。

これらは「どちらが優れているか」ではなく、求める形によって対応する環境を作ってくださいね、という事です。

検証環境

  • CUDA & AVX 環境
    Ubuntu 18.04.4
    Python 3.6.9
    Linux 4.15.0-66-generic
    AMD Ryzen 5 1400
    MemTotal 16GB
    GeForce GTX 1660ti
  • AVX 環境
    Windows 10 Pro 64bit
    Python 3.7.7
    Intel Core i5-2520M
    MemTotal 4GB
    CPU内蔵 Intel HD Graphics 4000

検証結果

検証の様子を動画にまとめました。
(※注意:音が出ます。)

検証まとめ

AVX のみの環境と CUDA を使った環境では動作の滑らかさが全く違うことがみてとれます。
ただしこれは CUDA あるなしとは関係なく、Intel Core i5-2520M の性能の低さも起因しています。

AVX を試した ThinkPad L430 の性能の低さ

エンコード時点での CPU 使用率
エンコード時点での CPU 使用率

エンコード時点で既に CPU 使用率が 100% になっています。(上図赤枠)

2011 年に登場した Core i5-2520M はパスマークで上図のようになっています。
およそ 10 年前の登場ですし元々モバイル用ですから性能は推して知るべし…です。
検証用としてはもう少し新しいモデルを用意できれば良かったと思います。

CUDA & AVX 検証用マシンの性能

こちらもそんなに性能が良いわけではなく、 AMD Ryzen 5 1400 ですのでとりたてて性能が良いわけではありません。

GPU Utilization (使用率)は 19%
GPU Utilization (使用率)は 23%
CPU とメモリの使用率
CPU とメモリの使用率

CPU 使用率は上の図から見る限りある程度余裕がある感じです。メモリにも余裕が有ります。GPU 使用率は 20% 前後をキープしていました。

以上です。 最後までお読みいただきありがとうございました。

Follow me!