こんにちは、みんな。 今日は、シンプルで使いやすい顔認識アルゴリズムをいくつかまとめます。顔認識はコンピュータービジョンの一般的な技術です。生活の中で、私たちが最もよく接する顔認識のシナリオは顔の出席です。私は以前、顔の出席に関する特別なプロジェクトを書きました。興味のある方はご覧ください。 顔認識アルゴリズムの中心的な役割は、写真から顔の位置を識別することです。認識アルゴリズムにはさまざまな種類があります。 一つずつ紹介していきたいと思います。 1. HoG顔検出このアルゴリズムは、従来の機械学習アルゴリズムを使用して顔を認識します。従来の機械学習アルゴリズムの特徴は、手動で特徴を構築し、構築した特徴をモデルのトレーニングに送信することです。 このアルゴリズムは、HoG を使用して画像内の顔の特徴を抽出し、SVM アルゴリズムを使用して分類します。 HoG (Histogram of Oriented Gradient) 特徴は、コンピュータ ビジョンや画像処理におけるオブジェクト検出に使用される特徴記述子です。画像の局所領域の勾配方向ヒストグラムを計算してカウントすることで特徴を構築します。 このアルゴリズムはdlibライブラリに実装されています。コアコードを見てみましょう。 dlibをインポートする results には、画像内で検出された複数の顔が格納されます。 results を走査することで、各顔の長方形の枠を取得できます。 以下に検出例をいくつか示します。 緑色の枠はアルゴリズムによって検出された顔です。 HoG 顔検出は従来の機械学習アルゴリズムを使用するため、比較的高いパフォーマンスを持ち、CPU 上で比較的高速に実行できます。しかし、80×80より小さい顔は検出できず、回転した顔や正面以外の顔では認識効果があまり良くありません。 2. ディープラーニングによる顔検出従来の機械学習アルゴリズムは検出が高速ですが、その精度を向上させる必要があります。ディープラーニングに基づく顔検出アルゴリズムは、より正確になる傾向があります。 ここでは、残差ネットワーク ResNet-10 を使用して、ネットワーク (モデル) を通じて画像の単一チャネル (シングル ショット検出器、SSD) で複数の顔を検出する方法を紹介します。 SSDアルゴリズムと呼ばれます。 まず、元の画像をブロブ前処理し、検出のためにモデルに直接取り込む必要があります。 cv2 ライブラリはこのアルゴリズムの実装を提供します。コア コードは次のとおりです。 cv2をインポート Results[0][0]には、検出された複数の顔が格納されます。各顔は配列で表されます。配列の3番目のビットには信頼度レベルが格納されます。信頼できない顔は、しきい値を使用して除外できます。配列の 4 番目から 7 番目のビットには、検出された顔の四角形の左上隅と右下隅の座標が格納されます。 HoG 顔検出と比較して、SSD アルゴリズムは、隠れた顔や正面以外の顔も検出できます。 3. 畳み込みニューラルネットワークによる顔検出コンピューター ビジョンについて知っている人なら誰でも知っているので、畳み込みについてはあまり説明しません。 dlib ライブラリは、これまでと同様の方法で使用される畳み込みニューラル ネットワークの顔検出アルゴリズムの実装を提供します。 dlibをインポートする 結果の分析は上記と同様ですので、ここでは詳細には触れません。 畳み込みニューラル ネットワークを使用した顔検出アルゴリズムの利点は明らかです。前の 2 つよりも正確で堅牢であり、遮蔽された顔も検出できます。 正面以外の写真や暗い写真でも検出可能 しかし、このアルゴリズムの対応する欠点も明らかです。検出プロセスには非常に長い時間がかかり、CPU 上でリアルタイムに実行することはできません。 4. ブレイズフェイス上記のアルゴリズムは、高精度だが低速、または高速だが低精度のいずれかです。高精度と高性能を両立した検出アルゴリズムはありますか? 答えは「はい」です。BlazeFace は、サブミリ秒の顔検出器として知られる、非常に軽量で高精度な顔検出器です。これは、Single Shot MultiBox Detector (SSD) と MobileNetv2 からインスピレーションを得ています。 Mediapipe ライブラリはこのアルゴリズムの実装を提供します。コア コードは次のとおりです。 mediapipe を mp としてインポート 効果は以下のとおりです。 ご覧のとおり、BlazeFace アルゴリズムは顔を検出できるだけでなく、顔の 6 つの主要なポイント (目、鼻、耳、口) を識別することもできます。 上記は、本日公開された 4 つの顔認識アルゴリズムです。 顔を認識した後は、顔認識を行うのは非常に簡単です。顔をベクトルに埋め込み、ベクトル間の距離を計算するだけです。 |
<<: ディープラーニングがロボットの変形可能な物体の取り扱いにどのように役立つか
>>: サービスロボット市場の最前線に立つセキュリティは注目に値する
2022年は活気に満ちた春のニュースとともにやって来ます。新年はどんな機会と課題をもたらすでしょう...
有名な作曲家スティーブン・シュワルツはピアノの鍵盤に色を見ました。伝説の歌手トーリ・エイモスは彼女の...
現在、AI分野で画期的な進歩を遂げているディープラーニングモデルの規模が大きくなるほど、エネルギー消...
現代の農業はミツバチに依存しています。私たちが食べる食物や呼吸する空気を含む生態系のほぼ全体が、花粉...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
テンセントテクノロジーニュース、1月29日、海外メディアの報道によると、グーグルCEOサンダー・ピチ...
人間レベルのパフォーマンス、人間レベルの精度…顔認識、物体検出、問題解決など、AI システムを開発す...
導入履歴書データベースに「ソフトウェア エンジニア」という名前の履歴書が 10,000 件あるとしま...
基数ソートは「分散ソート」に属します。基数ソートは「バケット ソート」またはビン ソートとも呼ばれま...
人工知能は急速に発展しており、その理論と技術はますます成熟し、その応用分野は絶えず拡大しています。人...
近年、人工知能は新興技術から必需品へと徐々に変化してきました。より大規模な企業の問題に対する解決策を...