見出し画像

pythonの顔認識ライブラリー「InsightFace」を使ったときの失敗

どーも、冨安です。

昨日顔認識システムを作ってまして、 InsightFaceというライブラリーを使いました。

最終的に動いたのですが、上手く機能しなくてエラー解決に苦労したので、共有です。

作ったものは

顔検出→顔認識

既に登録済みの顔かどうかを判定するアプリ。

顔検出と顔認識はそれぞれ別の技術を使います。

顔検出ではAWS Rekognition。

顔認識で InsightFace。

InsightFaceとは??

InsightFaceは、オープンソースの2Dおよび3D深層人顔解析ツールキットで、顔検出、顔認識、顔アライメント、さらには性別や年齢の推定といった多彩な機能を提供します。以下に主な特徴をまとめます。

  • 高精度な顔認識:
    ArcFace、CosFace、SphereFaceなどの先進的な損失関数を用いることで、クラス内の距離を縮め、クラス間の距離を拡大し、厳しい環境下(低照度、ポーズの変化、遮蔽など)でも高い識別精度を実現しています。​

    1. cnblogs.com

  • 幅広い用途と柔軟性:
    セキュリティ、決済システム、監視カメラなど、実世界の多様なシナリオに適用可能です。また、学術研究や商用利用の両面で活用されており、MITライセンスのもとで自由に利用できます。​

    1. zhuanlan.zhihu.com

  • 複数フレームワークへの対応:
    元々はMXNet上で開発されましたが、現在ではPyTorch、ONNX、PaddlePaddleなど、さまざまなAIフレームワークで利用できる実装が存在します。これにより、ユーザーは自分の環境や用途に合わせた選択が可能です。

  • 大規模認識への対応:
    数百万から数億のIDに対応するために、Partial FCといった技術を取り入れ、非常に大規模な顔認識タスクにも対応できるように設計されています。

総じて、InsightFaceは高い精度と柔軟性、そしてスケーラビリティを兼ね備えた顔解析フレームワークとして、研究から実用化まで幅広い分野で注目されています。

検出した顔画像をInsightFaceが認識しない!!

まず先に顔検出をしてから、検出した画像をもとにInsightFaceで顔データを数値化します。

AWS Rekognitionで検出した画像をInsightFace処理できず、エラーが出続けました。

何のエラーか分からず、このエラーを特定するのに手間取りました。

ポイントはInsightFaceが処理しやすいような、画像の前処理を最適化でした。

エラーからの改善点 ✨

  1. 画像の前処理を最適化

    • 640x640の推奨サイズ

    • 30%マージンで顔周辺もしっかり確保

検出した顔画像を上記の形で、整えることでInsightFaceを動かすことができました。

例えばしっかりと写った画像であれば、僕をかなりの精度で認識します。

こうした顔認識システムを作るときは、画像の前処理が大事です!!

いいなと思ったら応援しよう!