1. CVAT 소개
딥러닝 프로젝트를 진행하려다 보면, 모델이 없다기 보다는 메모리의 한계이거나 데이터가 없어서 제한되는 경우가 많습니다. 여기서는 객체 탐지, 특히 OCR을 수행하기 위한 데이터를 만드는 여정의 맛보기를 공유하고자 합니다.
CVAT는 Computer Vision Annotation Tool의 약자로 컴퓨터 비전 알고리즘용 데이터 라벨링(원래 발음은 레이블링이지만, 통상적으로 많이 쓰는 표현 채택) 도구 입니다. Open CV처럼 Intel에서 개발된 오픈 소스 기반의 이미지 및 비디오 라벨링을 지원하기 때문에 CV 작업을 위해 활용이 가능합니다.
CVAT는 docker를 통해 사용할 수 있지만, 편의를 위해 웹으로 사용했으며 Google이나 GitHub 계정이 있으면 쉽게 로그인할 수 있습니다. 웹용 애플리케이션은 아래 링크를 통해 접근할 수 있습니다.
Computer Vision Annotation Tool
Computer Vision Annotation Tool
app.cvat.ai
2. Annotation 진행하기
2.1. Task 생성하기
처음 로그인을 하게 되면 아래와 비슷한 창이 나옵니다. 데이터를 생성하기 위해서는 Projects 또는 Tasks에서 생성해줘야 하는데, 여기서는 Tasks에서 생성하도록 하겠습니다. 아래 창에서 우측 상단의 "+" 박스를 클릭합니다.
![](https://blog.kakaocdn.net/dn/cZy4mj/btsKzhp8lTs/aIBLMsaRlmdgmrp0JnSMYk/img.png)
그러면 새로운 task를 생성하기 위한 팝업이 나옵니다. Name / Labels는 필수로 지정해줘야 하고, 라벨링을 진행할 데이터를 업로드할 수 있습니다. OCR이기 때문에 Labels는 text 한개만 지정하고, 색은 빨간색으로 선택했습니다. (스포이드로 선택 가능) 그리고 필수는 아니지만, "Add an attribute" 버튼을 클릭해서 박스의 글자를 기재하는 transcription도 추가했습니다.
![](https://blog.kakaocdn.net/dn/kThPp/btsKzyZqh80/cSlhQQTsIoEdoCjN07Mib0/img.png)
위에 세팅이 끝나고 Continue를 누르게 되면, 제가 지정한 Label이 나오게 되는데요. Raw 탭을 클릭하면, 리스트와 딕셔너리 형태로 표현되는 것을 확인할 수 있습니다.
![](https://blog.kakaocdn.net/dn/nrwyo/btsKzxlTw8J/cpJ9lW5xo1VekmL5BPE4Rk/img.png)
이렇게 완료하고 Submit 버튼을 누른 후 좌측 상단 탭에 있는 Jobs로 이동하면, 아래 이미지처럼 잘 올라가 있는 것을 확인할 수 있습니다.
![](https://blog.kakaocdn.net/dn/cc6jJL/btsKA9cMVZL/aIC9HAeI919kzUgFv6BZiK/img.png)
2.2. Annotation 수행하기
잘 저장한 task에 대해서 데이터 라벨링을 진행해보겠습니다. Jobs에서 해당 프로젝트로 이동하면, 아래와 같은 창이 나오게 되는데, 사각형의 형태로 라벨링을 진행하려고 합니다. 가이드라인은 임의로 아래와 같이 수립했습니다.
- 모든 글자 객체는 사각형만 허용 (즉, 4개 점 이상 허용x)
- 일정하게 줄글 형태로 이어지기 때문에 최대한 직사각형
- 다만, 휘어짐이 심해서 직사각형으로 할 경우 겹치는 영역이 많을 경우 일반 사각형 허용
annotation은 그림판처럼 좌측에서 선택할 수 있습니다. 여기서 제가 사용한 것은 직사각형 모양과 오각형 모양(Polygon)을 사용했습니다.
![](https://blog.kakaocdn.net/dn/crwCFR/btsKAJk9U7B/TwzBFbGZFcF1Fra5oklWV0/img.png)
버튼을 클릭해서 사각형을 잘 그려보면 (직관적으로 그릴 수 있습니다), 사각형이 잘 생성된 것을 확인할 수 있고, 제가 만들고 싶었던 transcription이라는 attribute를 default 화살표를 누르면 추가로 확인할 수 있습니다. 이를 잘 입력해줍니다.
![](https://blog.kakaocdn.net/dn/bfWZcP/btsKzzjL7Rp/w6dGoms57iSQKK0JeoWdkK/img.png)
이러허게 여러 개를 반복해서 만들면 아래처럼 만들 수 있습니다.
![](https://blog.kakaocdn.net/dn/cjGxtZ/btsKBJLJ70L/JZGSUlFJWDHVEms1BCbKdk/img.png)
2.3. dataset 가져오기
일련의 작업을 마무리하고, 저희가 원하는 데이터 포맷으로 가져와야 할 것 입니다. 이를 수행하기 위해선 좌측 상단의 'Menu'를 클릭해서 'Export job dataset'을 누르면 됩니다. 저장하려는 이름과 데이터 포맷을 선택하고 OK 합니다.
![](https://blog.kakaocdn.net/dn/Po8sR/btsKzFqIkMd/f9RvRiTVsUhVjzxPWdnAL1/img.png)
여기서 제가 잘 몰라서 헤맸던 부분인데, 여기서 다운로드는 시스템 경로에 지정된 폴더에 자동으로 저장되지 않습니다. 여러번 눌러도 잘 저장되지 않았는데 CVAT에서는 한번 zip 파일로 만들어주고 이를 수동으로 저장하는 형태입니다. 이러한 실수를 피하기 위해서는 아래 이미지 같은 알림이 뜰 때 "here"를 클릭하거나 Requests 탭으로 직접 이동해야 합니다.
![](https://blog.kakaocdn.net/dn/INk4K/btsKz26Tc0S/Jolk83p8vKcvSkEjIneyb0/img.png)
그렇게 이동하면 아래처럼 제가 요청했던 작업들을 전체적으로 조회할 수 있는데, 가장 위에 있는 Export Annotations의 ...을 클릭해 다운로드해주면 됩니다.
![](https://blog.kakaocdn.net/dn/cmuPLK/btsKzjatIcw/KJ0OD8mTZjE9kGYnmb7E2K/img.png)
저장한 압축파일을 풀고, json을 확인해보니 잘 입력된 것처럼 보입니다. (실제로 처음 다운로드 받았을 때는 한 줄로 표기되어있어서 보기 편하도록 일부 수정했습니다)
![](https://blog.kakaocdn.net/dn/9n7SB/btsKAuIRAw4/eZUulbkF7JmMGeqrkF4il1/img.png)
'Tools' 카테고리의 다른 글
[Docker] Docker 주요 개념 및 CLI 기본 활용 정리 (0) | 2024.12.17 |
---|---|
VS Code에서 파이썬 가상환경 활성화 및 비활성화하기 (0) | 2024.12.12 |
[QGIS] 서울 4대문 CSV 좌표 업로드 및 바운더리 형성 | 포인트를 폴리곤으로 변경하기 (0) | 2022.06.20 |
[QGIS] 프로젝트 시작 + 베이스맵 설치 | Open Map Street (OMS), TMS for Korea (카카오맵, 네이버맵 etc) (0) | 2022.06.13 |
[Brightics] 각국 증시(주가지수)의 성과 비교하기_Normalization (0) | 2020.07.10 |