1.3. 객체탐지 BBOX 생성 방법
1. 라벨 가공 정책
1-1. 돌고래 (dolphin)
돌고래 라벨 가공의 경우 선박에 비해 작업자의 개인차가 발생할 여지가 컸다. 이를 최대한 줄이고자 아래의 몇가지 기본원칙에 더해 라벨링 절차를 흐름도로 작성하여 작업 가이드를 제공하였다.
가공 원칙
물보라와 돌고래가 겹쳐서 모델이 물보라를 돌고래로 인식할 것 같은 상황에선 돌고래여도 가공하지 말것
돌고래의 몸체를 예측해서 가공하지 말고 보이는 부분만 가공할 것
물이 투명해서 돌고래임이 확실하게 보이는 경우(꼬리 포함해서 보이는 경우)에는 가공할 것

1-2. 선박 (ship, jetski)
아래 원칙에 따라 선박 bbox를 생성하였다. (그림을 통한 보충 설명이 필요한경우 해당하는 자료를 첨부하였음)
fit하게 가공할 것
물보라를 포함하지 않을 것 - [그림2]
빛 반사로 선박 몸체가 구분이 안되는 경우 최대한 얇게 예측해서 가공할 것 - [그림2]
얇은 기둥 포함하지 말것 - [그림3]


2. 라벨링 진행 방법
2-1. 라벨링 도구
CVAT이라는 도구를 사용하여 객체탐지의 정답 데이터가 되는 bbox 라벨 데이터를 생성하였다.
초기엔 [그림3]의 예시에서 볼 수 있듯 이미지의 가로세로축과 평행한 AABB(Axis-Aligned Bounding Box) 형태 라벨을 부여하였으나 OBB(Oriented Bounding Box) 기반 모델의 실험을 위해 [그림4]와 같이 회전을 허용한 직사각형 형태의 라벨을 추가 생성하여 활용하였다.

2-2. 작업 절차
아래 순서로 데이터 라벨링을 진행하였다.
작업자별로 이미지를 분배하여 사전 라벨링
가공정책이 포괄하지 못하는 케이스에 대한 논의 및 가공정책 보완
본 라벨링 진행
검수자가 동일한 기준이 적용되었는지 라벨링 결과 검수
3. 예외 처리
라벨 가공정책에서 언급한 객체는 아래의 총 3종이다.
dolphin
ship
jetski
이때 ship과 jetski는 서비스 로직에서는 모두 '선박'으로 동일하게 취급하나, 객체 탐지 모델의 관점에서 ship과 jetski의 괴리가 커 단일 클래스로 보았을 때 탐지 성능이 떨어지는 문제가 발생하였다.
이 문제를 해결하기 위해 다음과 같은 과정에 따라 ship과 jetski를 라벨링 과정에서는 별도의 클래스로 분류하였다.
라벨링시 일반 선박과 소형 제트스키를 ship, jetski라는 별도의 클래스로 구분하여 라벨링
해당 정답 라벨을 기준으로 총 3가지 객체를 탐지하는 객체탐지 모델 학습
객체탐지 결과상의 jetski, ship이 동일한 클래스로 취급되도록 공통된 클래스id를 부여하는 후처리
후처리된 객체탐지 결과를 다음 파이프라인으로 전달(object tracking)
Last updated