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

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

概要: 顔認識を実現するための 1 行のコード、1. まず、システムに認識させたいすべての人の写真が入ったフォルダーを用意する必要があります。それぞれの人物に 1 枚の写真があり、写真にはその人の名前が付けられています。 2. 次に、識別する画像を含む別のフォルダーを準備する必要があります。 3. 次に、準備した 2 つのフォルダーをパラメーターとして渡して face_recognition コマンドを実行すると、認識する画像に写っている人物が返されます。コードは 1 行で十分です。 ! !

[[207909]]

環境要件:

  • ウブントゥ 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をインストールする

# gitをインストールする
$ sudo apt-get install -y git
# cmakeをインストールする
$ sudo apt-get install -y cmake
# python-pip をインストールする
$ sudo apt-get install -y python-pip

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

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

# dlib をコンパイルする前に boost をインストールします
$ sudo apt-get で libboost-all-dev をインストールします

# dlibのコンパイルを開始
# dlib ソースコードをクローンする $ git clone https://github.com/davisking/dlib.git
$ cd dlib
$ mkdir ビルド
$ cd ビルド
$ cmake .. -DDLIB_USE_CUDA=0 -DUSE_AVX_INSTRUCTIONS=1
$ cmake --build . (真ん中にスペースがあることに注意してください)
$ cd ..
$ python setup.py インストール --yes USE_AVX_INSTRUCTIONS --no DLIB_USE_CUDA

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

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

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

顔認識の実装:


例 1 (顔認識を実装する 1 行のコード):

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

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

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

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

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

識別に成功しました! ! !


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

# ファイル名: find_faces_in_picture.py
# -*- コーディング: utf-8 -*-
# pilモジュールをインポートします。これはapt-get install python-Imagingコマンドを使用してインストールできます。
PIL インポート画像から
# face_recognitionモジュールをインポートします。これは、pip install face_recognitionコマンドを使用してインストールできます。
顔認識をインポートする

# jpg ファイルを numpy 配列に読み込みます image = face_recognition.load_image_file("/opt/face/unknown_pic/all_star.jpg")

# デフォルトの HOG モデルを使用して画像内のすべての顔を検出します # この方法は非常に正確ですが、GPU アクセラレーションを使用しないため、CNN モデルほど正確ではありません # 参照: find_faces_in_picture_cnn.py
face_locations = face_recognition.face_locations(画像)

# CNN モデルの使用# face_locations = face_recognition.face_locations(image, number_of_times_to_upsample=0, model="cnn")

# 印刷: 写真に何人の顔が見つかりましたか print("この写真に {} 人の顔が見つかりました。".format(len(face_locations)))

# face_locations 内の face_location で見つかったすべての面をループします。

        # 各面の位置情報を出力する top, right, bottom, left = face_location
        print("顔はピクセル位置にあります。上: {}、左: {}、下: {}、右: {}".format(top, left, bottom, right))

        # 顔の位置情報を指定して顔画像を表示します face_image = image[top:bottom, left:right]
        pil_image = Image.fromarray(face_image)
        pil_image.show()

以下の画像は識別のために使用されます

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

写真から7人の顔が識別され、以下のように表示されます。


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

# ファイル名: find_facial_features_in_picture.py
# -*- コーディング: utf-8 -*-
# pilモジュールをインポートします。これはapt-get install python-Imagingコマンドを使用してインストールできます。
PIL から Image、ImageDraw をインポートします
# face_recognitionモジュールをインポートします。これは、pip install face_recognitionコマンドを使用してインストールできます。
顔認識をインポートする

# jpg ファイルを numpy 配列に読み込みます image = face_recognition.load_image_file("biden.jpg")

# 画像内のすべての顔の顔のランドマークをすべて見つける face_landmarks_list = face_recognition.face_landmarks(image)

print("この写真には {} 人の顔が見つかりました。".format(len(face_landmarks_list)))

face_landmarks_list 内の face_landmarks の場合:

   # この画像の各顔の特徴の位置を印刷します facial_features = [
        '顎'、
        '左眉',
        '右眉',
        'ノーズブリッジ',
        '鼻先',
        '左目',
        '右目',
        '上唇',
        '下唇'
    ]

    facial_features 内の facial_feature の場合:
        print("この面の {} には次のポイントがあります: {}".format(facial_feature, face_landmarks[facial_feature]))

   # それぞれの顔の特徴を画像で表現してみましょう!
    pil_image = Image.fromarray(画像)
    d = ImageDraw.Draw(pil_image)

    facial_features 内の facial_feature の場合:
        d.line(顔のランドマーク[顔の特徴], 幅=5)

    pil_image.show()

顔の特徴(輪郭)を自動的に識別する


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

# ファイル名: recognize_faces_in_pictures.py
# -*- 含む: utf-8 -*-
# face_recognitionモジュールをインポートします。これは、pip install face_recognitionコマンドを使用してインストールできます。
顔認識をインポートする

# jpg ファイルを numpy 配列に読み込みます babe_image = face_recognition.load_image_file("/opt/face/known_people/babe.jpeg")
Rong_zhu_er_image = face_recognition.load_image_file("/opt/face/known_people/Rong zhu er.jpg")
不明な画像 = face_recognition.load_image_file("/opt/face/unknown_pic/babe2.jpg")

#各画像ファイル内の各顔の顔エンコーディングを取得します。#各画像には複数の顔がある可能性があるため、エンコーディングのリストが返されます。
# ただし、画像ごとに顔が 1 つしかないことはわかっているので、各画像の最初のエンコーディングのみを気にし、インデックス 0 を取得します。
babe_face_encoding = face_recognition.face_encodings(babe_image)[0]
Rong_zhu_er_face_encoding = 顔認識.face_encodings(Rong_zhu_er_image)[0]
不明な顔エンコーディング = face_recognition.face_encodings(不明な画像)[0]

既知の顔 = [
    ベイブフェイスエンコーディング、
    Rong_zhu_er の顔エンコーディング
]

# 結果は True/False の配列で、未知の顔が known_faces 配列内の人物のいずれかと一致するかどうかを示します。results = face_recognition.compare_faces(known_faces, unknown_face_encoding)

print("この知らない顔はベイブですか? {}".format(results[0]))
print("この知られざる顔はジョイ・ヨンでしょうか? {}".format(results[1]))
print("この未知の顔は、これまで見たことのない新しい顔でしょうか? {}".format(結果では True ではありません))

結果は以下の通りです。


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

# ファイル名: digital_makeup.py
# -*- コーディング: utf-8 -*-
# pilモジュールをインポートします。これはapt-get install python-Imagingコマンドを使用してインストールできます。
PIL から Image、ImageDraw をインポートします
# face_recognitionモジュールをインポートします。これは、pip install face_recognitionコマンドを使用してインストールできます。
顔認識をインポートする

# jpg ファイルを numpy 配列に読み込みます image = face_recognition.load_image_file("biden.jpg")

# 画像内のすべての顔の顔のランドマークをすべて見つける face_landmarks_list = face_recognition.face_landmarks(image)

face_landmarks_list 内の face_landmarks の場合:
    pil_image = Image.fromarray(画像)
    d = ImageDraw.Draw(pil_image, 'RGBA')

    # 眉毛を悪夢にする d.polygon(face_landmarks['left_eyebrow'], fill=(68, 54, 39, 128))
    d.polygon(face_landmarks['right_eyebrow'], 塗りつぶし=(68, 54, 39, 128))
    d.line(face_landmarks['left_eyebrow'], 塗りつぶし=(68, 54, 39, 150), 幅=5)
    d.line(face_landmarks['right_eyebrow'], 塗りつぶし=(68, 54, 39, 150), 幅=5)

    # 光沢のある唇 d.polygon(face_landmarks['top_lip'], fill=(150, 0, 0, 128))
    d.polygon(face_landmarks['bottom_lip'], 塗りつぶし=(150, 0, 0, 128))
    d.line(face_landmarks['top_lip'], 塗りつぶし=(150, 0, 0, 64), 幅=8)
    d.line(face_landmarks['bottom_lip'], 塗りつぶし=(150, 0, 0, 64), 幅=8)

    # 光る目 d.polygon(face_landmarks['left_eye'], fill=(255, 255, 255, 30))
    d.polygon(face_landmarks['right_eye'], 塗りつぶし=(255, 255, 255, 30))

    # アイライナーを追加します d.line(face_landmarks['left_eye'] + [face_landmarks['left_eye'][0]], fill=(0, 0, 0, 110), width=6)
    d.line(face_landmarks['right_eye'] + [face_landmarks['right_eye'][0]], 塗りつぶし=(0, 0, 0, 110), 幅=6)

    pil_image.show()

<<:  ディープラーニング技術に関する珍しいガイド

>>:  生涯にわたる機械学習: 持続可能な学習のパラダイム

推薦する

大規模な山火事をどうやって消火するか?ドローンがコンビネーションパンチを繰り出す!

環球時報などの報道によると、春の干ばつ、少雨、強風の影響で、18日にモンゴルで草原の山火事が発生した...

...

...

北京市海淀区に世界初のAIパークがオープン、自宅のすぐそばで自動運転車を体験できる

自動運転車に乗って公園を訪れ、休憩中にパビリオンとおしゃべりし、ランニング後に顔をスキャンして運動デ...

人工知能の時代でも様々な外国語を学ぶことは必要なのでしょうか?

[[254738]]文部科学省が公表した2017年度版の高等学校総合学習の計画と14項目の学習指導...

海外メディア:NvidiaはARMアーキテクチャに基づくPCチップを設計しており、早ければ2025年に発売される予定

10月24日、チップ大手のNvidiaが人工知能(AI)コンピューティングチップ市場を独占した。現在...

Sitechiのスマートオペレーションプラットフォームは、スマートシティが4.0時代に入ることを支援します

現在、中国ではデジタル経済の波が高まっています。情報技術を都市計画や建設とどのように融合させ、都市情...

医療画像技術の応用におけるAIの4つのコアバリュー

[51CTO.com クイック翻訳] 今年の ECR カンファレンスには 25 社を超えるソフトウェ...

大手銀行はなぜ従業員にプログラミングの学習を求めるのでしょうか?あなたもその一人かもしれません

[51CTO.com 速訳] 海外の主要メディアであるフィナンシャル・タイムズとウォール・ストリート...

122の古典的なSOTAモデルと223のアルゴリズム実装リソースを1つの記事にまとめました。

春節休暇期間中、Syncedの「SOTA! Model」は「Tiger Roller Operati...

インテリジェントな変革の時代を迎える: AIでビジネスの未来をリードする

インテリジェント トランスフォーメーションの本質: インテリジェント トランスフォーメーションは、テ...

米国の刑務所、受刑者の通話を分析するために人工知能を導入する計画

下院の主要委員会が、受刑者の通話を分析するための人工知能の使用に関する報告書の提出を求めたことにより...

IDC: アジア太平洋地域のAI支出は大幅に増加、銀行業界がAIに最も投資

IDC の最新の世界人工知能支出ガイドによると、アジア太平洋地域 (日本を除く) の AI システム...

人工知能と宝くじの出会いは実は詐欺から始まった?

現時点で最もホットなコンセプトは何かと聞かれれば、それは人工知能であるに違いないと私は思います。 A...

AI全盛の時代、機械翻訳はどのように革命を起こすのか?

人工知能の長年の目標は、これまで人間のみが実行していたタスクを機械が実行できるようにすることです。し...