モデルはわずか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になり、視野角を自由に変更でき、高精細な立体感が完璧に復元されます

ブログ    
ブログ    
ブログ    

推薦する

AIは多くの仕事を「置き換える」のでしょうか?

コンピュータが人間の囲碁の名人と対戦していたとき、コンピュータは数年連続で世界チャンピオンに勝つこと...

未来学者が2099年に世界がどのように変化するかを予測

ロボットが家庭の冷蔵庫と同じくらい一般的になるのはいつかと誰かに尋ねられたら、何と答えますか?一部の...

ルカン、アンドリュー・ン、その他370人以上が共同書簡に署名:AIの厳格な管理は危険、オープン化がその解毒剤

近年、AIをどのように監督するかについての議論はますます白熱しており、有力者の意見も大きく異なってい...

...

人工知能が生き残るために頼りにしているビッグデータは、独占企業の手に渡ると本当に恐ろしいものになる

わずか5年で、人工知能は急速に発展しました。最近、GPT-3が再び白熱した議論を巻き起こしています。...

合意アルゴリズムRaftの簡単な紹介

[[417323]]この記事は、張張が執筆したWeChatパブリックアカウント「建築改善への道」から...

2020年のAI開発の現状と展望の分析

中国政府は人工知能を国家戦略のレベルにまで高めた。 2017年7月、国務院は「次世代人工知能発展計画...

...

...

美術系の学生は皆AIを崇拝しており、写真はすぐに絵画に描ける

ピエロの写真を入力するだけです。このプログラムは、油絵の肖像画を一筆一筆描いていく画家のようなもので...

Alipayの検索エクスペリエンスを向上させるために、Antと北京大学は階層的コントラスト学習を使用してテキストフレームワークを生成

テキスト生成タスクは通常、教師強制法を使用してトレーニングされ、これにより、モデルはトレーニング中に...

中国人はアルゴリズムと戦い始めている:ログインなし、いいねなし、フォローなし、コメントなし

[[402565]]インターネット業務に携わる陸鋒さんは、あるテクノロジー製品の機能やユーザーエクス...

...

...

...