YOLO Vision 2026:

LabelMe 주석을 YOLO 및 Ultralytics Platform으로 내보내기#

LabelMe오픈 소스 Python 애플리케이션을 제공하는 오프라인 이미지 주석 도구입니다. Ultralytics Platform에서 구성할 라이브 LabelMe 연결이나 API 키는 없습니다. 전체 통합은 로컬 워크플로로 진행됩니다. LabelMe에서 주석을 작성하고, LabelMe Toolkit으로 LabelMe JSON 주석을 YOLO 형식으로 변환한 다음, 결과 ZIP을 Platform 데이터셋으로 업로드합니다.

1. LabelMe에서 이미지에 주석 작성#

데스크톱 앱 또는 오픈 소스 Python 패키지를 사용하여 LabelMe를 설치한 다음, 이미지가 포함된 디렉터리를 엽니다. LabelMe는 각 이미지의 주석을 해당 이미지와 일치하는 JSON 파일에 저장합니다.

이 가이드의 YOLO detection 워크플로에서는 각 객체 주위에 직사각형을 그리고 클래스 이름을 할당합니다. LabelMe 시작 가이드에서는 이미지 열기, 도형 그리기, 주석 저장 방법을 다루며, LabelMe 데이터셋 가이드에서는 완전히 주석이 작성된 데이터셋을 검토하고 준비하는 방법을 다룹니다.

소스 디렉터리에는 이미지와 LabelMe JSON 파일이 포함되어 있어야 합니다.

your_dataset/
├── image_001.jpg
├── image_001.json
├── image_002.jpg
└── image_002.json

2. LabelMe Toolkit 설치#

LabelMe의 Toolkit 설치 가이드에 따라 LabelMe Toolkit을 설치합니다. Toolkit과 해당 내보내기 작업은 로컬에서 실행됩니다.

내보내기에는 LabelMe Pro가 필요합니다

export-to-yolo은 LabelMe Pro Toolkit의 일부이며, 설치 프로그램을 다운로드하려면 LabelMe에 로그인해야 합니다. 이는 LabelMe 제품의 요구 사항이며, 생성된 ZIP은 모든 Platform 요금제에서 업로드할 수 있습니다.

설치를 확인한 다음 소스 데이터셋에서 발견된 모든 레이블을 나열합니다.

labelmetk --version
labelmetk list-labels your_dataset/

내보내기 전에 출력을 검토합니다. --class-names에서 생략된 레이블은 건너뛰며, 입력한 순서가 YOLO 클래스 ID 순서가 됩니다.

3. YOLO 형식으로 내보내기#

소스 디렉터리와 쉼표로 구분된 클래스 이름 목록을 사용하여 export-to-yolo을 실행합니다.

labelmetk export-to-yolo your_dataset/ --class-names crack,normal

list-labels에서 반환된 레이블로 crack,normal을 대체합니다. LabelMe는 결과를 your_dataset.export/에 기록합니다.

your_dataset.export/
├── classes.txt
├── images/
│   ├── image_001.jpg
│   └── image_002.jpg
└── labels/
    ├── image_001.txt
    └── image_002.txt

classes.txt은 YOLO 레이블 파일에서 사용된 순서와 동일한 순서로 클래스 이름을 보존합니다. 내보내기 결과의 루트에 그대로 유지합니다.

이 워크플로에서는 detection 데이터셋이 생성됩니다

LabelMe Toolkit은 직사각형을 YOLO bounding box로 내보냅니다. 또한 polygon과 mask를 축에 평행한 bounding box로 축소하므로 export-to-yolo은 segmentation geometry를 보존하지 않습니다. 이 워크플로로 detection 데이터셋을 준비할 때는 직사각형을 그립니다.

4. ZIP 아카이브 생성#

디렉터리 자체가 아니라 your_dataset.export/내용을 압축합니다. macOS 또는 Linux에서는 다음을 실행합니다.

cd your_dataset.export
zip -r ../your_dataset.zip classes.txt images labels

Windows PowerShell에서는 다음을 실행합니다.

Compress-Archive -Path .\your_dataset.export\* -DestinationPath .\your_dataset.zip

업로드하기 전에 ZIP을 열고 classes.txt, images/, labels/가 루트에 있는지 확인합니다. 추가 your_dataset.export/ 래퍼가 있으면 Platform에서 루트 클래스 목록을 찾을 수 없습니다.

5. Ultralytics Platform에 업로드#

  1. Settings > Integrations > LabelMe를 엽니다.
  2. Upload export를 클릭합니다.
  3. your_dataset.zip을 업로드하고 데이터셋 생성을 완료합니다.
  4. 처리가 완료될 때까지 기다린 다음 이미지, 클래스 및 주석을 검토합니다.
  5. 동일한 워크스페이스에서 주석 편집, 모델 학습, 배포를 수행합니다.

Ultralytics Platform LabelMe Dataset Import

LabelMe와 YOLO 내보내기는 완전히 오프라인으로 유지됩니다. 업로드 대화 상자에서 선택한 ZIP 파일만 Platform으로 전송됩니다.

문제 해결#

  • 클래스 이름이 class0, class1 등으로 지정됩니다: classes.txt가 ZIP 루트에 있는지 확인합니다.
  • 일부 주석이 누락됩니다: labelmetk list-labels your_dataset/을 다시 실행하고 --class-names에 필요한 모든 레이블을 포함합니다.
  • Polygon이 box로 변환됩니다: 이는 LabelMe의 export-to-yolo에 문서화된 동작으로, 직사각형이 아닌 도형을 bounding box로 변환합니다.
  • 데이터셋에 이미지가 없습니다: 내보낸 images/ 디렉터리가 ZIP에 포함되어 있는지 확인합니다.
  • Platform에서 클래스를 찾을 수 없습니다: 아카이브에서 외부 디렉터리를 제거하여 classes.txt, images/, labels/가 최상위 항목이 되도록 합니다.

전체 로컬 워크플로는 LabelMe의 YOLO 학습 가이드export-to-yolo 레퍼런스를 참조하세요.

FAQ#

  • 아니요. LabelMe와 내보내기는 로컬에서 실행되며, 업로드하는 ZIP 파일만 Platform으로 전송됩니다. export-to-yolo 명령어는 LabelMe 요구 사항인 LabelMe Pro Toolkit의 일부이지만, 생성된 ZIP 파일은 모든 Platform 요금제에서 업로드할 수 있습니다.

  • 이 워크플로에서는 불가능합니다. LabelMe Toolkit은 다각형과 마스크를 축 정렬 경계 박스로 축소하므로 결과는 항상 탐지 데이터셋이 됩니다. 이 내보내기를 위해 데이터를 준비할 때는 사각형을 그리세요.

  • Platform은 ZIP 루트에 있는 classes.txt에서 클래스 이름을 읽습니다. classes.txt, images/, labels/이 최상위 항목이 되도록 폴더 자체가 아니라 내보내기 폴더의 내용을 압축하세요.

  • --class-names에 전달된 레이블만 나열한 순서대로 포함됩니다. labelmetk list-labels을 먼저 실행하고 유지하려는 모든 레이블을 포함하세요.

댓글