머신러닝과 딥러닝에 대해 학습하던 중 Annotation이라는 단어가 자주 사용되어 정리를 하게 되었다. 

 

 

 

1) Annotation이란?


 사전적 정의로는 "주석"이라고 한다. 국어사전에는 다음과 같이 정리되어 있다.

 

  •  낱말이나 문장의 뜻을 쉽게 풀이함. 또는 그런 글

 프로그래밍 용어 또는 Data 측면에서 Annotation도 유사한 의미로 사용되지만, 좀 더 직관적으로 설명하자면 프로그래밍 언어에서는 코드에 대한 설명을 하기 위해 //(주석처리)를 사용하는 것이다. <그림 1>

 

&amp;amp;amp;lt;그림 1&amp;amp;amp;gt; 프로그래밍언어(C언어)에서의 주석처리

 

 그리고 Data측면 에서는 데이터에 대한 설명을 위해 Labeling을 하는 것이라고 보면 된다. Labeling이란 <그림 2>와 같이 이미지에서 객체 인식 시에 객체의 정보 즉, 메타데이터를 추가해 주는 것이라고 보면 된다. 

(Bounding_Box 위치값에 대한 라벨(Car, Person...) 표기) 

&amp;amp;amp;lt;그림 2&amp;amp;amp;gt; Data Labeling

 Annotation을 통해 상대방(프로그래머, 머신러닝 모델)이 코드나 데이터에 대해 쉽게 이해할 수 있게 만들어 주는 역할을 한다. 

 

 

 

2) Data Annotation의 종류


 Data의 측면에서 Annotation은 탐지하려는 객체를 표기하는 방식에 따라 구분지을 수 있다. 누끼 따는 것과 비슷하다.

 

① Bounding Box

 바운딩 박스는 object detection에서 가장 흔히 쓰이는 방법으로, 탐지하려는 객체에 타이트 하게 박스표기를 하고 해당 객체의 class를 구분해주는 방식이다. 대각선의 포인트를 잡아주면 되기 때문에 가장 쉽지만 데이터의 디테일이 그만큼 떨어진다.

 

 

② Polygon

 폴리곤은 의미 그대로 다각형이다. detection하려는 객체를 다각형으로 표기해준다. 레이블링(=어노테이션)에서 자세하고 디테일할수록 그만큼 좋은 데이터가 될 수 있지만, 그만큼 노동력이 많이 들어가게 된다. 

 

 

③ Point

 포인트는 이미지에서 찾으려는 객체에 대해 점을 찍어 표기하는 방식으로 점만 찍으면 됨으로 매우 쉽다. 하지만 그만큼 특징을 뽑아내는데 한정적이기 때문에, 정확하게 해당하는 데이터를 찍어주는 것이 중요하다. 찾으려고 하는 객체의 특성이 뚜렷한 경우에 효과가 좋고 이미지 안에서 객체의 수를 셀 때 유용하다. 

 

 

④Keypoint

  키포인트는 탐지하려는 객체의 모양을 알고싶을 때 데이터의 외곽선을 따줌으로써 폴리곤과 포인트 정보를 만들어 특징을 갖게 만드는 것이다. 추가적으로 포인트의 순서와 개수도 매타 데이터에 포함되기 때문에 동일 객체에 대해서는 같은 포인트를 갖는 것이 좋다.

 

 

⑤Polyline

 폴리라인은 많은 점으로 선을 그어 표기한다. 도로선 같이 시작과 끝이 없는 선을 구분할 때 사용하기 좋은 라벨링으로써 그 모양 자체로 특성을 가질 때 해당 데이터를 주로 사용한다. 예시와 같이 주로 차량 ADAS에서 자율주행을 위해 사용된다. 

 

 

⑥Cuboid

 큐보이드는 말 그대로 정육면체이다. 기존에 Bounding Box가 2차원으로 데이터를 형성하는 것이었다면, 차원을 하나 더 높여서 3차원의 데이터로 더 많은 정보를 제공할 수 있다. 자율주행 시스템에서 차량의 앞뒤 좌우를 표기하는데 매우 유용하고, 좋은 메타데이터가 많을수록 네트워크의 성능은 좋아질 수밖에 없다. 

 

 

 

 데이터 형식을 알고있으면, 추후 네트워크 목적에 따라 적절한 데이터 형식(Labeling, annotation)을 선정하는데 많은 도움이 될 것이다.  

 

 

 

*Reference 

- 네이버 지식백과 : https://terms.naver.com/entry.naver?docId=6470969&cid=42346&categoryId=42346

- 네이버 국어사전 : https://ko.dict.naver.com/#/entry/koko/e0f2adbb720242d488c38e79ad7c96b9

- https://humansintheloop.org/types-of-image-annotation/

 

 

부족하지만 읽어주셔서 감사합니다. 

'프로그래밍 > 머신러닝&딥러닝' 카테고리의 다른 글

Epoch, batch, iteration  (0) 2024.03.24
(용어 정리) Precision, Recall and Accuracy  (0) 2022.02.22

+ Recent posts