1.3. 객체탐지 BBOX 생성 방법

1. 라벨 가공 정책

1-1. 돌고래 (dolphin)

돌고래 라벨 가공의 경우 선박에 비해 작업자의 개인차가 발생할 여지가 컸다. 이를 최대한 줄이고자 아래의 몇가지 기본원칙에 더해 라벨링 절차를 흐름도로 작성하여 작업 가이드를 제공하였다.

  • 가공 원칙

    • 물보라와 돌고래가 겹쳐서 모델이 물보라를 돌고래로 인식할 것 같은 상황에선 돌고래여도 가공하지 말것

    • 돌고래의 몸체를 예측해서 가공하지 말고 보이는 부분만 가공할 것

    • 물이 투명해서 돌고래임이 확실하게 보이는 경우(꼬리 포함해서 보이는 경우)에는 가공할 것

[그림1]

1-2. 선박 (ship, jetski)

아래 원칙에 따라 선박 bbox를 생성하였다. (그림을 통한 보충 설명이 필요한경우 해당하는 자료를 첨부하였음)

  • fit하게 가공할 것

  • 물보라를 포함하지 않을 것 - [그림2]

  • 빛 반사로 선박 몸체가 구분이 안되는 경우 최대한 얇게 예측해서 가공할 것 - [그림2]

  • 얇은 기둥 포함하지 말것 - [그림3]

[그림2]
[그림3]

2. 라벨링 진행 방법

2-1. 라벨링 도구

CVATarrow-up-right이라는 도구를 사용하여 객체탐지의 정답 데이터가 되는 bbox 라벨 데이터를 생성하였다.

초기엔 [그림3]의 예시에서 볼 수 있듯 이미지의 가로세로축과 평행한 AABB(Axis-Aligned Bounding Box) 형태 라벨을 부여하였으나 OBB(Oriented Bounding Box) 기반 모델의 실험을 위해 [그림4]와 같이 회전을 허용한 직사각형 형태의 라벨을 추가 생성하여 활용하였다.

[그림4]

2-2. 작업 절차

아래 순서로 데이터 라벨링을 진행하였다.

  • 작업자별로 이미지를 분배하여 사전 라벨링

  • 가공정책이 포괄하지 못하는 케이스에 대한 논의 및 가공정책 보완

  • 본 라벨링 진행

  • 검수자가 동일한 기준이 적용되었는지 라벨링 결과 검수

3. 예외 처리

라벨 가공정책에서 언급한 객체는 아래의 총 3종이다.

  1. dolphin

  2. ship

  3. jetski

이때 shipjetski는 서비스 로직에서는 모두 '선박'으로 동일하게 취급하나, 객체 탐지 모델의 관점에서 ship과 jetski의 괴리가 커 단일 클래스로 보았을 때 탐지 성능이 떨어지는 문제가 발생하였다.

이 문제를 해결하기 위해 다음과 같은 과정에 따라 ship과 jetski를 라벨링 과정에서는 별도의 클래스로 분류하였다.

  • 라벨링시 일반 선박과 소형 제트스키를 ship, jetski라는 별도의 클래스로 구분하여 라벨링

  • 해당 정답 라벨을 기준으로 총 3가지 객체를 탐지하는 객체탐지 모델 학습

  • 객체탐지 결과상의 jetski, ship이 동일한 클래스로 취급되도록 공통된 클래스id를 부여하는 후처리

  • 후처리된 객체탐지 결과를 다음 파이프라인으로 전달(object tracking)

Last updated