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ベースのクラウド管理ツールではコンテキストが重要

AI を活用したクラウド管理ツールはまだ導入の初期段階にありますが、IT 業界の専門家は、このような...

速報です! ImageNetデータセット内のすべての顔はぼかされている

2012 年、AI 研究者はコンピューター ビジョンで大きな進歩を遂げ、ImageNet として知ら...

AIの冷却:ディープラーニングは万能薬ではない

[[202706]]近年、ディープラーニングはある程度の流行状態に入り、人々はこの技術を使ってあらゆ...

AIに関する4つの最も一般的な誤解

[[398369]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...

ディープラーニングのこれらの落とし穴に遭遇したことがありますか?ニューラルネットワークのよくある落とし穴11選とその対処法

ニューラルネットワークがうまく動作しない場合はどうすればいいでしょうか?この記事の著者は、データの前...

...

今日の企業で人気の AI ユースケース 12 選

世界中の企業が、プロセスの合理化、コストの最適化、人的エラーの防止、顧客の支援、IT システムの管理...

調査によると、中国の従業員の88%が人間の上司よりもロボットを信頼している

[[279631]]中国の従業員は職場でロボットをより信頼しているのでしょうか?調査によると、中国の...

AI はビジネスのやり方を永久に変えるのでしょうか?

Google、Facebook、Twitterなど、世界中の大手テクノロジー企業が人工知能ソリュー...

機械に漢字の一画一画の謎を理解させるにはどうすればいいでしょうか?

[[227335]]背景インテリジェントな顧客サービスから機械翻訳、テキスト要約の生成からユーザー...

指紋、顔、虹彩: 適切な生体認証技術を選択するには?

[[351445]]最近、クレジットカード会社からデータ漏洩に関する連絡がありましたか? あるいは...

...

DeepMind の最新研究: AI が人間に勝ち、より優れた経済メカニズムを設計 | Nature サブジャーナル

人工知能(AI)は人類社会を真に知的な時代へと導くことができるのでしょうか?人工知能産業は60年以上...

人工知能、機械学習、ディープラーニングの違いと関連性を説明する記事

人工知能の波が世界を席巻しており、人工知能、機械学習、ディープラーニングといった多くの言葉が常に私た...

あなたの「読書」は他の人に読まれている。清華大学の研究者はWeChatの「Look」からこれらのパターンを発見した。

WeChatの「Take a Look」アプリの最もアクティブなユーザーは実は私たちの両親であり、...