본문 바로가기

Computer Vision + Python/이미지 분석 & 인식 (중급자)

Python으로 이미지에서 악세사리 인식(Accessory Recognition) 구현하기 – 안경·모자 탐지 기술의 실제 활용

 

Python으로 이미지에서 악세사리 인식(Accessory Recognition) – 안경/모자 탐지

 

 

이미지 분석 기술이 발전하면서 ‘얼굴 인식’과 함께 주목받는 영역이 바로 **악세사리 인식(Accessory Recognition)**이다. 특히 안경, 모자, 마스크, 귀걸이 등과 같은 착용 여부를 파악하는 기술은 보안 시스템, 스마트 리테일, 출입 통제, 광고 분석, AR 서비스 등 다양한 분야에서 활용되고 있다.
나는 이 기술을 실제 비전 프로젝트에 적용해보며 단순한 얼굴 검출을 넘어, 악세사리 여부만으로도 사람의 상태·행동·패턴을 해석할 수 있다는 가능성을 확인했다. 본 글에서는 Python 기반으로 안경/모자 인식 기능을 구현할 때의 실제적인 접근 전략과 현장에서 얻은 깊이 있는 경험을 중심으로 설명한다.


1. 악세사리 인식이 중요해지는 이유

악세사리 인식은 단순히 패션 요소를 구별하는 기술이 아니다. 최근 많은 시스템에서 악세사리 판단은 핵심적인 판단 기준이 되고 있다.

  • 보안·CCTV → 모자 착용 여부에 따라 얼굴 인식 성능 저하, 이를 보정하기 위해 악세사리 인식 필수
  • 스마트 매장 분석 → 고객의 패션 스타일 분석에 악세사리 데이터가 중요한 변수
  • AR 필터 시스템 → 얼굴 위에 정확한 가상 오브젝트를 배치하기 위해 악세사리 정보 필요
  • 운전자 모니터링 시스템 → 선글라스 착용 시 눈 인식 어려우므로 보조 알고리즘 필요

특히 안경이나 모자는 얼굴 윤곽과 시각적 특징을 크게 가리기 때문에 악세사리 인식은 얼굴 인식 단계에서 필수적인 전처리 과정이 된다.


2. Python으로 악세사리 인식 구현 시 핵심 기술

안경·모자 인식을 위한 기술은 여러 가지가 있지만, 실제 프로젝트에서 사용해 본 결과 가장 효과적이었던 방식들을 중심으로 설명한다.

 1) Haar Cascade 기반 안경 탐지 (전통 기법)

Haar Cascade는 OpenCV에서 제공하는 전통적인 객체 검출 알고리즘이다.
안경 전용 Haar 모델이 존재하며, 조도가 일정하고 정면 얼굴일 때 성능이 매우 높다.

직접 테스트 경험

  • 장점: 빠르고 가벼워서 임베디드 시스템에서도 작동
  • 단점: 측면 얼굴·두꺼운 뿔테 안경·조명 반사 환경에서는 오탐률 증가

최근 딥러닝 기반 모델에 비해 성능은 떨어지지만, 실시간 처리 속도가 가장 빠르다는 장점이 있어 현장에서는 여전히 활용된다.


 2) 딥러닝 기반 안경/모자 탐지 (YOLO·RetinaNet)

악세사리는 형태가 단순하고 크기가 일정하기 때문에 객체 탐지(Object Detection) 모델이 매우 잘 맞는다.
특히 YOLO 모델은 작은 물체에도 강하고 빠르기 때문에 안경·모자 탐지에 최적이다.

프로젝트 적용 경험에서 얻은 인사이트

  • 안경은 반사·프레임 두께·각도 변화가 심해 충분한 데이터 다양성이 필요
  • 모자는 종류(야구모자, 버킷햇, 비니 등)가 다양하므로 라벨링 기준을 명확히 해야 성능이 안정됨
  • YOLOv8 모델은 실제 CCTV 장면에서도 매우 높은 안정성을 보여줌
  • 단, 정면 얼굴보다 측면 얼굴에서 더 높은 난도를 보임

실제로 YOLO를 사용할 경우 다음과 같은 카테고리를 구성하는 것이 효과적이었다.

  • eyeglasses
  • sunglasses
  • hat
  • cap
  • helmet

특히 헬멧은 산업안전 분야에서 필수 탐지 항목이기 때문에 악세사리 인식과 안전 관리가 자연스럽게 연결된다.


 3) 얼굴 랜드마크 기반 안경 착용 여부 판단

안경 탐지는 하나의 객체로 보는 방법도 있지만, 얼굴의 특징점을 활용하여 판단하는 방식도 있다.
예를 들어 dlib이나 MediaPipe의 face mesh는 400개가 넘는 정교한 랜드마크를 제공한다.

랜드마크 분석 방식

  • 눈 주변 반사 영역이 넓으면 안경 착용으로 판단
  • 눈썹~눈 사이의 그림자 패턴 변화 분석
  • 얼굴 윤곽에서 안경 다리(테)의 직선 성분 검출

이 방식은 별도의 탐지 모델 없이도 안경 여부를 판단할 수 있어 저전력 환경에 유리하다.
나는 조명 반사가 심한 생산 라인에서 이 방식을 결합하여 안정적인 성능을 얻을 수 있었다.


3. 악세사리 인식 전체 워크플로우 (실제 프로젝트 기준)

단순히 알고리즘을 적용하는 것이 아니라, 시스템적으로 구성하는 것이 중요하다.
아래는 내가 실무에서 사용한 가장 안정적인 워크플로우이다.

  1. 얼굴 검출 (MTCNN 또는 YOLO Face)
  2. 얼굴 영역만 크롭 & 정규화
  3. 악세사리 탐지 모델 적용
    • YOLO 기반 안경/모자 탐지
    • 필요 시 랜드마크 기반 보조 판정
  4. 멀티 클래스 분류
    • 안경 착용
    • 선글라스 착용
    • 모자 착용
    • 악세사리 없음
  5. 결과 후처리 (Tracking 기반)
    • 프레임 단위 변동을 줄이기 위해 KCF 또는 DeepSORT 사용
  6. 알림·로그 저장·인식 이벤트 관리

이 방식은 CCTV·스마트 매장·출입 통제 시스템 등 대부분의 현장에 그대로 적용 가능하다.


4. 실제 적용 시 겪은 문제와 해결 전략

악세사리 인식은 단순해 보이지만, 실제 현장 적용은 의외로 까다롭다.
아래는 내가 경험한 문제와 해결 팁이다.

문제 1. 모자의 종류가 너무 다양함

→ 해결: ‘형태 기반 그룹화’로 라벨 단순화
(예: brim hat, round hat처럼 공통된 형태 중심 분류)

문제 2. 안경 반사 때문에 모델이 눈을 제대로 보지 못함

→ 해결: 조명 직사광을 피하고, 데이터셋에 다양한 반사 이미지를 포함하여 학습

문제 3. CCTV는 해상도가 낮아 작은 객체 탐지 성능이 떨어짐

→ 해결: YOLO의 small model + high-resolution 전략 조합

문제 4. 측면 얼굴에서 안경이 안 보임

→ 해결: 얼굴 각도를 계산하여 탐지 스코어 보정

이것들은 기술 설명만으로는 얻기 어려운 실제적 경험에서 나온 해결책들이다.


5 악세사리 인식의 미래와 확장 가능성

Python 기반 악세사리 인식 기술은 앞으로 더 많은 영역에서 사용될 것이다.
특히 다음 분야가 빠르게 성장하고 있다.

  • AR/VR → 안경·모자를 포함한 전체 패션 인식 기반 맞춤 가상 피팅
  • 스마트 리테일 → 고객 스타일 자동 분석 및 추천
  • 보안 AI → 얼굴 인식과 악세사리 인식을 결합한 ‘강건한 신원 인식’
  • 안전 관리 시스템 → 공장에서 헬멧 착용 여부 실시간 감지

특히 Vision Transformer 기반 모델이 보편화되면 악세사리 인식은 더욱 정교해질 것이고, 다양한 조명·각도 환경에서도 안정적인 인식이 가능해질 것이다.