본문 바로가기
Web

[Object Labeling] 동영상/이미지 자동 Object Detection, Labeling 툴 MS VoTT 시작하기, 간단 사용법 (데이터 라벨링, 머신러닝)

by 도도팩토리 2020. 7. 7.
반응형

MS VoTT (Visual Object Tagging Tool)


  • AI 기술을AI 기술을 활용한 딥러닝 시스템에서는 안정적이고 정확도 높은 학습을 위해서 대량의 표본 데이터가 필요하다. 하지만 단순히 데이터가 많은 것이 중요한 것이 아니라, 지도 학습을 위해서 데이터가 학습이 가능한 형태로 정제시키는 과정이 필요한데 이처럼 학습 데이터에 특정 값을 부여해 주는 과정을 데이터 라벨링 이라고 한다.

  • 하지만, 데이터 라벨링 과정은 인력이 필요하게 되고 이에 따라서 비용이 많이 들여, 시간 또한 오래 걸린다.

    1.  안정적인 학습을 위한 대량의 데이터가 필요하며, 단기간 내에 데이터를 수집하는 것은 쉽지 않다.

    2. 시간을 포함한 많은 비용이 든다. 또한 해당 산업 분야에 넓은 배경지식을 갖춘 인재 풀이 필요하다.

    3. 데이터 라벨링 작업자가 많아질수록 일관되고 정확한 라벨링 작업이 어려워진다. 개개인의 판단에 따라 라벨링 결과가 달라질 수도 있기 때문이다.

    4. 한국어의 특성을 반영한 라벨링이 어렵다. 영어와 한국어는 문장의 구조 자체가 다르기 때문에 데이터 라벨링의 방식이 다를 수도 있다.

오늘 알아볼 Vott(Visual Object Tagging Tool)는 MS에서 개발한 Open source annotation and labeling tool이며, TypeScript로 작성된 React + Redux Wep Application이다. 프로젝트 소스코드는 아래 링크에서 확인해 볼 수 있다.

 

MS VoTT :  https://github.com/microsoft/VoTT

 

MS Vott는 대표 이미지와 같이 자료처리 시스템과 학습시스템에서 여러 단계에 걸친 과정을 한번에 처리할 수 있는 파이프라인을 제공하며, 기본적으로 아래 기능들을 제공한다.

  • 이미지 혹은 비디오(프레임 단위)에 라벨링을 하는 기능. 

  • 로컬 또는 클라우드 스토리지 제공자에서 데이터셋을 import할 수 있음

  • 라벨링 된 데이터를 로컬 또는 클라우드 스토리지 제공자로 export할 수 있음.

또한 Default 학습 모델로 기초적인 데이터 라벨링은 자동으로 처리하는 것 또한 가능하다. 즉, 정확도는 높지 않지만 기본적인 Auto Detection이 가능하다.

 

 

 

MS Vott 시작하기.


우선 VoTT를 실행하기 위해서는 10.x, Dubnium 이상의 Node.js 버전과 NPM을 요구한다. 

10.x 버전의 Node.js 버전을 설치하기 위해서는 터미널에 아래와 같은 커맨드를 입력하면 된다. node를 설치할 경우 npm은 자동으로 함께 설치된다.

curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
apt install nodejs

 

 

설치가 완료되면 아래와 같이 node --version 커맨드와 npm --version 커맨드를 입력하여 정상적으로 설치가 완료되었는지 확인해보자.

 

첫번째로, 터미널에 아래의 명령어를 입력하여 Git 레포지토리에 있는 MS VoTT 소스코드를 가져온다.

git clone https://github.com/Microsoft/VoTT.git

 

두 번 째로, npm ci 커맨드를 입력하여 package-lock.json 파일을 바탕으로 해당 위치에 패키지를 설치한다.

패키지가 정상적으로 설치 된 모습.

마지막으로 npm start 커맨드를 입력하면 Electron으로 하나, 웹 브라우저에서 하나 해서 총 2개의 VoTT가 실행되는 것을 확인할 수 있다.

둘의 가장 큰 차이점으로는 Electron은 로컬 프로젝트를 만들 수 있으며, 데이터 또한 로컬 데이터를 import, 로컬로 export 하는 것이 가능하다. 하지만 웹 브라우저로 실행하게 되었을 때에는 로컬 스토리지 기능은 지원하지 않는다

 

 

프로젝트 생성하기.


'새로운 프로젝트'를 선택하여 테스트 프로젝트를 로컬에 생성해보자. * 표시된 부분은 필수로 입력하고 인풋 데이터가 비디오라면 비디오를 몇 프레임 단위로 자를 것인지 초당 프레임을 설정한다. 아래의 태그는 라벨링 할 태그들 ('dog', 'car', 'people' 등)을 프리셋 할 수 있다. 

 

 

소스 연결 - Add Connection

소스 연결 - Add Connection에 들어가 인풋 데이터(이미지 혹은 비디오)를 받아 올 소스 공급자를 선택한다. Azure Blob에 저장되어 있는 데이터를 가져오거나, Bing Image Search API를 연동하여 쿼리를 날려 원하는 데이터들을 가져올 수 있다. 테스트를 위하여 공급자를 '로컬 파일 시스템'으로 설정하고 input 데이터들이 들어있는 폴더의 경로를 설정해준다.

 

 

대상 연결 - Add Connection

마찬가지로 대상 연결 - Add Connection에서 output 데이터를 저장할 Connection을 위와 같은 방식으로 공급자를 로컬 파일 시스템으로 설정한 후, output데이터를 저장할 폴더를 설정해준다.

 

 

다음과 같이 소스 연결(input), 대상 연결(output) 폴더 설정을 완료한 후, '프로젝트 저장'을 눌러 새로운 프로젝트를 시작한다.

 

 

프로젝트를 시작하면 input으로 설정하였던 로컬 시스템 폴더에 있는 이미지들을 불러오게 된다. (비디오라면 처음 설정했던 초당 프레임 단위로 불러오게 된다.)

 

 

자동 데이터 라벨링을 위하여 좌측 메뉴에 있는 'Active Learning' 탭(학사모 모양)을 들어가면 '자동 감지'가 비활성화되어있는데, 이를 활성화해주고 모델 제공자를 '미리 학습된 Coco SSD'로 설정하여준다. 이때 더 높은 정확도를 가지고 있는 모델이 있다면, 사용자 정의 모델을 적용시켜 자동 데이터 라벨링의 정확도를 높일 수 있다.

 

 

위 단계의 설정을 저장하면 '미리 학습된 Coco SSD' 모델에 따라서 이미지 속의 Object들을 자동으로 감지하여 태그 생성부터 라벨링까지 자동으로 잡아주는 것을 확인할 수 있다. 하지만 고도로 학습된 모델이 아니기 때문에 데이터 라벨링의 정확도가 다소 떨어진다.

 

 

데이터들을 보면서 부정확한 라벨링이 있다면 사용자가 직접 태그를 추가하고 잘못 지정된 태그를 바꿀 수 있다. 이전 단계에서 Cat으로 설정된 데이터를 해당 영역 박스를 클릭하고 숫자 '2'를 눌러 'Cat' 라벨을 해제하고 다시 숫자 '1'을 눌러 'Dog'라는 태그로 재 설정이 가능하다.

 

 

라벨링 작업이 끝난 데이터들은 좌측 메뉴의 '내보내기 설정'에서 맨 처음 단계에서 설정한 output폴더에 다양한 형태로 오브젝트의 라벨, 좌표값, 원본 이미지 정보 등을 포함한 데이터를 추출해 낼 수 있다.

 

 

VoTT에서는 다음과 같은 output 데이터 포맷을 지원한다. 사용자의 용도에 맞게 라벨링 된 데이터들을 추출하고 지도 학습 모델을 만들어서 이후 다시 input데이터들을 불러왔을 때 자동 데이터 라벨링에 대한 정확도를 올릴 수 있다.

반응형