산업 안전 객체 탐지 모델 파인튜닝
산업 현장의 안전 위반 사항(안전모 미착용, 쓰러진 작업자, 화재)을 실시간으로 탐지하기 위해 YOLOv5 모델을 파인튜닝했습니다. 수만 장의 라벨링된 이미지 데이터셋을 활용하여 특정 CCTV 환경에 최적화된 모델을 개발하고, ClearML로 실험을 관리하며 지속적으로 모델을 개선했습니다.
Architecture
동기
산업 현장에서 안전모를 안 쓰거나, 사람이 쓰러져 있거나, 불이 난 상황을 CCTV 영상에서 자동으로 잡아내는 것이 목표였습니다. 연구과제로 시작한 일입니다.
내가 담당한 트랙
데이터셋을 다루는 일과 모델 파인튜닝, 그리고 실험을 기록하는 기반을 제가 맡았습니다. 항목별 내역은 오른쪽 「주요 업무」에 있습니다.
| 트랙 | 경계 |
|---|---|
| WPF 프로그램과 추론 서버 코드 | 다른 분들이 만들었습니다. 저는 파인튜닝과 실험 관리 쪽이었습니다 |
데이터는 이미 있었습니다
입사했을 때 라벨링된 데이터셋이 이미 있었습니다. 기존 산업 현장에서 찍힌 사진 수만 장이었습니다.
그래서 제가 한 일은 데이터를 만드는 것이 아니라 그것을 학습에 쓸 수 있게 손보는 쪽이었습니다. 학습과 검증과 평가에 쓸 몫을 어떻게 가를지 정하고, 클래스마다 장수가 크게 차이 나는 것을 어떻게 다룰지 보고, 증강을 어디까지 걸지를 정했습니다. 안전모를 안 쓴 장면이나 쓰러진 사람은 정상 장면보다 훨씬 드물게 찍혀 있습니다.
과적합을 피하지 않기로 한 판단
파인튜닝을 할 때는 보통 과적합이 안 되게 신경을 씁니다. 학습에 쓴 데이터에만 잘 맞고 새로운 것에는 못 맞추는 모델이 되기 때문입니다.
이 과제에서는 그 원칙을 내려놓기로 했습니다. 카메라가 고정돼 있어서 늘 같은 각도로 같은 구역만 찍고, 그 환경 말고 다른 데서 쓸 일이 없었습니다. 볼 것이 정해져 있다면 거기에만 잘 맞는 모델이 오히려 나은 것 아닌가 하는 생각이 들었고, 그렇게 했습니다.
무엇이 더 나은 모델인지 말할 근거
파인튜닝이라고 해도 하는 일은 하이퍼파라미터를 바꿔 가며 다시 돌리는 정도였습니다. 그런데 어떤 값으로 돌렸을 때 무엇이 나왔는지가 남지 않아서, 지금 손에 있는 모델이 지난번 것보다 나은지를 말할 근거가 없었습니다.
ClearML 서버를 세워 실험마다 파라미터와 학습 곡선이 남게 했습니다. 판단할 기준을 만들고 싶었던 것입니다.
어디까지 갔습니까
만든 모델은 실제 현장에 배포돼 돌았습니다. 다만 시범사업 규모였습니다.
배운 점
파인튜닝에서 과적합을 피하라는 것은 먼저 배우는 원칙입니다. 이 과제에서 그것을 내려놓기로 한 것은 현장이 고정된 각도만 본다는 조건 때문이었는데, 그렇게 정하고 나니 무엇이 더 나은 모델인지 말할 근거가 따로 필요해졌습니다. ClearML 을 세운 것이 그래서입니다. 다만 그 서버를 쓴 사람은 저뿐이었습니다.