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

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

推薦する

人工知能は非常に強力だが、人間は必ずしも人工知能に支配されるわけではない。ホーキングは間違っているのだろうか?

著者: ふす有名な物理学者ホーキング博士はかつて、将来人類は人工知能によって滅ぼされるかもしれないの...

ロボットはすべてレンガを動かしているのでしょうか?人工知能は失業の波を引き起こすでしょうか?

今日、私は突然、食べたり飲んだり休んだりすることなく、1時間で200個のレンガを積むことができるレン...

...

Nature: AI はなぜいつも差別的なのか?

[[241142]]ビッグデータダイジェスト制作編集者: Hu Jia、Wang Yiding、X...

8x7B MoEとFlash Attention 2を組み合わせることで、10行未満のコードで高速推論が可能になります。

少し前に、Mistral AI がリリースした Mixtral 8x7B モデルがオープンソース コ...

青いテスラ モデルXが米国で中央分離帯に衝突し炎上

最近、自動車業界は混乱しています。 !ウーバーの自動運転車の致命的な事故に続いて、金曜の朝、米国のハ...

CVPR 2017 論文の解釈: フィーチャーピラミッドネットワーク FPN

論文: 物体検出のための特徴ピラミッドネットワーク論文アドレス: https://arxiv.org...

機械学習の教科書に出てくる7つの典型的な問題

[[201516]]機械学習について学びたい、または機械学習に専念することを決心した場合、すぐにさま...

今日の世界において顔認識の重要性は何でしょうか?

顔認識技術の賛否は議論の余地がある。多くの利害関係者は利点を強調したが、批評家は欠点も指摘した。顔認...

北京、自動運転路上試験の新規則を発表、有人試験も可能に

最近、北京市交通委員会は新たに改訂された「北京市自動運転車両路上試験管理実施規則(試行)」を発行し、...

中山大学のリン・ジン氏は、視覚的意味理解の新しいトレンドについて説明しました。表現学習から知識と因果の融合まで。

[[435334]] 2021年パターン認識と機械知能フロンティアシンポジウムが10月29日午前に...

教師なし学習のためのアンサンブル法: 類似度行列のクラスタリング

機械学習において、アンサンブルという用語は、複数のモデルを並行して組み合わせることを指します。その考...

人工知能について知っておくべき12の秘密

人類は、自分たちの仕事を担ってくれる全知全能のエルフを持つことを常に夢見てきました。現在、研究室のコ...

...

...