VoTT v2.1.0을 사용하여 이미지에 대한 설명(교사 데이터 제작)

기계학습을 통해 대상검측을 하는 경우 인물이나 고양이 등 일반적인 물체를 검측하려면 Amazon Rekognition 또는 Google Cloud Vision API 등의 서비스를 이용하여 기존의 학습모형을 사용하여 즉시 검측을 시작할 수 있다.한편, 이런 기존 모델이 검출할 수 없는 특수물체 등을 검출하려면 먼저 인력으로 교사 데이터를 준비해야 한다.이 작업을 가볍게 하기 위해 다양한 도구가 있는데, 이번에 마이크로소프트가 개발한 VoTT (Visual Object Tagging Tool) 를 사용하여 이미지의 주석(표시)을 진행하였다.

VoTT 설치


VoTT는 설치할 필요가 없는 웹 버전https://vott.z5.web.core.windows.net도 준비했지만 데이터의 입력과 출력이 Azure Blob Storage 또는 Bing Image Search이기 때문에 PC 로컬에 저장된 이미지를 사용할 수 없기 때문에 이번에 설치 버전을 사용합니다.
설치판은 https://github.com/Microsoft/VoTT/releases 에서 다운로드할 수 있습니다.이번에는 v2.1.0의 macOS 버전(vott-2.1.0-darwin.dmg)을 선택했다.

항목 만들기


VoTT를 시작하면 다음 화면이 표시되므로 [New Project]를 선택합니다.

표시 이름에 항목 이름을 입력합니다.이어서 데이터의 입력과 출력과 관련된 설정을 한다.먼저 입력한 이미지의 위치를 지정하려면 원본 연결의 오른쪽에 있는 연결 추가를 클릭합니다.

표시 이름에 원하는 이름을 입력하고 Provier에서 Local File System을 선택하고 Folder Path에서 가져온 이미지를 저장할 폴더를 지정합니다.하위 폴더에 저장된 이미지는 인식되지 않습니다.완료되면 연결 저장 을 클릭합니다.

마찬가지로 대상 연결에서 데이터의 출력 목적지를 지정합니다.주석의 정보는 각 이미지의 JSON 형식의 파일로 출력됩니다.설정이 완료되면 항목 저장 을 클릭합니다.

메모(태그)


항목을 작성한 후 주석(태그)을 수행하는 화면이 표시됩니다.

먼저 화면 오른쪽 상단에 있는 [TAGS] 오른쪽에 있는 + 태그를 클릭하여 태그를 만듭니다.이어 이미지에서 지정한 범위를 드래그한 후 화면 오른쪽에 있는 탭을 누르거나 탭 이름 오른쪽에 표시된 숫자 키를 누르면 선택한 영역에 탭을 추가합니다.한 영역에 여러 레이블을 설정할 수도 있습니다.
태그를 선택하고 TAGS 오른쪽의 키(🔒)태그를 클릭하면 태그 이름 오른쪽에 키가 표시됩니다.🔒)태그를 표시한 후 이미지에서 드래그하여 범위를 지정하면 자동으로 태그가 부여됩니다.또한 탭 이름을 클릭한 후 연필 버튼을 누르면 탭 이름을 편집할 수 있다.라벨 이름 왼쪽에 있는 색깔이 있는 사각형 부분을 클릭하고 연필 버튼을 누르면 라벨의 색깔을 바꿀 수 있다.또한 레이블의 색상은 VoTT의 표시에만 영향을 주고 주석의 결과에 특별한 영향을 주지 않으므로 작업에서 이해하기 쉬운 색상을 선택하면 됩니다.
기본적인 작업 절차로서 키보드의 ↓ 키를 누르면 그림이 하나하나 표시되는 동시에 그림에 지정된 범위를 드래그하고 적당한 라벨을 설정하는 작업을 끊임없이 반복한다.이것은 무미건조한 작업이지만 모델의 정밀도를 결정하는 중요한 작업이기 때문에 인내심을 가지고 계속할 수 밖에 없다(덧붙여 말하면 Amazon SageMaker Ground Truth를 사용하면 이 번거로운 일을 외부의 공공팀에 위탁할 수도 있다).

출력 데이터 형식


주석을 달면 프로젝트의 데이터 출력 목적지에 지정된 폴더에 JSON 파일이 차례로 생성됩니다.이 파일들은 각 이미지에 따라 다음과 같은 형식으로 출력됩니다.
{
    "asset": {
        "format": "jpg",
        "id": "3d22a9b3f18397dc624a04b4f7b86d66",
        "name": "output_0720.jpg",
        "path": "file:/Volumes/Video/screenshots/20130826/20130826161633/output_0720.jpg",
        "size": { "width": 1920, "height": 1080 },
        "state": 2,
        "type": 1
    },
    "regions": [
        {
            "id": "UIepmXSfA",
            "type": "RECTANGLE",
            "tags": ["blue-sign"],
            "boundingBox": {
                "height": 202.00306748466252,
                "width": 321.04037267080747,
                "left": 586.3250517598342,
                "top": 241.0433282208588
            },
            "points": [
                { "x": 586.3250517598342, "y": 241.0433282208588 },
                { "x": 907.3654244306418, "y": 241.0433282208588 },
                { "x": 907.3654244306418, "y": 443.04639570552143 },
                { "x": 586.3250517598342, "y": 443.04639570552143 }
            ]
        }
    ],
    "version": "2.1.0"
}
regions[].boundingBox에는 선택한 영역의 너비와 높이, 왼쪽 위의 거리가 기록되어 있으며, 해당 영역에 해당하는 레이블 이름은 regions[].tags 에 기록되어 있습니다.실제로 이러한 주석 정보를 사용하여 훈련하면 필요에 따라 다른 형식으로 전환됩니다.

좋은 웹페이지 즐겨찾기