1行のコマンドで顔認識を実装する方法を教えます

1行のコマンドで顔認識を実装する方法を教えます

[[207803]]

環境要件

  • ウブントゥ 17.10
  • Python 2.7.14

環境構築

1. Ubuntu 17.10 をインストールします > インストール手順はここにあります。

2. Python 2.7.14 をインストールします (Ubuntu 17.10 のデフォルトの Python バージョンは 2.7.14 です)

3. git、cmake、python-pipをインストールする

  1. # gitをインストールする
  2. $ sudo apt-get install -y git
  3. # cmakeをインストールする
  4. $ sudo apt-get install -y cmake
  5. # python-pip をインストールする
  6. $ sudo apt-get install -y python-pip

4. dlibをインストールしてコンパイルする

face_recognition をインストールする前に、dlib をインストールしてコンパイルする必要があります。

  1. # dlib をコンパイルする前に boost をインストールします
  2. $ sudo apt-get install libboost- all -dev
  3.  
  4. # dlibのコンパイルを開始
  5. # dlibソースコードをクローンする
  6. $ git クローン https://github.com/davisking/dlib.git
  7. $ cd dlib
  8. $ mkdir ビルド
  9. $ cd ビルド
  10. $ cmake .. -DDLIB_USE_CUDA=0 -DUSE_AVX_INSTRUCTIONS=1
  11. $ cmake --build . (真ん中にスペースがあることに注意してください)  
  12. $ cd ..
  13. $ python setup.py インストール--yes USE_AVX_INSTRUCTIONS --no DLIB_USE_CUDA  

5. 顔認識をインストールする

  1. # 顔認識をインストールする
  2. $ pip 顔認識をインストール
  3. # face_recognitionのインストール中に、numpy、scipyなどが自動的にインストールされます

環境がセットアップされたら、ターミナルで face_recognition コマンドを入力して、成功するかどうかを確認します。

顔認識の実装

例 1 (顔認識を実装するための 1 行のコマンド):

1. まず、システムに認識させたいすべての人の写真を含むフォルダーを用意する必要があります。それぞれの人物に 1 枚の写真があり、写真には人物の名前が付けられています。

known_peopleフォルダにはベイビー、ジャッキー・チェン、ジョイ・ヨンの写真が含まれています

2. 次に、識別する画像を含む別のフォルダーを準備する必要があります。

unknown_pic フォルダには識別対象の写真が含まれており、その中にはマシンにとって未知の Han Hong も含まれています。

3. 次に、準備した 2 つのフォルダーをパラメーターとして渡して face_recognition コマンドを実行すると、認識する画像に写っている人物が返されます。

識別成功!!!

例 2 (写真内のすべての顔を認識して表示する):

  1. # ファイル名: find_faces_in_picture.py
  2. # -*- コーディング: utf-8 -*-
  3. # pilモジュールをインポートします。これはapt-get install python-Imagingコマンドを使用してインストールできます。
  4. PIL インポート画像から
  5. # face_recognitionモジュールをインポートします。これは、pip install face_recognitionコマンドを使用してインストールできます。
  6. 顔認識をインポートする
  7.  
  8. # jpgファイルをnumpy配列にロードする
  9. 画像 = face_recognition.load_image_file( "/opt/face/unknown_pic/all_star.jpg" )
  10.  
  11. # デフォルトのHOGモデルを使用して画像内のすべての顔を見つけます
  12. # この方法は非常に正確ですが、GPUアクセラレーションを使用しないため、CNNモデルほど正確ではありません。
  13. # 参照: find_faces_in_picture_cnn.py
  14. face_locations = face_recognition.face_locations(画像)
  15.  
  16. # CNNモデルの使用
  17. # face_locations = face_recognition.face_locations(image, number_of_times_to_upsample=0, model= "cnn" )
  18.  
  19. # 印刷: 画像内にいくつの顔が見つかりましたか?
  20. print( "この写真には {} 人の顔が見つかりました。" .format(len(face_locations)))
  21.  
  22. # 見つかったすべての面をループする
  23. face_locations内のface_locationの場合:
  24.  
  25. # 各顔の位置情報を出力します
  26. 、下、= 顔の位置
  27. print( "顔はピクセル位置にあります。上: {}、左: {}、下: {}、右: {}" .format( top left 、 bottom 、 right ))
  28.  
  29. # 顔の位置情報を指定して顔画像を表示する
  30. face_image = 画像[:下、:]
  31. pil_image = Image.fromarray(face_image)
  32. pil_image.show()

識別用画像

  1. # Pythonファイルを実行する
  2. $ python find_faces_in_picture.py

画像から7人の顔を識別して表示する

例3(顔の特徴を自動的に識別する):

  1. # ファイル名: find_facial_features_in_picture.py
  2. # -*- コーディング: utf-8 -*-
  3. # pilモジュールをインポートします。これはapt-get install python-Imagingコマンドを使用してインストールできます。
  4. PILからImage、ImageDraw をインポートします
  5. # face_recognitionモジュールをインポートします。これは、pip install face_recognitionコマンドを使用してインストールできます。
  6. 顔認識をインポートする
  7.  
  8. # jpgファイルをnumpy配列にロードする
  9. 画像 = face_recognition.load_image_file( "biden.jpg" )
  10.  
  11. # 画像内のすべての顔の特徴をすべて見つける
  12. face_landmarks_list = face_recognition.face_landmarks(画像)
  13.  
  14. print( "この写真には {} 人の顔が見つかりました。" .format(len(face_landmarks_list)))
  15.  
  16. face_landmarks_list内のface_landmarksの場合:
  17.  
  18. # この画像の各顔の特徴の位置を印刷します
  19. 顔の特徴 = [
  20. 「あご」
  21. '左眉' ,
  22. '右眉' ,
  23. 'ノーズブリッジ' ,
  24. '鼻先' ,
  25. '左目'
  26. '右目'
  27. '上唇'
  28. '下唇'  
  29. ]
  30.  
  31. facial_features内のfacial_featureの場合:
  32. print( "この面の {} には次のポイントがあります: {}" .format(facial_feature, face_landmarks[facial_feature]))
  33.  
  34. # それぞれの顔の特徴を画像で表現してみましょう!
  35. pil_image = Image.fromarray(画像)
  36. d = ImageDraw.Draw(pil_image)
  37.  
  38. facial_features内のfacial_featureの場合:
  39. d.line(顔のランドマーク[顔の特徴], 幅=5)
  40.  
  41. pil_image.show()

顔の特徴を自動的に識別する

例4(人物の顔の識別):

  1. # ファイル名: recognize_faces_in_pictures.py
  2. # -*- 含む: utf-8 -*-
  3. # face_recognitionモジュールをインポートします。これは、pip install face_recognitionコマンドを使用してインストールできます。
  4. 顔認識をインポートする
  5.  
  6. # jpgファイルをnumpy配列にロードする
  7. babe_image = face_recognition.load_image_file( "/opt/face/known_people/babe.jpeg" )
  8. Rong_zhu_er_image = face_recognition.load_image_file( "/opt/face/known_people/Rong zhu er.jpg" )
  9. 不明な画像 = face_recognition.load_image_file( "/opt/face/unknown_pic/babe2.jpg" )
  10.  
  11. # 各画像ファイル内の各顔の顔エンコーディングを取得します
  12. #各画像には複数の顔がある可能性があるため、エンコードされたリストが返されます。
  13. # ただし、画像ごとに顔が 1 つしかないことはわかっているので、各画像の最初のエンコーディングのみを気にし、インデックス 0 を取得します。
  14. babe_face_encoding = face_recognition.face_encodings(babe_image)[0]
  15. Rong_zhu_er_face_encoding = 顔認識.face_encodings(Rong_zhu_er_image)[0]
  16. 不明な顔エンコーディング = face_recognition.face_encodings(不明な画像)[0]
  17.  
  18. 既知の顔 = [
  19. ベイブフェイスエンコーディング、
  20. Rong_zhu_er の顔エンコーディング
  21. ]
  22.  
  23. # 結果はTrue / Falseの配列で、未知の顔がknown_faces配列のいずれかと一致するかどうかを示す
  24. 結果 = face_recognition.compare_faces(既知の顔、未知の顔のエンコード)
  25.  
  26. print( "この知らない顔はベイブ? {}" .format(results[0]))
  27. print( "この知られざる顔はジョイ・ヨンでしょうか? {}" .format(results[1]))
  28. print( "この未知の顔は、私たちが今まで見たことのない新しい顔でしょうか? {}" .format( not  真実 結果的に

結果は図に示す通りである。

例5(顔の特徴を認識して顔を美しくする):

  1. # ファイル名: digital_makeup.py
  2. # -*- コーディング: utf-8 -*-
  3. # pilモジュールをインポートします。これはapt-get install python-Imagingコマンドを使用してインストールできます。
  4. PILからImage、ImageDraw をインポートします
  5. # face_recognitionモジュールをインポートします。これは、pip install face_recognitionコマンドを使用してインストールできます。
  6. 顔認識をインポートする
  7. # jpgファイルをnumpy配列にロードする
  8. 画像 = face_recognition.load_image_file( "biden.jpg" )
  9. # 画像内のすべての顔の特徴をすべて見つける
  10. face_landmarks_list = face_recognition.face_landmarks(画像)
  11. face_landmarks_list内のface_landmarksの場合:
  12. pil_image = Image.fromarray(画像)
  13. d = ImageDraw.Draw(pil_image, 'RGBA' ) です。
  14. #眉毛を悪夢にする
  15. d.polygon(face_landmarks[ 'left_eyebrow' ], 塗りつぶし=(68, 54, 39, 128))
  16. d.polygon(face_landmarks[ 'right_eyebrow' ], 塗りつぶし=(68, 54, 39, 128))
  17. d.line(face_landmarks[ 'left_eyebrow' ], 塗りつぶし=(68, 54, 39, 150), 幅=5)
  18. d.line(face_landmarks[ 'right_eyebrow' ], 塗りつぶし=(68, 54, 39, 150), 幅=5)
  19. #ツヤツヤ唇
  20. d.polygon(face_landmarks[ 'top_lip' ], 塗りつぶし=(150, 0, 0, 128))
  21. d.polygon(face_landmarks[ 'bottom_lip' ], 塗りつぶし=(150, 0, 0, 128))
  22. d.line(face_landmarks[ 'top_lip' ], 塗りつぶし=(150, 0, 0, 64), 幅=8)
  23. d.line(face_landmarks[ 'bottom_lip' ], 塗りつぶし=(150, 0, 0, 64), 幅=8)
  24. #輝く瞳
  25. d.polygon(face_landmarks[ 'left_eye' ], fill=(255, 255, 255, 30))
  26. d.polygon(face_landmarks[ 'right_eye' ], fill=(255, 255, 255, 30))
  27. #アイライナーを塗る
  28. d.line(face_landmarks[ 'left_eye' ] + [face_landmarks[ 'left_eye' ][0]], 塗りつぶし=(0, 0, 0, 110), 幅=6)
  29. d.line(face_landmarks[ 'right_eye' ] + [face_landmarks[ 'right_eye' ][0]], 塗りつぶし=(0, 0, 0, 110), 幅=6)
  30. pil_image.show()

美容整形前と美容整形後

<<:  自然言語処理技術により、機械はより人間的な視点から問題を解決できるようになる。

>>:  AI に「大きな力と小さな心」を与える - ユニバーサル CNN アクセラレーション設計

ブログ    
ブログ    
ブログ    

推薦する

ディープマインドAIは人間に対して84%の勝率を誇り、ウエスタンアーミーチェスで初めて人間の専門家のレベルに到達した。

DeepMind はゲーム AI の分野で新たな成果を上げました。今回はチェスです。 AI ゲーム...

...

人工知能時代の到来により、代替が難しい仕事はどれでしょうか?

現在、人類社会は人工知能の時代に入り、人工知能技術は生活のあらゆる分野で実証され、人類社会の継続的な...

面接官はガベージコレクションアルゴリズムについて質問するのが大好きです

[[438235]]この記事はWeChatの公開アカウント「Programmer Bus」から転載し...

...

有機構造の画像を分子構造に変換するトランスフォーマーベースの人工ニューラルネットワーク

人類は人工知能の時代に突入しています。化学もまた、ニューラル ネットワークのトレーニングに大量の定性...

ゴミ分別ロボットが登場! 1分間に80個の仕分けが可能、人間の2倍の速さ

[[270507]]画像: AMP Robotics の特注マシンは、1 分間に 80 個のアイテム...

...

NumPy ダイアグラム、配列を視覚的に理解するためのチュートリアル

NumPy パッケージは、Python エコシステムにおけるデータ分析、機械学習、科学計算の主力です...

AIの新興企業が胡潤富豪リストに名を連ねる:「CVの4人の小さなドラゴン」の創業者3人がリスト入り

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

写真やビデオをロスレスで拡大しますか?これら2つのAIツールは持つ価値がある

編集者として、執筆という主な仕事に加えて、イラストレーションという非常に重要な問題を考慮する必要があ...

...

...

...

Giskard: AI モデル向けのオープンソース品質管理

翻訳者 |ブガッティレビュー | Chonglou実稼働環境で AI モデルの品質を確保することは複...