モデルはわずか7M:軽量で高精度な顔認識方式DBFace

モデルはわずか7M:軽量で高精度な顔認識方式DBFace

わずか 7M サイズのこの顔認識モデルは、世界最大の自撮り写真に写っているほぼすべての人物を認識します。

[[321809]]

プロジェクト紹介

以前、Machine Heart は、CPU 上で 1000FPS で簡単に実行できるクロスプラットフォームの顔認識プロジェクトについて報告しました。今回紹介するプロジェクトも軽量な顔認識プロジェクトです。違いは、このプロジェクトは少数のパラメータを維持しながら認識精度がはるかに高く、実行には OpenCV と PyTorch のみが必要であることです。

DBFace は、より高速な認識速度と高い精度を備えた軽量のリアルタイム顔認識方法です。下の図は、WiderFace データセットにおけるさまざまな顔検出方法のテスト結果を示しています。 DBFace モデルはサイズが最も小さいだけでなく、Easy、Medium、Hard のテスト タスクで最高の認識精度を達成していることがわかります。

プロジェクトアドレス: https://github.com/dlunion/DBFace

WiderFace は顔検出のベンチマーク データセットで、簡単なものから難しいものまでさまざまな難易度の 32,203 枚の画像と 393,703 個の顔が含まれています。次の図はデータセットからのいくつかのサンプルを示しています。ご覧のとおり、画像内のすべての顔を正確に識別するのは依然として非常に困難です。 DBFace はこのデータセットのさまざまなタスクで 0.925、0.920、0.847 の精度を達成しましたが、これは簡単なことではありません。

WiderFace の詳細については、公式 Web サイトをご覧ください。

http://shuoyang1213.me/WIDERFACE/ より

エフェクト表示

下の図は、WiderFace データセットにおけるさまざまな顔認識方法の PR 曲線を示しています。 PR 曲線は、バイナリ分類器の精度と再現率を直感的に表示できます。異なるアルゴリズムを比較する必要がある場合、バイナリ分類器の PR 曲線が別のバイナリ分類器の PR 曲線によって完全にカバーされている場合、後者のパフォーマンスが前者よりも優れていることを意味します。図からわかるように、3 つのタスクすべてにおいて、DBFace で囲まれた領域は比較的大きいです。

しきい値を 0.2 に設定した場合、世界最大の自撮り写真に対する DBFace の認識効果は次の図に示されています。

DBFace の認識精度が非常に高いことがわかります。写真に写っている顔の多くは、拡大しても肉眼で判別するのが難しいのですが、DBFace なら認識できます。また、モデルサイズはわずか 7M で、エッジデバイス上でリアルタイムに実行することも可能です。そこで、Synced もテストを開始しました。

プロジェクト測定

プロジェクト作成者が提供するコード例には、静止画像の認識と、コンピューター カメラを呼び出す GUI が含まれています。このプロジェクトを実行するには多くの依存関係は必要なく、PyTorch、Numpy、OpenCV だけが必要であることは注目に値します。上記の依存環境はすべて非常に一般的に使用されている拡張ライブラリであるため、インターネット上に対応するインストールチュートリアルが多数存在するため、ここではインストール手順は省略します。

main.py では、image_demo() と camera_demo() はそれぞれ、静的な画像の認識と認識のためのカメラの呼び出しに対応します。静的画像認識コードは次のとおりです。

  1. image_demo()を定義します:
  2.  
  3. dbface = DBフェイス()
  4.  
  5. dbface.eval()
  6.  
  7. HAS_CUDAの場合:
  8.  
  9. dbface.cuda()
  10.  
  11. dbface.load( "model/dbface.pth" )
  12.  
  13. dbface の画像を検出します。 "datas/selfie.jpg "

上記のコードは、トレーニング済みのモデルを読み取り、画像 datas/selfie.jpg を識別し、結果を detect_result/selfie.draw.jpg に保存します。

認識効果を見てみましょう。

上の写真からわかるように、室内の照明の色や明るさに大きな差がある環境でも、DBFace は写真に写っているほぼすべての人物を認識することができ、ヘルメットをかぶって虹を描き、光る光の玉を指差している中央の人物まで認識できます。もちろん、ここで設定された検出閾値は低いため、誤分類現象も発生します。写真に写っている何人かの人の手と右上隅の光の球が、誤って顔と認識されました。この現象は、しきい値を適切に上げることで解消できます。

コンピュータカメラ検出を呼び出すコードは次のとおりです。

  1. カメラデモ()を定義します:
  2.  
  3. dbface = DBフェイス()
  4.  
  5. dbface.eval()
  6.  
  7. HAS_CUDAの場合:
  8.  
  9. dbface.cuda()
  10.  
  11. dbface.load( "model/dbface.pth" )
  12.  
  13. キャップ = cv2.VideoCapture( 0 )
  14.  
  15. キャップを設定します(cv2.CAP_PROP_FRAME_WIDTH, 640 )
  16.  
  17. キャップを設定します(cv2.CAP_PROP_FRAME_HEIGHT, 480 )
  18.  
  19. わかりました、フレーム = cap.read()
  20.  
  21. 大丈夫です:
  22.  
  23. objs = 検出(dbface、フレーム)
  24.  
  25. objs 内の objの場合:
  26.  
  27. common.drawbbox(フレーム、obj)
  28.  
  29. cv2.imshow( "デモ DBFace" , フレーム)
  30.  
  31. キー = cv2.waitKey( 1 ) & 0xFF  
  32.  
  33. キー == ord( 'q' )の場合:
  34.  
  35. 壊す 
  36.  
  37. わかりました、フレーム = cap.read()

上記のコードを実行すると、640x480 の GUI インターフェイスが生成され、カメラを呼び出してリアルタイムの顔検出を実行します。

ご興味がございましたら、このプロジェクトをローカル コンピューターに git clone してテストしてください。

<<:  アルゴリズムを視覚化するオープンソース プロジェクトをお勧めします。

>>:  2Dが3Dになり、視野角を自由に変更でき、高精細な立体感が完璧に復元されます

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

南洋理工大学の最新の視覚言語モデルの概要:事前トレーニング、転移学習、知識蒸留

コンピュータ ビジョン (CV) 研究における長年の課題として、視覚認識 (画像分類、オブジェクト検...

OpenAI は機械学習をサポートするために k8s を 7,500 ノードに拡張

GPT-3、CLIP、DALL+などの大規模モデルのニーズや、ニューラル言語モデルに似たスケーリング...

マスク氏は人気検索に頻繁に登場、テスラは「過大評価されている」

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

2.5 ~ 4 倍の深さで、より少ないパラメータと計算量で、DeLighT はどうやってそれを実現したのでしょうか?

ディープラーニングはパラメータが多すぎる、モデルが大きすぎる、展開が不便、そしてコンピューティングリ...

OpenAIと競合しますか? Jina AI、オープンソースの8Kテキスト埋め込みモデルを発表

10月27日、外国メディアは、人工知能企業Jina AIがこのほど、第2世代のテキスト埋め込みモデル...

...

完全なマーケティング効果評価におけるベイズ構造モデルの応用

著者についてCtrip のデータアナリストである Yiwen 氏は、ユーザー増加、因果推論、データサ...

ChatGPTのトラフィックが減少しており、学生が夏休みに入っているためだと推測する人もいる

7月16日、OpenAIが開発した人工知能チャットボット「ChatGPT」は、ユーザーと自然言語で会...

...

...

...

...

...

IT ライフ: 遺伝的アルゴリズムを使用してコンピューターに歌詩を書かせる

出会いは幻想的で、窓の外はまた夜明けだった。弦楽器の音とかすかな笑顔をいつも思い出すが、世の中に花が...

ConvNet と Transformer のどちらが優れていますか? Metaが4つの主要な視覚モデルを評価、LeCunが好評価

特定のニーズに基づいてビジュアル モデルを選択するにはどうすればよいでしょうか? ConvNet/V...