안녕하세요 개발팀 Aiden 입니다.
개발 기술과 관련해서 어노테이션에 대해 살펴보며 직접 사용해 보고 후기를 남기려고 합니다.
2D 이미지와 영상, 3D 파일에 대해 영역을 지정하고 해당 영역에 대해 정보를 입력할 수 있다. 서비스를 이용하기 위해서는 사전 설치가 이뤄져야 한다.
Git을 통해 파일을 다운로드 받고 도커 등을 설치해 실행시킬 수 있다.
파일의 타입은 image, 2d Video, 3D Object 등의 타입이 있으며, 라벨링할 타입도 정해야 한다. 예를 들어 사각형, 다각형, 3D, 라인 등 다양한 타입을 지정할 수 있다. 이미지와 라벨 타입을 지정하면 작업할 Item Lst, Categories, Attributes 등 파일을 업로드하여야 하는데, 각각 yml, json 확장자로 업로드해야 프로젝트 작업이 가능하다. 이미지의 경우에는 바로 작업 가능하나, 영상의 경우에는 1프레임씩 yml 확장자로 변환해야만 라벨링 작업이 가능한데,
python의 cv2를 이용해 프레임을 추출하고 생성된 이미지 파일을 모아서 프로젝트에 불러오기 위한 폴더 안에 이동시켜 주면 된다.
scalabel 후기: 직접 데스크톱에 scalabel을 사용해보기까지에 대해 설치하는 시간을 꽤나 소요하였다. 초기에 설치 이후 부터는 프로젝트를 작업하는데 어려움은 없었으나, 카테고리와 속성등을 프로젝트 내에서 직접 추가 할 수가 없었고 프로젝트를 생성할 때 Categorise 및 Attributes 파일을 업로드하여야만 업데이트가 가능하니 살짝 불편함이 있었다. 또한 mp4 등 영상 파일을 직접 업로드할 수는 없고 yml 또는 json 파일로 직접 변환하여 진행해야 하는 번거로움이 있다.
이미지 라벨링에 적합한 페이지
별 다른 설치없이 사용해볼 수 있고 소스코드도 제공하고 있는 프로그램으로, 이미지 및 영상에 라벨링은 물론 영상 자막까지 작업할 수 있는 프로그램이다. 설치에 대한 허들이 높지가 않아서 접근하기가 굉장히 간단해 보이고 라벨을 바로 바로 추가할 수 있는 장점이 있다. 또한 영상 확장자를 yml 확장자로 바꾸지 않더라도 바로 영상으로 불러와 라벨링하기 편하다.
영상 라벨링에 적합한 페이지
다만 영상 라벨 작업은 다른 페이지에서 진행되어야 하는 번거로움이 있다. VIA 첫번째 라벨링 페이지에서는 영상을 불러올 수는 있으나 1프레임만 라벨링이 가능하고 그 다음 프레임까지 라벨을 부여하려면 다시 추가 해야한다. 따라서 첫번째 라벨링 페이지는 이미지 라벨링에 특화된 페이지며, 영상 라벨링 페이지는 위처럼 바 형태로 라벨 구간을 선택할 수 있다.
영상 자막 페이지
영상 자막 페이지도 함께 제공되고 있다. 하단에 위치한 타임라인에서 구간을 편집할 수 있고, 왼쪽에 있는 텍스트 리스트에서 자막을 편집할 수 있다.
재밌게도 말풍선을 겹쳐서 동일한 영상 구간에 여러 자막을 추가할 수 있다는 것이다. 다만 자막이 노출될 시간을 세밀하게 조절하는 데에는 다소 무리가 있어 보이는 게 텍스트 리스트에서는 오로지 텍스트만 수정할 수 있고 영상 시간은 컨트롤할 수 없기 때문이다. 결국 아래 타임라인에서 마우스 드래그앤드롭으로 조절하거나 단축키(L, R)로 조절하는 수 밖에 없다. 자막 추가는 단축키를 활용하고 있다(a). vtt파일로 자막을 다운로드 받을 수 있고 jason파일로도 export가 가능하다.
같은 구간에 여러 자막이 추가된 경우
같은 구간에 여러 자막이 추가되어 있는 경우에는 플레이어 내 보이는 것처럼 위로 쌓이는 구조이며, 타임라인에서는 레이어 형태로 겹쳐 보이게 되고, 해당 말풍선에 active시 맨 상단 레이어로 올라온다.
VIA 후기: 별다른 설치없이 소스 다운로드만으로 로컬 웹브라우저에서 바로 활용이 가능해 접근이 굉장히 편했다. 또한 도구를 나열해 굉장히 단순하게 라벨을 추가할 수 있어 어노테이션을 쉽게 접할 수 있었다. 또한 영상 내 자막 기능까지 추가할 수 있어서 하나의 프로그램에서 다양하게 사용할 수 있었다. 다만 이미지와 영상에 대한 라벨링은 다른 페이지로 접근해야 하는 번거로움이 있었지만, 설치없이 바로 페이지 이동하여 활용할 수 있기 때문에 큰 단점이라고 생각하지 않는다.
3. Label Studio
Label Studio를 처음 설치할 때 비교적 빠르게 설치할 수 있었고 영상에 라벨링하기에도 굉장히 편리한 UI를 제공하고 있다. 생성한 라벨을 키프레임 형태로 제공해 프레임 단위로 위치를 이동시킬 수 있어서 다른 어노테이션 프로그램보다 빠른 학습이 가능했다. 또한 한 개의 프로젝트 안에서 여러 자료에 대한 라벨링이 가능했다.
라벨링 인터페이스도 다양하게 제공하고 있는데, 이미지에 폴리곤 타입의 라벨링과 마스크, 분류 등이 가능하고, 텍스트의 자연어 처리, 오디오, 영상에도 분류 또는 구간별로 라벨링이 가능하다는 것이다.
다른 사용자와 공통 사용 시, 사용자의 작업이 실시간으로 반영되지 않고 변경한 사용자가 Update를 누르고, 나머지 사용자가 F5 등 새로고침을 해야 업데이트된 작업물이 보이게 되며 누가 해당 프로젝트에 온라인되어 있는지 파악할 수 없는 협업에서의 번거로움이 예상된다. 입력한 라벨에 대해서는 json파일로 export할 수 있다.
Label Studio 후기: 하나의 라벨링 안에서 세부적인 분류 또는 체크박스, 라디오 등의 타입 설정이 되지 않고 라벨링의 공통사용은 이뤄지지 않지만 다른 어노테이션 프로그램보다 레이아웃과 기능, 서비스의 구성이 정리가 잘 되어 있어 프로그램을 활용하는 데 큰 어려움이 없었다. 2인 이상의 협업이 이뤄진다면 상호간 소통이 중요해 보인다.
4. MakeSense
MakeSense는 웹에서 바로 라벨링 작업을 진행할 수 있어 접근이 상당히 쉬웠다. 이미지로만 구성된 콘텐츠에 한해서 라벨링이 가능했고 다른 사용자와의 협업은 불가능했다. 또한 라벨 영역에 대해서 Rect, Point … 등이 있는데, 이를 모두 볼 수 없고, 선택한 타입에 대해서만 확인이 가능한 점이 불편했다.
사진처럼 폴리곤에 라벨이 등록되어 있음에도 이미지 상에서는 활성화되어 있는 사각형 라벨만 보여지고 있다. Export할 때에도 라벨 타입별로 내보내기 뿐이어서 여러 타입을 포함할 수가 없는 것으로 확인된다.
MaskSense 후기: 이미지 파일에 라벨링하는 작업이 있을 경우 신속하게 활용하기 좋은 서비스로 생각한다. 웹사이트에 접근 후 바로 사용할 수 있으니 별도의 설치도 없을 뿐더러 굉장히 간단한 구성으로 되어 있기 때문에 비교적 빠른 학습으로 사용할 수 있었다.
CVAT도 웹페이지에서 바로 라벨링이 가능한 서비스이며, 로그인을 통해 프로젝트별 그리고 task별로 라벨링 작업이 가능하다.
프로젝트를 생성하면 하단에 Task를 여러 개 추가할 수 있다. Task 안에서도 job을 추가할 수 있다.
라벨을 추가하기 전 포인트를 몇개를 찍을건지에 대해서 미리 선택 후 라벨을 추가할 수 있는데, 다양성을 주는 기능은 좋아보이지만 빈번히 선택해줘야 하는 번거로움이 있어서 다소 불편하다. 그 외에 3D 박스 라벨링도 가능한 점이 마음에 들었다.
Ai를 이용한 영역 설정도 가능하다. 영역을 설정한 객체를 포인트로 찍으면 자동으로 영역을 잡아주며 라벨링해준다.
영상 파일에도 라벨링을 할 수는 있지만 영상에 특화된 UI 제공은 하지 않는 것으로 보인다. 예를 들어 키프레임 단위로 라벨링이 진행되어야 할텐데 이를 지원하는 기능을 찾을 수가 없었다. 다른 어노테이션 프로그램과 마찬가지로 영상타입의 경우에는 타임라인이라도 크게 나왔어야 하지 않을까 싶다. 예를 들어 250 프레임에 라벨링이 되었다면, 251프레임으로 넘어갔을 때 해당 라벨링이 사라지고, 심지어 몇 번째 프레임에 라벨링 되어 있는지 직관적으로 알 수 없었다.
다만 계정 업그레이드를 통해 AI로 피사제 트래킹해주는 기능을 사용할 수 있다.
CAVT 후기: 다른 웹브라우저에서 사용하는 어노테이션과 마찬가지로 쉽게 접근할 수 있어서 좋았고, 디자인 툴을 다루는 듯한 UI를 제공해 왼쪽 도구모음에서 빠르게 라벨링할 수 있음이 가장 편했다. 아쉬운 점은 비디오 영상의 라벨링도 제공하고 있지만 큰 비중이 없어보이는 비디오 라벨링 도구를 제공하고 있다는 점이다.