シンプルでスマートなアプローチ: 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 の将来とそれがビジネスに与える意味は何でしょうか?

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

推薦する

...

Sogouの技術者が在宅勤務中にサーバーを誤操作し、誤って「マグニチュード12の地震警報」を発令した。

2月3日午前11時頃、捜狗入力法の一部のユーザーは、河北省興隆市でマグニチュード12の地震が発生し...

人工知能の3つの段階:統計学習から文脈適応へ移行中

物事が急速に進んでいるときは、立ち止まって自分がどこにいるのかを振り返ることが必要になることがよくあ...

...

大規模モデルにおける幻覚軽減技術の包括的調査

大規模言語モデル (LLM) は、多数のパラメーターとデータを備えたディープ ニューラル ネットワー...

端から端まで道を切り開きます! OccWorld: 自動運転の未来に向けた 3D 占有世界モデルへの新しいアプローチ

序文と個人的な理解とても良い作品を見つけたので、皆さんと共有したいと思います!占有+世界モデルに関し...

スマートなモノのインターネットを導入する時が来た

[[427797]]画像ソース: https://pixabay.com/images/id-567...

2024年の8つの主要テクノロジートレンド

1. AIと機械学習を採用する人が増える人工知能 (AI) と機械学習 (ML) は単なる流行語では...

IoT と AI を組み合わせたユースケースにはどのようなものがありますか?

モノのインターネットは現代のビジネスと経済全体を急速に変革しています。この革新的なテクノロジーにより...

...

顔認識技術の法的ギャップを埋める必要がある

顔認識などの新興技術が普及し、何百万人もの人々の生活に入り込むにつれて、技術の使用をめぐる論争がます...

DIFFアルゴリズムがわからない場合は、私に連絡してください(画像付き)

序文インタビュアー: 「仮想 DOM と Diff アルゴリズムをご存知ですか? 説明してください。...

新型コロナウイルスワクチンの製造はAIに頼っているのか?ジョンソン・エンド・ジョンソンとPwCがAIをどのように活用しているかを学ぶ

現在までに、多くの企業は AI 実験による大きな影響を感じていません。この点について、一部の専門家は...