シンプルでスマートなアプローチ: Python による顔認識

シンプルでスマートなアプローチ: Python による顔認識

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)から転載したものです。

この記事では、画像処理におけるいくつかの重要な概念を紹介します。各ステップを詳しく説明するだけでなく、Cv2 および DLib ライブラリを使用して Python で簡単に顔認識を実行するプロジェクトも提供します。

関心分野

顔分析のために画像を扱う際の最も重要な概念の 1 つは、関心領域 (ROI) を定義することです。画像内で、フィルタリングしたり、何らかの操作を実行したりする特定の部分を定義する必要があります。

たとえば、車のナンバープレートをフィルタリングする必要がある場合、関心領域はナンバープレートだけであり、道路、車体、および画像に表示されるその他のものはすべて補助的な部分になります。この例では、画像の分割をサポートし、関心領域を決定するのに役立つ OpenCV ライブラリを使用します。

ハール図書館

このプロジェクトでは、既製の分類器であるカスケード Haar 分類器を使用します。この特定の分類器は常にグレースケール画像で機能します。

アルゴリズムは、分析対象との類似性を識別するジオメトリを生成します。したがって、この場合は、目、鼻、口などの顔のパターンを見つけようとします。この分析方法の最大の問題は、錯覚を生み出すことです。

あなたが見ているのは人間の目ですか、それとも窓ですか? ギリシャ語の語源を持つパレイドリアは、人間の特徴です。私たちの脳は子供の頃から、画像内の物体や顔を認識するようにプログラムされています。私たち自身の脳は、以前に獲得した経験を利用して、「人間」として認識した特徴に基づいてパターンを検索し、そこに新しい人間の顔を追加します。

Haar顔特徴分類器の使用

次の画像を例に挙げます。

この写真の顔を認識するコードを見てみましょう。

  1. cv2をインポート
  2. グループの画像= cv2.imread ('images/image7.jpg')
  3. frontal_face_classifier = cv2.CascadeClassifier ('classifier/haarcascade_frontalface_default.xml')
  4. グレースケールの画像= cv2.cvtColor (人々のグループの画像、cv2.COLOR_BGR2GRAY)
  5. faces = frontal_face_classifier .detectMultiScale( image = image_in_gray_scale scaleFactor = 1.3 minNeighbors = 6 )
  6. 顔の(x_axis, y_axis, weight,height)の場合:
  7. cv2.rectangle(group_of_people_image、(x_axis、y_axis)、(x_axis + 体重、y_axis + 身長)、(255、0、0)、2)

アルゴリズムは画像をグレースケール画像に変換します。これは、前述のように、分類器の動作における基本的なステップです。次に、 dectedMultiScale 関数を使用して画像内の顔を検索し、四角形を描画して画像の位置を表示します。顔が見つかると、結果は次のようになります。

写り込んだ顔のうち 2 つを正確に分析することができました (顔を長方形で囲みます)。そのうち 2 つは顔が完全に正面から写っており、顔が完全に露出していたため、顔がはっきりと見えました。もう 1 つは顔の一部しか写っていなかったため、完全な顔であると確認できる正確な情報は得られませんでした。

顔の特徴検出

Dlib は、目、眉毛、鼻、人形の領域など、顔の特定の部分を検出するのに役立つ分類器を備えたライブラリです。次の図を例に挙げます。

次に、アルゴリズムを使用して画像内の顔のランドマークを識別します。

  1. cv2をインポート
  2. dlibをインポートする
  3. numpyをnpとしてインポートする
  4. 初期画像= cv2.imread ('images/image9.jpg')
  5. 初期画像 in rgb = cv2.cvtColor (初期画像、cv2.COLOR_BGR2RGB)
  6. 参照画像=初期画像 in rgb .copy()
  7. classifier_path = dlib.shape_predictor ('classifier/shape_predictor_68_face_landmarks.dat')
  8. frontal_face_detector = dlib.get_frontal_face_detector ()関数
  9. 長方形= frontal_face_detector (初期画像、1)
  10. k, d について、(長方形を)列挙します:
  11. cv2.rectangle(参照画像、(d.left(), d.top())、(d.right(), d.bottom())、(255, 255, 0)、2)
  12. ランドマーク= []
  13. 長方形の中の長方形の場合:
  14. ランドマーク.append(np.matrix([[px, py] p inclassifier_path(reference_image,rectangle).parts()]))
  15. ランドマーク内のランドマークの場合:
  16. インデックスの場合は、ポイントを列挙します(ランドマーク):
  17. ポイント中心= (ポイント[0, 0]、ポイント[0, 1])
  18. cv2.circle(参照画像、中心点、3、(255、255、0)、-1)
  19. cv2.putText(reference_image,str(index), point_center, cv2.FONT_HERSHEY_COMPLEX, 3, (255, 255, 255), 2)

私たちは、点と顔をより正確に理解しようとする顔 68 特徴分類器を使用しており、これにより結果を分析するためのオプションが増えます。欠点は、少し遅いことです。したがって、顔がどこにあるかを判断するために長方形を描く必要があります。特徴とは、顔、口、目、眉毛など、私たちが認識できる顔の特徴のことです。

顔を長方形で囲んだら、関数によって返された特徴を使用して、最終的に顔のポイントを含む画像を視覚化して生成できるようになります。消す:

これらのポイントは、顔の表情を認識するのに役立ちます。たとえば、男の子が目を開いて口を閉じていることを認識できます。これを感情の表れとして見ると、少年は不安を抱いていると言えます。人が笑うとき、その感情は幸福を表している可能性があると理解すると役立ちます。

上記の例は、Python が関心領域(この場合は顔認識)を識別できることを示しています。このプロジェクトは、機械学習を使用して、画像内の人物が幸せか、悲しいか、心配しているかを検出するように拡張することもできます。

すべてのコンテンツを含むプロジェクトは、https://github.com/LimaGuilherme/facial-recognize から入手できます。

<<:  新型コロナウイルスに対して、最高のAI定量モデルでさえあまり信頼できない

>>:  AI の将来とそれがビジネスに与える意味は何でしょうか?

推薦する

この肖像生成AIは、簡単なスケッチから1秒で本物の顔を生成できる

人工知能技術の発展に伴い、その用途は豊富かつ多様化しており、画像との組み合わせにおいては、AI顔認識...

動的グラフのディープラーニング - 時系列グラフネットワークモデリング

インターネットから収集したコンテンツさまざまな性質のトランザクション ネットワークや社会的つながりを...

ニューラルネットワークのトレーニングでは、エポック、バッチサイズ、反復の違いがわかりません

[[204925]]きっと、コンピューターの画面を見て頭を悩ませ、「なぜコードでこの 3 つの用語を...

人工知能が習得する必要がある知識ポイントは何ですか?どんな本を読めばいいでしょうか?非常に詳細なチュートリアル

[[243197]]人工知能とは何ですか?人工知能の定義は、「人工知能」と「知能」の 2 つの部分に...

分散トレーニング入門: PyTorch を使用してマルチ GPU 分散トレーニングを実装する方法

具体的には、この記事ではまず、分散コンピューティングの基本概念と、分散コンピューティングがディープラ...

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

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

シンプルな人工ニューラル ネットワークをゼロから構築する: 1 つの隠れ層

[51CTO.com クイック翻訳] 前回の記事「人工ニューラルネットワークをゼロから構築する(パー...

...

AIツールClaude 2が世界中で利用可能に:ファイルのアップロードとより長い応答テキストをサポート

10月18日、Anthropicは今年7月に新しいClaude 2言語モデルをリリースしました。 C...

北京ユニサウンドオープンデー:フルスタックAIハードコアテクノロジーを公開

3月27日、2019 Unisound AIテクノロジーオープンデーの第一弾が北京で成功裏に開催され...

...

人工知能統計調査:AIの普及により1億2000万人の労働者が再訓練を必要とする

AI の健全性と進歩に関する最近の調査、研究、予測、その他の定量的評価では、労働力の再訓練の必要性、...

AIは寒さに晒されているのか?スタンフォード大学の年次AIレポートが秘密を明らかにする

2019年へのカウントダウンが始まり、今年はAIの発展に関する議論がたびたび取り上げられています。 ...

ピュー研究所:アルゴリズム時代の7つの主要テーマとその主な影響

世界的に権威のある調査機関であるピュー研究所は最近、「アルゴリズムの時代」と題する報告書を発表し、1...