1. 데이터셋 구성
교내 건물 실내 영상 200장을 훈련용 160장, 검증용 40장으로 분리하여 아래 폴더 구조로 저장하였다.
dataset3
trainimg\ ← 훈련용 영상 160장 + json 160개 + labels.txt
valimg\ ← 검증용 영상 40장 + json 40개 + labels.txt
2. 레이블링 클래스 목록 (labels.txt)
위 파일을 trainimg\ 와 valimg\ 폴더에 각각 저장하였다.
3. Labelme 레이블링 결과
Anaconda Powershell에서 labelme 가상환경을 활성화한 후 labelme를 실행하였다. File → Open dir 으로 trainimg 폴더를
열고, Edit → Create Polygons로 각 객체의 외곽선을 시작점과 끝점이 일치하는 폐곡선으로 지정한 뒤 클래스 레이블을
입력하였다. 저장 전에 File → Save with image Data 항목의 체크를 해제하여 영상 데이터가 json에 포함되지 않도록 하였고,
group id는 입력하지 않았다. File → Save로 저장하면 영상파일과 동일한 이름의 json 파일이 생성된다. 검증용 영상에
대해서도 valimg\ 폴더를 대상으로 같은 방법으로 레이블링하였다.
4. COCO 형식 변환
labelme2coco.py를 사용하여 개별 json 파일들을 하나의 annotations.json으로 통합 변환하였다. 변환 전 dataset3\ 폴더로
이동한 후 아래 명령을 실행하였다.
cd D:\Users\tjdwls\pytorch\dataset3
python labelme2coco.py trainimg train --labels trainimg\labels.txt
python labelme2coco.py valimg val --labels valimg\labels.txt
변환 결과:
┌────────────────┬─────────┬───────────────┐
│ 구분 │ 영상 수 │ annotation 수 │
├────────────────┼─────────┼───────────────┤
│ 훈련용 (train) │ 160장 │ 832개 │
├────────────────┼─────────┼───────────────┤
│ 검증용 (val) │ 40장 │ 253개 │
└────────────────┴─────────┴───────────────┘
annotation 수는 각 영상에 레이블링된 폴리곤(객체 외곽선) 수의 합계이다.
변환 후 폴더 구조:
dataset3
train
JPEGImages\ ← 훈련 영상 160장
Visualization\ ← 레이블링 확인용 영상 160장
annotations.json ← 통합 COCO json
val
JPEGImages\ ← 검증 영상 40장
Visualization\ ← 레이블링 확인용 영상 40장
annotations.json ← 통합 COCO json
5. Visualization 결과 확인
Visualization 폴더의 영상을 통해 객체 영역과 클래스 레이블이 올바르게 지정되었는지 확인하였다.