face_recognition : https://github.com/ageitgey/face_recognition
dlib 기반 얼굴 인식 오픈소스 라이브러리. 따라서 dlib와 그에 필요한 cmake 설치가 필요하다.
설치 방법은 해당 레포에 한글 번역본으로도 올라와있다.
사용 :
각 변수에 타깃 얼굴 이미지 경로와 디렉토리 경로를 입력한다.
결과물은 csv파일로 저장된다.
기본적으로는 얼굴 임베딩 벡터간 거리를 측정하여 출력한다. 낮을수록 유사한 것으로 보면 된다.
얼굴 관련 데이터셋으로 실험할 때 가끔 쓸 일이 있을지도 모른다.
import os
import face_recognition
import pandas
from tqdm import tqdm
target = 'D:/****.png'
src_path = 'D:/****'
dst_csv = 'D:/****/output.csv'
t_img = face_recognition.load_image_file(target)
t_encoding = face_recognition.face_encodings(t_img, model='small')
match_scores = {}
for fn in tqdm(os.listdir(src_path)):
f_img = face_recognition.load_image_file(os.path.join(src_path, fn))
f_encoding = face_recognition.face_encodings(f_img, model='small')
if f_encoding:
match_scores.update({fn: face_recognition.face_distance(t_encoding, f_encoding[0])})
df = pandas.DataFrame.from_dict(match_scores) # 얼굴 임베딩 거리 (클수록 안비슷)
df.T.to_csv(dst_csv) # csv 표로 출력
'Codes' 카테고리의 다른 글
[python3] 이미지 K-means의 numpy 구현 (0) | 2022.05.30 |
---|---|
정규화 경계상자들을 해상도에 맞추고 크기를 바꾸는 코드 (0) | 2021.09.07 |