2025년 4월 3일 목요일

파이썬 facerecognition

 

import face_recognition
import cv2

# 저장된 치매 노인 사진 불러오기
known_image = face_recognition.load_image_file("known_image.jpg")
known_encoding = face_recognition.face_encodings(known_image)[0]

# 새로운 사진 불러오기
unknown_image = face_recognition.load_image_file("unknown_image.jpg")
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

# 얼굴 매칭
results = face_recognition.compare_faces([known_encoding], unknown_encoding, tolerance=0.5)
if results[0]:
    print("매칭된 얼굴입니다!")
else:
    print("매칭되지 않았습니다.")
==============================================
 Python 기반의 FaceRecognition 라이브러리를 사용하면 저장된 
사진(치매노인 폴더에 저장된 사진들)과 새롭게 발견된 사진을 비교하여 
매칭된 사람을 찾는 프로그램을 만들 수 있습니다. 아래에 간단한 구현 
방법을 설명드릴게요:
import face_recognition import os # 1. 치매노인 사진 데이터베이스 로드 known_encodings = [] known_names = [] folder_path = "C:/치매노인/" # 사진들이 저장된 폴더 경로 for filename in os.listdir(folder_path): if filename.endswith(".jpg") or filename.endswith(".png"): image_path = os.path.join(folder_path, filename) image = face_recognition.load_image_file(image_path) encodings = face_recognition.face_encodings(image) if len(encodings) > 0: # 얼굴 인식이 성공하면 known_encodings.append(encodings[0]) known_names.append(filename) # 파일명을 이름으로 사용 # 2. 새로운 사진의 얼굴 특징 추출 new_image_path = "C:/새로운_치매노인_사진.jpg" # 새로 촬영한 사진 경로 new_image = face_recognition.load_image_file(new_image_path) new_encoding = face_recognition.face_encodings(new_image)[0] # 3. 매칭 실행 results = face_recognition.compare_faces(known_encodings, new_encoding, tolerance=0.5) distances = face_recognition.face_distance(known_encodings, new_encoding) # 4. 결과 처리 if True in results: matched_index = results.index(True) print(f"매칭된 사진: {known_names[matched_index]} (유사도: {1 - distances[matched_index]:.2f})") else: print("매칭된 사진이 없습니다.")

매칭 성능 향상 방법

  1. 고해상도 이미지 사용: 이미지 해상도가 높을수록 인식 정확도가 증가합니다.

  2. 다양한 조건의 사진 추가: 데이터베이스에 동일 인물의 여러 얼굴 사진(다른 각도, 조명 등)을 저장하면 더 높은 매칭 정확도를 얻을 수 있습니다.

  3. tolerance 값 조정: 기본 tolerance 값(0.5)을 낮추면 더 엄격한 매칭이 가능하며, 값이 작을수록 유사성이 높은 사진만 반환됩니다.

  4. 전처리: OpenCV를 사용해 얼굴을 크롭하거나 정규화하여 분석 품질을 높일 수 있습니다.

  5. CNN 모델 사용: FaceRecognition의 CNN 모델(model="cnn")을 활용하면 성능이 더 향상될 수 있습니다.

참고사항

  • 데이터베이스에 저장된 사진의 품질과 다양성이 프로그램의 성능에 큰 영향을 미칩니다.

  • 90% 이상의 매칭률을 목표로 할 경우, 동일 인물의 다양한 사진으로 데이터베이스를 구축하고 환경적 변수를 최소화하는 것이 중요합니다.

더 자세한 설명이나 추가 도움이 필요하시면 말씀해주세요! 😊


====================================================================

FaceDB

FaceDB는 얼굴 인식 및 데이터베이스 관리를 위한 Python 라이브러리로,

얼굴 매칭, 검색, 데이터베이스 관리 등을 효율적으로 수행할 수 있습니다.

다음은 FaceDB를 사용하는 방법과 절차입니다:


1. 설치

FaceDB를 설치하려면 Python 환경에서 다음 명령어를 실행하세요:

bash
pip install facedb

FaceRecognition 또는 DeepFace를 기반으로 사용할 수 있으며, 필요에 따라 추가 라이브러리를 설치해야 합니다:

  • FaceRecognition 기반:

    bash
    pip install face_recognition
  • DeepFace 기반:

    bash
    pip install deepface

2. 기본 사용법

FaceDB를 사용하여 얼굴을 데이터베이스에 추가하고, 새로운 얼굴을 인식하는 간단한 예제입니다:

python
from facedb import FaceDB

# 데이터베이스 생성
db = FaceDB(path="facedata")

# 얼굴 추가
face_id = db.add("John Doe", img="john_doe.jpg")

# 얼굴 인식
result = db.recognize(img="new_face.jpg")

# 결과 확인
if result and result["id"] == face_id:
    print("인식된 얼굴: John Doe")
else:
    print("알 수 없는 얼굴")

3. 고급 사용법

FaceDB는 다양한 기능을 제공합니다:

  • 여러 얼굴 추가:

    python
    from glob import glob
    from pathlib import Path
    
    files = glob("faces/*.jpg")  # 폴더 내 모든 이미지 파일
    imgs = [file for file in files]
    names = [Path(file).stem for file in files]  # 파일명에서 이름 추출
    
    ids, failed_indexes = db.add_many(imgs=imgs, names=names)
    
  • 유사 얼굴 검색:

    python
    results = db.search(img="unknown_face.jpg", top_k=5, include=["name"])
    for result in results:
        print(f"유사한 얼굴: {result['name']} (거리: {result['distance']})")

4. 성능 최적화

  • 데이터베이스 백엔드: Pinecone과 같은 고성능 데이터베이스를 사용할 수 있습니다.

    python
    import os
    os.environ["PINECONE_API_KEY"] = "YOUR_API_KEY"
    
    db = FaceDB(
        path="facedata",
        metric="euclidean",
        database_backend="pinecone",
        index_name="faces",
        embedding_dim=128,
        module="face_recognition",
    )

  • 전처리: OpenCV를 사용하여 입력 이미지를 전처리하면 인식 정확도를 높일 수 있습니다.


5. 추가 참고 자료

FaceDB의 공식 문서와 GitHub 페이지에서 더 많은 정보를 확인할 수 있습니다. 를 참고하세요.

궁금한 점이나 추가적인 도움이 필요하면 언제든지 말씀해주세요!






댓글 없음:

댓글 쓰기