객체 탐지 오탐 원인 분석 및 데이터·후처리 개선
이 글은 졸업작품으로 진행한 객체 탐지 기반 위기 상황 감지 시스템에서, 칼(흉기) 오탐이 났던 원인과 그걸 어떻게 줄였는지를 정리한 기술 회고다.
프로젝트와 동작 원리
프로젝트는 CCTV 영상에서 사람과 칼을 찾아, 관리자가 빠르게 대응할 수 있게 만드는 시스템이었다. 탐지 모델은 YOLOv11을 썼고, 데이터셋은 Roboflow로 구축·관리했다. 흉기 기준은 팀에서 15cm 이상 칼로 정했다. 서버와 카메라 쪽은 WebSocket으로 연결했고, 흉기가 감지되면 경고가 뜨도록 구성했다.
객체 탐지의 기본 원리는 단순하다. 모델이 프레임 안에서 객체의 위치와 클래스를 예측하고, 각 예측에 confidence를 붙인다. 그런데 학습 데이터에 많이 나온 시각 패턴과, 실제 화면의 방해 요소가 비슷하면 잘못된 클래스로 올라갈 수 있다. 이번 오탐도 그 지점에서 발생했다.
무엇이 문제였나
처음에는 모아 둔 이미지와 영상에서는 사람과 칼을 어느 정도 찾는 것처럼 보였다. 문제는 실제 환경에 가까운 화면이었다. LED 조명이랑 스마트폰 액정 반사광을 칼로 잡는 경우가 반복됐다. 사람 눈에는 빛 번짐인데, 모델은 bounding box를 치고 knife로 올렸다.
처음에는 데이터가 부족한가, 학습을 더 돌리면 되나, 모델을 바꿔야 하나부터 생각했다. 질문은 틀리지 않았지만 다음 액션이 구체적이지 않았다. 그래서 오탐이 난 장면을 모아 비교해 봤다. 공통점은 반짝이는 직선 패턴이었다.
칼날은 금속이라 조명 아래서 가늘고 길게 빛난다. LED 라인이나 액정 반사도 화면에서는 길고 밝은 직선으로 남을 수 있었다. 그래서 가설을 이렇게 잡았다. 모델이 칼을 배운 게 아니라, 길고 밝은 직선처럼 보이는 것에 과하게 반응하는 것 아닐까. 원인이 데이터 양 부족만이 아니라, 특징 혼동 쪽에 가깝다고 본 게 개선의 출발점이었다.
실제로 어떻게 개선했나
개선은 크게 두 갈래로 진행했다. 데이터 쪽과 후처리 쪽이다.
데이터 쪽
실제 흉기 영상을 대량으로 구하기 어려워서 모형 칼을 사용했다. 다만 사진을 많이 찍는 데만 집중하진 않았다. 오탐이 나던 조건을 의식하고 찍었다. 각도를 바꿔 찍고, 조명을 바꿔 찍고, 칼처럼 보이는 방해 요소가 있는 장면도 넣으려고 했다. Roboflow로 라벨을 관리할 때는 15cm 이상 칼이라는 기준을 팀에 맞춰 유지했다. 기준이 사람마다 다르면 같은 이미지도 누구는 knife, 누구는 배경으로 보게 되고, 그러면 오탐 분석 자체가 흔들렸다.
지금 돌아보면 데이터 증강은 숫자 불리기보다, 모델이 헷갈리는 분포를 학습 데이터에 넣는 작업에 가까웠다. 오탐이 반사광에서 났으니 그 조건이 데이터에 들어가야 가설을 검증할 수 있었다.
후처리 쪽
특정 confidence 미만 예측을 흉기로 올리지 않고 배경처럼 취급하는 로직을 넣었다. 애매한 박스까지 전부 knife로 올리면 경보가 과도하게 울렸다. 관리자 입장에서는 자주 울리는 알람이 되고, 결국 무시하게 된다. 탐지를 잘 하는 것과, 대응 가능한 수준의 알림만 울리는 것은 달랐다. 그래서 confidence threshold를 단순 하이퍼파라미터가 아니라 운영 규칙에 가까운 값으로 보게 됐다.
시스템 관점
모델 바깥도 같이 봐야 했다. 이 프로젝트는 이미지만 돌리는 실험이 아니라 실시간 영상, 통신, 알림까지 포함된 시스템이었다. 한 프레임에서 탐지가 맞아도 전달이 불안정하면 의미가 줄고, 알림이 잘 가도 오탐이 많으면 운영이 안 됐다. 그래서 개선의 기준을 학습 지표만이 아니라, 실제 모니터링에서 경보가 신뢰 가능한지로도 봤다.
정리
결과적으로 오탐을 줄이기 위해 한 일은 모델을 교체한 것이 아니었다. 오탐 사례를 모아 직선·반사 패턴이라는 원인을 잡고, 그 조건을 데이터 증강에 반영했으며, confidence 기반 후처리로 애매한 예측이 경보로 바로 나가지 않게 막았다. 라벨 정의를 고정해 둔 것도 분석과 개선을 이어 가는 데 도움이 됐다.
다음에 다시 한다면 오탐 장면을 더 체계적으로 남기고, 탐지 성능과 경보 품질을 나눠 보고, threshold를 바꿀 때마다 미탐·오탐 변화를 기록하고 싶다. 칼이 아닌 직선·반사·금속성 물체를 hard negative로 더 넣는 전략도 처음부터 잡고 시작하고 싶다.
이번 작업에서 가장 크게 남은 건, 모델이 틀렸을 때 틀렸다고만 말하지 않고 무엇과 헷갈렸는지까지 말해야 다음 실험이 시작된다는 점이었다.
'기술 회고' 카테고리의 다른 글
| [기술 회고] 실시간 경매 마감 처리와 동시성·트랜잭션 개선 (0) | 2026.07.27 |
|---|---|
| [기술 회고] 데이터 부족 환경에서의 LSTM 진행 예측 (0) | 2026.07.27 |
| [기술 회고] Segmentation 모델 실험과 성능 개선 (0) | 2026.07.27 |
| [기술 회고] 라벨링 도구 제작과 마스크 데이터 파이프라인 (0) | 2026.07.27 |
| [기술 회고] 다중 모델 파이프라인과 규칙 기반 후속 추론 (0) | 2026.07.27 |