iBetter Books
수정

라이브니스를 가장 쉽게 추가하는 방법은 DeepFace입니다. 함수에 anti_spoofing=True 한 인자만 더하면, 검출된 얼굴이 진짜인지 가짜인지 함께 판정해 줍니다. 이미 PART 06에서 DeepFace를 썼다면, 라이브니스는 거의 공짜로 얻는 셈입니다.

extract_faces로 진짜/가짜 판정

DeepFace.extract_facesanti_spoofing=True를 주면, 각 얼굴에 진짜 여부가 붙어 나옵니다.

# 파일: df_antispoof.py"""DeepFace로 얼굴이 진짜(라이브)인지 판정한다."""from deepface import DeepFacefaces = DeepFace.extract_faces("input.jpg",                               detector_backend="yunet",                               anti_spoofing=True)for f in faces:    print("진짜 얼굴?", f["is_real"])    print("라이브니스 점수:", round(f["antispoof_score"], 4))

결과의 각 얼굴 딕셔너리에는 평소의 face·facial_area·confidence에 더해 두 키가 추가됩니다. is_real은 진짜 여부(참/거짓)이고, antispoof_score는 그 확신의 정도입니다. 점수가 높을수록 "진짜 얼굴"이라는 확신이 큽니다.

실제로 돌려 보면

깨끗한 인물 사진으로 실행하면 다음과 같이 진짜로 통과합니다.

진짜 얼굴? True라이브니스 점수: 0.9999

DeepFace 라이브니스 판정 결과

여기서 중요한 점을 짚어야 합니다. 깨끗한 디지털 사진이 "진짜(real)"로 통과하는 것은 당연합니다. 라이브니스가 잡아내는 것은 "사진 파일"이 아니라, 사진을 카메라로 다시 찍은 흔적(인쇄물·화면의 질감·모아레)이기 때문입니다. 즉 진짜 공격을 테스트하려면, 등록자 사진을 인쇄하거나 폰 화면에 띄워 웹캠으로 재촬영해 봐야 합니다. 그때 비로소 is_realFalse로 떨어집니다.

인식과 한 번에 — verify의 anti_spoofing

verify에도 같은 인자가 있어, 신원 확인과 라이브니스를 한 번에 처리할 수 있습니다.

# 파일: df_verify_spoof.pyfrom deepface import DeepFacetry:    result = DeepFace.verify("live.jpg", "registered.jpg",                             model_name="Facenet512",                             anti_spoofing=True)    print("같은 사람?", result["verified"])except ValueError as e:    # 스푸핑이 감지되면 예외로 알린다    print("위조 의심으로 거부:", e)

anti_spoofing=True로 verify를 호출하면, 입력이 가짜로 판정될 때 예외를 던져 인증을 막습니다. 신원이 맞아도 살아 있는 얼굴이 아니면 통과시키지 않는 것입니다. 이것이 "인식 + 라이브니스"를 한 호출로 묶는 가장 간단한 형태입니다.

DeepFace 라이브니스의 위치

장점 한계
한 인자로 추가, 쉬움 TensorFlow 의존(PART 06)
인식과 한 호출로 통합 모델·임계값 세밀 조정은 제한적
패시브(사용자 협조 불필요) 강한 공격엔 추가 방어 필요

DeepFace 라이브니스는 입문과 프로토타입에 최적입니다. 한 줄로 기본 방어를 갖추고, 더 세밀한 제어가 필요하면 다음 장의 Silent-Face를 직접 쓰거나 액티브 라이브니스를 더합니다.

실무 팁. 라이브니스 점수에도 임계값이 있습니다(PART 02·04의 임계값과 같은 원리). DeepFace의 기본 판정을 그대로 쓰되, 보안이 더 중요하면 antispoof_score를 직접 받아 더 높은 기준(예: 0.9 이상만 통과)을 적용할 수 있습니다. 반대로 진짜 사용자가 자주 거부되면 기준을 낮춥니다. 늘 그렇듯 내 환경의 데이터로 조정하세요.

이 장에서 기억할 것

DeepFace는 anti_spoofing=True 한 인자로 라이브니스를 추가하며, extract_facesis_real·antispoof_score를, verify는 가짜 감지 시 예외를 줍니다. 깨끗한 사진 파일은 real로 통과하는 것이 정상이고, 진짜 공격(인쇄·화면 재촬영)에서 가짜로 잡힙니다. 쉽고 통합적이지만 TensorFlow 의존과 제한된 제어가 한계입니다. 다음 장에서는 이 한 줄 뒤에서 실제로 일하는 모델, Silent-Face(MiniFASNet)를 들여다봅니다.