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 객체 탐지 워크플로에서는 각 객체 주위에 사각형을 그리고 클래스 이름을 지정합니다. LabelMe 시작 가이드에서는 이미지 열기, 도형 그리기, 주석 저장 방법을 다루며, LabelMe 데이터세트 가이드에서는 주석이 완료된 전체 데이터세트를 검토하고 준비하는 방법을 다룹니다.
원본 디렉터리에는 이미지와 LabelMe JSON 파일이 포함되어야 합니다.
your_dataset/
├── image_001.jpg
├── image_001.json
├── image_002.jpg
└── image_002.json2. LabelMe Toolkit 설치하기#
LabelMe의 Toolkit 설치 가이드에 따라 LabelMe Toolkit을 설치합니다. Toolkit과 내보내기 작업은 로컬에서 실행됩니다.
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,normalcrack,normal을 list-labels에서 반환된 레이블로 바꿉니다. LabelMe는 결과를 your_dataset.export/에 기록합니다.
your_dataset.export/
├── classes.txt
├── images/
│ ├── image_001.jpg
│ └── image_002.jpg
└── labels/
├── image_001.txt
└── image_002.txtclasses.txt은 YOLO 레이블 파일에서 사용한 순서와 동일하게 클래스 이름을 유지합니다. 이 파일은 내보내기 결과의 최상위 디렉터리에 두어야 합니다.
LabelMe Toolkit은 사각형을 YOLO 바운딩 박스로 내보냅니다. 다각형과 마스크도 축에 정렬된 바운딩 박스로 변환하므로 export-to-yolo은 세그멘테이션 형상을 유지하지 않습니다. 이 워크플로로 객체 탐지 데이터세트를 준비할 때는 사각형을 그립니다.
4. ZIP 아카이브 만들기#
디렉터리 자체가 아니라 your_dataset.export/의 내용물을 압축합니다. macOS 또는 Linux에서는 다음을 실행합니다.
cd your_dataset.export
zip -r ../your_dataset.zip classes.txt images labelsWindows PowerShell에서는 다음을 실행합니다.
Compress-Archive -Path .\your_dataset.export\* -DestinationPath .\your_dataset.zip업로드하기 전에 ZIP 파일을 열어 classes.txt, images/, labels/가 최상위에 있는지 확인합니다. your_dataset.export/과 같은 상위 디렉터리가 추가되면 Platform에서 최상위 클래스 목록을 찾지 못합니다.
5. Ultralytics Platform에 업로드하기#
- Settings > Integrations > LabelMe를 엽니다.
- 내보내기 업로드를 클릭합니다.
your_dataset.zip을 업로드하고 데이터세트 생성을 완료합니다.- 처리가 완료될 때까지 기다린 다음 이미지, 클래스 및 주석을 검토합니다.
- 같은 작업 공간에서 주석을 편집하고, 모델을 학습시키고, 배포할 수 있습니다.

LabelMe와 YOLO 내보내기 작업은 모두 오프라인에서 진행됩니다. 업로드 대화상자에서 선택한 ZIP 파일만 Platform으로 전송됩니다.
문제 해결#
- 클래스 이름이
class0,class1등으로 표시됩니다: ZIP 파일의 최상위에classes.txt가 있는지 확인합니다. - 일부 주석이 누락되었습니다:
labelmetk list-labels your_dataset/을 다시 실행하고--class-names에 필요한 레이블을 모두 포함합니다. - 다각형이 박스로 변환되었습니다: 이는 LabelMe의
export-to-yolo에 문서화된 동작이며, 사각형이 아닌 도형을 바운딩 박스로 변환합니다. - 데이터세트에 이미지가 없습니다: 내보낸
images/디렉터리가 ZIP 파일에 포함되어 있는지 확인합니다. - Platform에서 클래스를 찾을 수 없습니다: 아카이브에서 외부 디렉터리를 제거하여
classes.txt,images/,labels/가 최상위 항목이 되도록 합니다.
전체 로컬 워크플로에 대한 자세한 내용은 LabelMe의 YOLO 학습 가이드 및 export-to-yolo 참조 문서를 참조하세요.
자주 묻는 질문#
아니요. LabelMe와 내보내기 작업은 로컬에서 실행되며, 업로드하는 ZIP 파일만 Platform으로 전송됩니다.
export-to-yolo명령은 LabelMe Pro Toolkit에 포함되어 있어 LabelMe 요구 사항에 해당하지만, 생성된 ZIP 파일은 모든 Platform 요금제에서 업로드할 수 있습니다.이 워크플로에서는 지원되지 않습니다. LabelMe Toolkit은 다각형과 마스크를 축에 정렬된 바운딩 박스로 변환하므로 결과는 항상 객체 탐지 데이터세트입니다. 이 내보내기에 사용할 데이터를 준비할 때는 사각형을 그립니다.
Platform은 ZIP 파일 최상위에 있는
classes.txt에서 클래스 이름을 읽습니다. 내보내기 폴더 자체가 아니라 폴더의 내용물을 압축하여classes.txt,images/,labels/이 최상위 항목이 되도록 합니다.--class-names에 전달한 레이블만 지정한 순서대로 포함됩니다. 먼저labelmetk list-labels을 실행하고 유지할 레이블을 모두 포함합니다.