利用条件などは利用者において確認してください
サイト内の関連ページ
参考 Web ページ: https://github.com/ageitgey/face_recognition
sudo apt -y install python3-dev python3-pip python3-numpy
Dlib は C:\pytools\dlib にインストールされているとする
※ ここには,Windows でのインストール手順を示す.Ubuntuでも同様の手順になる.
※ 「pip install ...」は,Python パッケージをインストールするための操作.
python -m pip install -U pip setuptools python -m pip install -U numpy pillow opencv-python keras
Ubuntu では「python」でなく「python3」コマンドを使う.
sudo apt update sudo apt -y install python3-numpy python3-pil python3-opencv python3-keras
まだインストールしていない場合には、次の手順でインストールする
mkdir c:\pytools cd c:\pytools rmdir /s /q face_recognition
cd c:\pytools git clone https://github.com/ageitgey/face_recognition cd face_recognition python setup.py build python setup.py install
コマンドプロンプトで次のコマンドを実行
mkdir C:\pytools\face_recognition\known_people mkdir C:\pytools\face_recognition\unknown_pictures
C:\pytools\face_recognition\examples にある顔画像のファイル 「biden.jpg」と「obama.jpg」を,先ほど作成した ディレクトリ known_people の下にコピー
copy C:\pytools\face_recognition\examples\biden.jpg C:\pytools\face_recognition\known_people copy C:\pytools\face_recognition\examples\obama.jpg C:\pytools\face_recognition\known_people
C:\pytools\face_recognition\examples にある顔画像のファイル 「two_people.jpg」を,先ほど作成した ディレクトリ unknown_pictures の下にコピー
copy C:\pytools\face_recognition\examples\two_people.jpg C:\pytools\face_recognition\unknown_pictures
unknown_pictures の下にある画像ファイルを、 known_people 下の画像ファイルを照合して顔識別を行うコマンド
cd C:\pytools\face_recognition face_recognition known_people unknown_pictures
cd C:\pytools\face_recognition face_detection unknown_pictures
表示される4つの数字は、顔領域の座標値
Python プログラムを動かす.
「C:/pytools/face_recognition/unknown_pictures」のところは、実際に作成したディレクトリに書き換えて実行すること.ディレクトリの切れ目に「\」でなく「/」を使うのは Python の流儀.
import face_recognition image = face_recognition.load_image_file("C:/pytools/face_recognition/unknown_pictures/two_people.jpg") face_locations = face_recognition.face_locations(image) print(face_locations)
プログラムは、https://github.com/ageitgey/face_recognition/blob/master/examples/find_faces_in_picture.py のものを一部変更したものを掲載している
「C:/pytools/face_recognition/unknown_pictures」のところは、実際に作成したディレクトリに書き換えて実行すること.ディレクトリの切れ目に「\」でなく「/」を使うのは Python の流儀.
import face_recognition import PIL import cv2 F = "C:/pytools/face_recognition/unknown_pictures/two_people.jpg" image = face_recognition.load_image_file(F) face_locations = face_recognition.face_locations(image) def box_label(bgr, x1, y1, x2, y2, label): cv2.rectangle(bgr, (x1, y1), (x2, y2), (255, 0, 0), 1, 1) cv2.rectangle(bgr, (int(x1), int(y1-25)), (x2, y1), (255,255,255), -1) cv2.putText(bgr, label, (x1, int(y1-5)), cv2.FONT_HERSHEY_COMPLEX, 0.7, (0,0,0), 1) bgr = cv2.imread(F) for face_location in face_locations: top, right, bottom, left = face_location box_label(bgr, left, top, right, bottom, 'face') cv2.imshow('', bgr) cv2.waitKey(0) cv2.destroyAllWindows()
画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる
chin, left_eyebrow, right_eyebrow, nose_bridge, left_eye, right_eye の情報が表示される
import face_recognition image = face_recognition.load_image_file("C:/pytools/face_recognition/unknown_pictures/two_people.jpg") face_landmarks_list = face_recognition.face_landmarks(image) for i in face_landmarks_list: print(i)
プログラムは、https://github.com/ageitgey/face_recognition/blob/master/examples/find_faces_in_picture.py のものを一部変更したものを掲載している
「C:/pytools/face_recognition/unknown_pictures」のところは、実際に作成したディレクトリに書き換えて実行すること.ディレクトリの切れ目に「\」でなく「/」を使うのは Python の流儀.
import face_recognition import PIL import cv2 F = "C:/pytools/face_recognition/unknown_pictures/two_people.jpg" image = face_recognition.load_image_file(F) face_landmarks_list = face_recognition.face_landmarks(image) def box_label(bgr, x1, y1, x2, y2, label): cv2.rectangle(bgr, (x1, y1), (x2, y2), (255, 0, 0), 1, 1) cv2.rectangle(bgr, (int(x1), int(y1-25)), (x2, y1), (255,255,255), -1) cv2.putText(bgr, label, (x1, int(y1-5)), cv2.FONT_HERSHEY_COMPLEX, 0.7, (0,0,0), 1) bgr = cv2.imread(F) for i in face_landmarks_list: for j in i.keys(): for k in (i[j]): cv2.circle(bgr, (k[0], k[1]), 2, (255, 0, 0), -1) cv2.imshow('', bgr) cv2.waitKey(0) cv2.destroyAllWindows()
画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる
import face_recognition image = face_recognition.load_image_file("C:/pytools/face_recognition/unknown_pictures/two_people.jpg") face_landmarks_list = face_recognition.face_landmarks(image) for i in face_landmarks_list: print(i['left_eye']) print(i['left_eyebrow'])
プログラムは、https://github.com/ageitgey/face_recognition/blob/master/examples/find_faces_in_picture.py のものを一部変更したものを掲載している
「C:/pytools/face_recognition/unknown_pictures」のところは、実際に作成したディレクトリに書き換えて実行すること.ディレクトリの切れ目に「\」でなく「/」を使うのは Python の流儀.
import face_recognition import PIL import cv2 F = "C:/pytools/face_recognition/unknown_pictures/two_people.jpg" image = face_recognition.load_image_file(F) face_landmarks_list = face_recognition.face_landmarks(image) def box_label(bgr, x1, y1, x2, y2, label): cv2.rectangle(bgr, (x1, y1), (x2, y2), (255, 0, 0), 1, 1) cv2.rectangle(bgr, (int(x1), int(y1-25)), (x2, y1), (255,255,255), -1) cv2.putText(bgr, label, (x1, int(y1-5)), cv2.FONT_HERSHEY_COMPLEX, 0.7, (0,0,0), 1) bgr = cv2.imread(F) for i in face_landmarks_list: for j in i['left_eye']: cv2.circle(bgr, (j[0], j[1]), 2, (0, 255, 0), -1) for j in i['left_eyebrow']: cv2.circle(bgr, (j[0], j[1]), 2, (0, 0, 255), -1) cv2.imshow('', bgr) cv2.waitKey(0) cv2.destroyAllWindows()
画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる
2つの顔画像を比べる
import face_recognition picture_of_obama = face_recognition.load_image_file("C:/pytools/face_recognition/known_people/obama.jpg") obama_face_encoding = face_recognition.face_encodings(picture_of_obama)[0] biden_picture = face_recognition.load_image_file("C:/pytools/face_recognition/known_people/biden.jpg") biden_face_encoding = face_recognition.face_encodings(biden_picture)[0] results = face_recognition.compare_faces([obama_face_encoding], biden_face_encoding) print(results)
https://github.com/ageitgey/face_recognition に掲載の写真から切り取った、次の写真を使ってみる
上の画像ファイルを、C:/pytools/face_recognition/unknown_pictures の下に,104.png という名前で保存しておく
今度は True と表示される
import face_recognition picture_of_obama = face_recognition.load_image_file("C:/pytools/face_recognition/known_people/obama.jpg") obama_face_encoding = face_recognition.face_encodings(picture_of_obama)[0] another_picture = face_recognition.load_image_file("C:/pytools/face_recognition/unknown_pictures/104.png") another_face_encoding = face_recognition.face_encodings(another_picture)[0] results = face_recognition.compare_faces([obama_face_encoding], another_face_encoding) print(results)
rmdir /s /q known_people rmdir /s /q unknown_pictures
本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.
問い合わせ先: 金子邦彦(かねこ くにひこ)