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需要爆発の機会を無駄にしない

推薦する

...

図解による古典的なプロセススケジューリングアルゴリズム

[[382804]]この記事はWeChatの公開アカウント「Flying Veal」から転載したもの...

2021年のMLとNLPの学術統計:Googleが1位、強化学習の専門家Sergey Levineが1位に

2021 年は自然言語処理 (NLP) と機械学習 (ML) にとって非常に生産的な年でした。さて、...

...

チップレベルのエッジAIが次世代のIoTを推進

エッジ コンピューティングは、IT アーキテクトや組み込み開発者にさまざまな選択肢を提示する難しい問...

...

2020年の世界スマート街灯市場の現状と発展見通しの分析

Technavioが発表した「世界のスマートポール市場2020-2024」レポートデータによると、2...

JD テクノロジー オープン デー第 4 号 - 電子商取引推奨検索システムのアーキテクチャとアルゴリズムの実践

第 4 回「JD テクノロジー オープン デー」イベントは、9 月 27 日に北京市宜荘区の超林広場...

機械学習プロジェクトに十分なデータがありませんか?ここに5つの良い解決策があります

人工知能プロジェクトに着手する企業の多くは素晴らしいビジネスアイデアを持っていますが、企業の AI ...

マイクロソフトアジアリサーチは、知識蒸留を使用して小さなViTを改善するTinyMIMを提案

1. 研究の動機マスクモデリング (MIM、MAE) は、非常に効果的な自己教師ありトレーニング方法...

...

大規模言語モデルの詳細な分析: トレーニングから大規模モデルの展開まで

導入データサイエンスの分野が進歩するにつれ、複雑な自然言語を処理および生成できる高度な AI システ...

...

顔認識の背後にあるセキュリティリスクを誰が負担するのでしょうか?

近年、科学技術の発展に伴い、顔認識技術は人々の日常生活で頻繁に使用されるようになりました。たとえば、...