Python による顔認識 (ソースコード付き)

Python による顔認識 (ソースコード付き)

Python は画像やビデオから顔を検出して認識できます。

顔の検出と認識は、コンピューター ビジョンの分野における研究のホットスポットの 1 つです。

顔認識の用途には、顔によるロック解除、セキュリティ保護などがあります。医師や医療スタッフは、顔認識を使用して医療記録や病歴を取得し、病気をより正確に診断します。

Python 顔認識について

この Python プロジェクトでは、画像から人物を認識する機械学習モデルを構築します。私たちのプロジェクトでは、顔認識 API と OpenCV を使用しました。

最新のテクノロジートレンドを常に把握

Telegram で DataFlair に参加しましょう!

ツールとライブラリ

  • Python 3.x の場合
  • CV2-4.5.2
  • ハンプティ・ダンプティ - 1.20.3
  • 顔認識-1.3.0

上記のパッケージをインストールするには、次のコマンドを使用します。

 pip インストールnumpy opencv - python

FaceRecognition をインストールするには、まず dlib パッケージをインストールします。

 pipdlib をインストール

次のコマンドを使用して顔認識モジュールをインストールします。

 顔認識をpip でインストールする

顔認識Pythonコードをダウンロードする

Python顔認識プロジェクトのソースコードをダウンロードしてください: 顔認識プロジェクトコード

プロジェクトデータセット

この顔認識プロジェクトを完了するには、独自のデータセットを使用できます。このプロジェクトでは、アメリカの人気ウェブシリーズ「フレンズ」をデータセットとして使用します。このデータセットは、前のセクションでダウンロードした顔認識プロジェクト コードに含まれています。

顔認識モデルを構築する手順

先に進む前に、顔認識と検出とは何かを理解しておきましょう。

顔認識とは、写真やビデオフレームから人の顔を識別または検証するプロセスです。

顔検出とは、顔検出アルゴリズムで使用するために、画像内の顔(位置とサイズ)を見つけて抽出するプロセスを指します。

顔認識方法は、画像内の一意に指定された特徴を見つけるために使用されます。ほとんどの場合、顔は削除され、切り取られ、拡大縮小され、グレースケールに変換されています。顔認識には、顔検出、特徴抽出、顔認識の 3 つのステップが含まれます。

OpenCV は C++ で書かれたオープンソース ライブラリです。コンピューター ビジョン タスク用のさまざまなアルゴリズムとディープ ニューラル ネットワークの実装が含まれています。

1.データセットを準備する

トレーニングとテストの 2 つのディレクトリを作成します。各俳優について、インターネットから画像を選択し、「train」ディレクトリにダウンロードします。選択した画像が、分類器が分類できるほど人間の顔の特徴を十分に表していることを確認してください。

モデルをテストするには、すべてのキャストを含むイメージを取得し、「test」ディレクトリに配置します。

お客様の利便性を考慮し、プロジェクト コードとともにトレーニング データとテスト データを追加しました。

2. モデルのトレーニング

まず必要なモジュールをインポートします。

 face_recognition をfr としてインポートします
cv2 をインポート
numpyをnp としてインポートする
インポートOS

顔認識ライブラリには、顔認識プロセスを支援するさまざまなユーティリティの実装が含まれています。

ここで、画像 (人物) の名前とそれぞれの顔のエンコーディングを格納する 2 つのリストを作成します。

 パス= "./train/"
知られている名前= []
既知の名前エンコーディング= []
images = os.listdir (パス)

顔エンコーディングは、目の間の距離、額の幅など、顔の特徴間の重要な測定値を表す値のベクトルです。

トレーニング ディレクトリ内の各画像をループし、画像内の人物の名前を抽出し、顔のエンコード ベクトルを計算して、対応するリストに情報を保存します。

 画像内の_ の場合:
image = fr.load_image_file ( パス+ _ )
image_path = パス+ _
エンコーディング= fr . face_encodings ( 画像)[ 0 ]
known_name_encodings . append ( エンコーディング)
known_names.append (os.path.splitext(os.path.basename ( image_path ) ) [ 0 ] .capitalize ( ))

3. テストデータセットでモデルをテストする

前述したように、テスト データセットにはすべての人物を含む画像が 1 つだけ含まれています。

CV2 imread() メソッドを使用してテスト イメージを読み取ります。

 test_image = "./test/test.jpg"
イメージ= cv2.imread ( test_image )

顔認識ライブラリには、画像内で検出された各顔の座標 (左、下、右、上) を特定する Face_Locations() という便利なメソッドが用意されています。これらの位置の値を使用すると、顔のエンコードを簡単に見つけることができます。

 face_locations = fr . face_locations ( 画像)
face_encodings = fr . face_encodings ( 画像, face_locations )

画像内の各顔の位置とそのエンコードをループします。次に、このエンコーディングを「トレーニング」データセット内の顔のエンコーディングと比較します。

次に、顔距離、つまりテスト画像のエンコードとトレーニング画像のエンコード間の類似度を計算します。ここで、そこからの最小距離を選択します。これは、テスト画像の顔がトレーニング データセット内の人物の 1 人であることを示します。

ここで、CV2 モジュールのメソッドを使用して、面の位置の座標を含む四角形を描画します。

 for ( toprightbottomleft )、 face_encoding in zip ( face_locationsface_encodings ):
一致するもの= fr . compare_faces ( 既知の名前のエンコーディング顔のエンコーディング)
名前= ""
face_distances = fr . face_distance ( 既知の名前のエンコーディング, face_encoding )
best_match = np.argmin ( 面の距離)
[ best_match ] と一致する場合:
name = 既知の名前[ ベストマッチ]
cv2 . 長方形( 画像、 ( )、 ( )、 ( 0、0、255 )2 )
cv2 . 長方形( 画像、( -15 ) 、( )、( 0、0、255 )cv2 . 塗りつぶし)
フォント= cv2.FONT_HERSHEY_DUPLEX
cv2.putText ( 画像 名前、( + 6- 6 )、 フォント1.0 、( 255,255,255 )1 )

CV2 モジュールの imShow() メソッドを使用して画像を表示します。

 cv2.imshow ( "結果" , 画像)

imwrite() メソッドを使用して、イメージを現在の作業ディレクトリに保存します。

 cv2.imwrite ( "./output.jpg" , 画像)

解放されていないリソース(ある場合)を解放します。

 cv2.waitKey ( 0 )
cv2.すべてのウィンドウを破棄します( )

Python 顔認識出力

モデルの出力を見てみましょう。

<<:  2022 年の 9 つの新しいテクノロジー トレンドと雇用機会

>>:  インテルは世界的なIT需要爆発の機会を無駄にしない

ブログ    

推薦する

機械学習でサンプルが不均衡な場合はどうすればよいでしょうか?

銀行が新規顧客が債務不履行になるかどうかを判断する際、債務不履行にならない顧客と債務不履行になる顧客...

遺伝的アルゴリズムとPython実装におけるいくつかの異なる選択演算子

序文この論文では、遺伝的アルゴリズムにおけるいくつかの選択戦略についてまとめています。比例ルーレット...

Natureサブジャーナル:言語だけでなく、機械翻訳は脳波をテキストに「翻訳」することもできる

人間の脳の神経信号も言語であると考えられるなら、機械翻訳アーキテクチャを神経信号の解釈に適用する実現...

AIは50個の三角形を使って、ポストモダンな雰囲気を持つモナリザの抽象版を描きます

[[425382]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

製造業の発展は新たな課題に直面しており、人工知能が重要な役割を果たすだろう

[[245913]]現在、製造業の発展は新たな歴史的時期を迎えており、世界各国間の競争の焦点となって...

エアコンピューティング、高度に発達した人工知能を備えた未来の世界

インターネット技術の急速な発展に伴い、「クラウド コンピューティング」や「フォグ コンピューティング...

Titanium Technology CEO、Li Shuhao氏:ツールの輸出からブランドの輸出まで、Martechはどのような新たな機会に直面していますか?

2020年、国内の新たな消費が活況を呈する一方で、海外市場も急速な成長機会の新たな波を迎えています...

人工知能はあなたよりも多くの XXX スターを知っている

[[206395]]さまざまな興味の組み合わせに応じて必要な動画を検索できるのは、毎日無数の動画コン...

ロボット介護は人間に比べて高齢者にとって負担が少ない?

最近、浙江省金華市のある家族の監視ビデオがインターネット上で話題になった。動画の全長は3分15秒。こ...

ジェネレーティブ AI: 誇大宣伝以上の価値を生み出す 3 つの重要な要素

最近、ガートナーは、生成型人工知能 (GenAI) を新興技術の誇大宣伝サイクルにおける「過大な期待...

李嘉誠は率直に言った。「人工知能の時代には、これらのいくつかの業界だけが大きな成功を達成するのに役立ちます。」

李嘉誠氏はこう語った。「人工知能の時代には、世界がどう変化しても、経済サイクルがどう変動しても、常に...

AI予算は増加しているが、導入の課題は残る

企業の人工知能予算は急速に増加しているが、導入には依然として大きな課題が残っていることが、Algor...

マッキンゼーのパートナー:中国は医療AIでリードしているが、将来的には5つの重要な課題がある

[[235958]] 「医師はAIに取って代わられるか?」という質問に対し、鼎祥源の創業者李天天氏は...

人工知能の便利な日常的な活用例8つ

人工知能が私たちの生活にどのような影響を与えているかを示す例は無数にあります。これを「ロボットが悪の...