정보 · 실험 계획
마스크·안전모 검출 — YOLO 밖의 방법들
COCO에 없는 클래스를 잡는 5가지 대안 조사. 실험실 장비로 직접 실측한 비교 — YOLOE가 놓친 어두운 마스크를 OWLv2와 VLM은 잡았다.
문제 정의
마스크·안전모는 COCO 80클래스에 없다. YOLO 데모에서는 YOLOE 제로샷으로 대응했지만, 어두운 마스크를 놓치는 한계를 확인했다. 이 문서는 YOLO 계열 밖의 대안들을 조사하고, 가능한 것은 실험실 장비에서 직접 실측한 기록이다.
실측 비교 — 같은 시험지로
시험지: YOLOE가 실패한 "어두운 마스크 2인" 사진과 "안전모 작업자 5인" 사진.
| 방법 | 어두운 마스크 (정답: 2명) | 안전모 (정답: 4개 착용) | 추론 시간 | 출력 형태 |
|---|---|---|---|---|
| YOLOE 제로샷 (현행) | 0검출 | 4개 | ~130ms | 박스 |
| OWLv2 (transformer 오픈보캐뷸러리) | 2명 정확 | 4개 | ~470ms | 박스 |
| VLM (Gemma 3 12B, 실험실 라이브) | 착용 2명 정확 | 4명+색상까지 | ~10s | 문장 |
핵심 관찰:
- OWLv2가 이 과제의 스위트 스폿. YOLOE와 같은 "텍스트 프롬프트 → 박스" 방식인데 비전-언어 정렬이 더 강해(ViT + 대규모 사전학습) 어려운 케이스를 잡는다. 대가는 속도 (YOLO의 3~4배 느림) — 실시간 스트림은 무리, 이벤트 스냅샷 판정에는 충분.
- VLM은 판정의 질이 다르다. "마스크를 썼지만 코를 안 가렸다" 같은 착용 품질까지 판단한다. 대신 인원수를 틀리는(8명으로 과다 계산) 정량 약점이 그대로 — 역시 "정성 판단" 역할이다.
- YOLOE의 실패는 제로샷 자체의 한계가 아니라 모델 용량과 사전학습 폭의 문제였다.
방법별 조사 정리
1. 오픈 보캐뷸러리 검출기 (OWLv2, Grounding DINO)
transformer 기반 텍스트 프롬프트 검출기. OWLv2(google, Apache-2.0)는 transformers
라이브러리로 바로 실행되고 MPS에서 동작함을 확인했다. Grounding DINO는 표현력이 더
좋다는 평가지만 의존성이 무겁다. 학습 없이 클래스를 문장으로 추가할 수 있어
"헬멧 안 쓴 사람", "조끼 미착용" 같은 확장이 쉽다.
2. VLM 판정 (실험실에 이미 있음)
검출이 아니라 질문으로 푼다: 스냅샷을 주고 "안전모 미착용자가 있는가?"를 묻는다. 박스 좌표는 없지만 규칙을 프롬프트로 바꾸는 유연성과 착용 품질 판단이 강점. YOLO가 person을 세고, 크롭을 VLM에 넘겨 착용 여부만 묻는 하이브리드가 실용적이다.
3. 2단계: 얼굴 검출 + 분류기
고전적이지만 여전히 산업 표준에 가까운 방식. 얼굴 검출(RetinaFace, SCRFD, MediaPipe Face Detection — 모두 Mac에서 실시간)로 얼굴을 크롭한 뒤, 소형 분류기(MobileNet급, mask/no-mask 2클래스)로 판정한다. 얼굴 단위라 원거리 CCTV에 강하고 각 단계가 빠르다(전체 <50ms 가능). 분류기는 공개 데이터셋으로 몇 시간이면 학습된다.
4. CLIP 제로샷 분류 (크롭 + 유사도)
사람/얼굴 크롭에 대해 CLIP으로 "a person wearing a face mask" vs "a person without a mask" 텍스트 유사도를 비교. 학습 불필요, 분류기 대체재. YOLOE가 내부적으로 쓰는 MobileCLIP이 이미 노드 2에 설치돼 있어 시도 비용이 낮다. 검출기가 아니므로 1단계(사람/얼굴 검출)와 조합해야 한다.
5. 전용 데이터셋 파인튜닝 (최고 정확도의 길)
실무 정확도(>95%)가 필요하면 결국 여기로 온다. 공개 데이터셋이 잘 갖춰져 있다:
| 대상 | 데이터셋 | 규모 |
|---|---|---|
| 안전모 | SHWD (Safety Helmet Wearing Dataset) | ~7,600장, hat/person 라벨 |
| 마스크 | MAFA, Kaggle Face Mask Detection | MAFA 3만+장 / 853장(3클래스: 정상·미착용·오착용) |
| PPE 전반 | Roboflow Universe 공개 프로젝트 다수 | 조끼·장갑·고글 포함 |
아키텍처는 RT-DETR(transformer 검출기) 같은 비-YOLO 선택지도 있고, M4에서도 nano급 파인튜닝은 가능하지만 대규모 학습은 외부 GPU가 경제적이다.
6. Apple 네이티브 경로 (Core ML + Vision)
VNDetectFaceRectanglesRequest(얼굴 검출, ANE 가속) + Create ML로 학습한 소형 분류기
조합. 전력 효율이 가장 좋고 iPhone/iPad 현장 앱으로 이식이 자연스럽다. 24시간 상시
가동 엣지 서버라는 이 실험실의 포지셔닝과 잘 맞는 장기 후보.
결론과 다음 단계
단기: 데모의 PPE 시나리오에 OWLv2 백엔드 추가(또는 교체) — 실측으로 확인된 최소 비용 개선. ✅ 적용 완료(2026-07-22): YOLO 데모의 PPE 시나리오가 이제 "person=YOLO26 + 마스크·안전모=OWLv2" 하이브리드로 동작한다. 어두운 마스크 사진이 mask wearer 2 / person 5로 판독된다(~0.5초). 중기: "YOLO 카운팅 + VLM 착용품질 판정" 하이브리드 파이프라인. 장기(실무 정확도): SHWD/MAFA 파인튜닝 또는 Apple 네이티브 2단계.
속도·정확도·구현 비용의 트레이드오프에서, 이번 실측의 교훈은 명확하다: "제로샷이 안 되면 더 큰 제로샷을 먼저 시험하라 — 파인튜닝은 그 다음이다."