라벨링 화면으로

Spine Annotator 사용 매뉴얼

척추 X-ray 폴리곤 라벨링 도구 · v1.0

1. 개요

Spine Annotator는 척추 X-ray(전체 척추, AP/LAT) 이미지를 대상으로 척추체(vertebral body) 25개 클래스(C1–S1)를 폴리곤으로 라벨링하기 위한 웹 도구입니다. 결과는 segmentation 모델 학습용 COCO JSON 형식으로 내보낼 수 있습니다.

2. 라벨러(작업자) 설정

앱을 처음 열면 라벨러 선택 모달이 자동으로 뜹니다. 본인 이름을 선택하면 헤더 우측에 색상 점과 함께 표시됩니다.

현재 등록된 라벨러

이름색상
박성배 (교수님) 골드
김태준 블루
황회진 보라

동작 방식

라벨러 변경

헤더 좌측의 ● 박성배 ▾ pill 버튼을 클릭하면 라벨러를 변경할 수 있습니다. (브라우저별로 따로 저장됨)

중요: 작업 시작 전에 반드시 본인 이름이 선택되어 있는지 확인하세요. 다른 사람 계정으로 저장된 라벨은 점 색깔로만 구분할 수 있습니다.

3. 빠른 시작 (5분)

  1. 이미지 열기

    헤더의 폴더 연결 또는 파일 또는 샘플을 누릅니다.

  2. 시작 척추 라벨 선택

    왼쪽 사이드바의 시작 라벨 드롭다운에서 이미지 최상단에 보이는 척추(예: C2, T1, L1)를 선택합니다.

  3. 그리기 모드 진입

    I를 누르거나 도구 버튼의 그리기를 클릭합니다.

  4. 점 찍기 → 완성

    척추체 외곽을 따라 클릭하여 점을 찍습니다. 3개 이상 찍은 후 Q(순서대로 완성) 또는 W(각도순 자동 정렬 완성).

  5. 다음 척추로 반복

    완성된 폴리곤은 자동으로 라벨이 할당됩니다(Y좌표 기준). 25개 모두 라벨링되면 라벨이 모두 채워집니다.

  6. COCO 내보내기

    헤더 우측의 COCO 미리보기 → 다운로드.

4. 로컬 이미지 폴더 연결

왜 폴더 연결인가?
700개·14GB 같은 큰 데이터셋을 서버에 올리지 않고도, 각자의 PC에 있는 이미지를 직접 읽어 작업할 수 있습니다. 서버에는 라벨 메타데이터만 저장됩니다.

지원 브라우저

사용법

  1. 헤더의 폴더 연결 클릭
  2. X-ray PNG 파일들이 있는 폴더 선택 → 권한 허용
  3. 왼쪽 사이드바에 파일 목록이 표시됩니다 (AP/LAT 자동 분류)
  4. 파일을 클릭하면 캔버스에 로드됨
  5. 다음 세션에서도 자동 복원됩니다 (브라우저에 폴더 핸들 저장)

파일 목록 UI

5. 폴리곤 그리기

기본 흐름

  1. I로 그리기 모드 진입
  2. 척추체 외곽을 클릭하여 점 추가 (최소 3점)
  3. 완성:
    • Q — 클릭한 순서대로 연결 (점을 시계방향으로 잘 찍은 경우)
    • W각도순 자동 정렬로 완성 (점 순서가 뒤죽박죽이어도 볼록 다각형으로 자동 정리)
    • 마지막 점에서 더블클릭으로도 완성 가능
  4. E — 마지막 점 한 개 되돌리기 (실수했을 때)
  5. Esc — 그리기 전체 취소
팁: 척추체는 보통 4각형에 가까우므로 4개 점이면 충분합니다. 하지만 측면(LAT)에서 곡률이 큰 부분은 6–8개 점으로 더 정밀하게 그려도 좋습니다.

6. 편집 모드

O로 편집 모드 진입. 이미 그린 폴리곤을 수정합니다.

점 조작

동작방법
폴리곤 선택폴리곤 내부 클릭
점 이동점을 드래그
점 추가변(테두리) 위에 마우스 → 점선 미리보기 → 클릭
점 삭제점 위에서 R (또는 우클릭 / 더블클릭)

그리던 폴리곤을 편집 모드에서 마무리

그리기 모드에서 점을 몇 개 찍다가 O로 편집 모드로 전환할 수 있습니다. 이때 찍은 점들은 그대로 유지되며, 드래그로 위치를 미세 조정한 뒤 Q 또는 W로 완성할 수 있습니다.

최소 점 개수는 3개입니다. 3개 미만에서 완성을 시도하면 자동으로 취소됩니다.

7. 라벨 자동 할당 / 시작 라벨

폴리곤이 완성될 때마다 모든 폴리곤이 Y좌표(무게중심) 기준 위에서 아래로 정렬되고, 시작 라벨부터 순서대로 자동 할당됩니다.

예시

지원 라벨 시퀀스 (위→아래):

C1 → C2 → C3 → C4 → C5 → C6 → C7 → T1 → T2 → ... → T12 → L1 → L2 → L3 → L4 → L5 → S1

수동 라벨 변경

오른쪽 사이드바의 폴리곤 목록에서 라벨을 클릭하여 직접 변경할 수 있습니다.

8. 뷰 조작

줌 / 팬

이미지 필터 (오른쪽 사이드바)

사이드바

9. 단축키 전체 목록

모든 단축키는 커스터마이즈 가능합니다. 헤더의 버튼 또는 Ctrl+K.
한/영 입력 상태와 무관하게 물리적 키 위치로 동작합니다 (IME 안전).

도구

I그리기 도구
O편집 도구
P삭제 도구

그리기

Q완성 (순서대로 연결)
W자유 완성 (각도순 자동 정렬)
E마지막 점 취소
Esc그리기 전체 취소

편집

R마우스 아래 점 삭제
Delete선택한 폴리곤 삭제
Ctrl+Z실행 취소
Ctrl+Y다시 실행

보기

Space (홀드)팬 모드
+ / -줌 인 / 줌 아웃
0화면 맞춤

마우스 동작 (변경 불가)

좌클릭점 찍기 (그리기 모드)
더블클릭폴리곤 완성 (그리기 모드)
변 위 클릭점 추가 (편집 모드)
점 드래그점 이동 (편집 모드)
점 우클릭 / 더블클릭점 삭제 (편집 모드)

10. COCO 내보내기

헤더의 COCO 미리보기 버튼을 누르면 현재 이미지의 라벨을 COCO segmentation 형식 JSON으로 미리 볼 수 있고 다운로드할 수 있습니다.

출력 형식

{
  "images": [{
    "id": 1,
    "file_name": "patient_001_AP.png",
    "width": 1024,
    "height": 2048
  }],
  "annotations": [{
    "id": 1,
    "image_id": 1,
    "category_id": 8,            // T1 = 8 (C1=1, C2=2, ..., S1=25)
    "segmentation": [[x1,y1,x2,y2,...]],
    "bbox": [x, y, w, h],
    "area": 12345.6,
    "iscrowd": 0
  }, ...],
  "categories": [
    { "id": 1, "name": "C1" }, { "id": 2, "name": "C2" }, ...
    { "id": 25, "name": "S1" }
  ]
}

면적 / bbox 계산

11. 권장 작업 흐름

  1. 폴더 연결 — 한 번만 연결하면 다음 세션에도 자동 복원
  2. 파일 선택 — AP / LAT 필터로 한 가지 뷰만 먼저 처리하는 것을 권장
  3. 시작 라벨 설정 — 이미지 상단에 보이는 척추로 (예: C2 또는 T1)
  4. 위에서 아래로 순서대로 폴리곤 그리기
    • 일반적으로 I → 점 4개 클릭 → Q 반복
    • 점 순서가 꼬였으면 W로 자동 정렬
  5. 편집 모드로 점들 미세 조정 (O → 드래그)
  6. 자동 저장 — 파일 전환 시 자동으로 LocalStorage에 저장됨
  7. COCO 내보내기 — 작업 완료 후 JSON 다운로드
효율 팁: 왼손은 키보드(I/O/Q/W/E/R), 오른손은 마우스로 작업하면 한 이미지(25개 라벨)당 2–3분 안에 완성할 수 있습니다.

12. 자주 묻는 질문 / 트러블슈팅

Q. 단축키가 안 먹어요
  • 입력창(input/textarea)에 포커스가 있는지 확인 → 캔버스를 한 번 클릭
  • 커스터마이즈한 단축키가 충돌하지 않는지 → Ctrl+K → "기본값으로 복원"
  • 옛 버전 캐시 가능성 → Ctrl+Shift+R로 강력 새로고침
Q. 폴리곤이 완성되지 않아요
  • 최소 점 3개가 찍혀 있어야 합니다 (1–2개는 자동 취소됨)
  • 그리기 모드(I) 또는 편집 모드(O) 상태인지 확인
  • 상태바(화면 하단)에 현재 점 개수가 표시됩니다
Q. 폴더 연결이 안 됩니다
  • Chrome 또는 Edge를 사용하시나요? Firefox/Safari는 미지원
  • HTTPS 환경이어야 합니다 (이 사이트는 OK)
  • 처음 연결 시 폴더 읽기 권한 허용을 눌렀는지 확인
Q. 라벨이 저장되었는지 어떻게 확인하나요?
  • 파일 목록의 초록 점 = 라벨 있음 / 회색 = 없음
  • 저장은 자동입니다 (파일 전환·완성·삭제 시)
  • 저장 위치: 브라우저 LocalStorage (다른 PC/브라우저로는 전이 안 됨)
Q. 다른 PC로 작업 내용을 옮기려면?
  • 현재는 COCO JSON 내보내기로 각 이미지별 라벨을 받아 보관할 수 있습니다
  • 팀 공유는 Phase 2에서 추가 예정 (서버 동기화)
Q. 줌 감도가 너무 세거나 약해요
  • 현재 지수형 줌(0.0005 sensitivity)으로 튜닝되어 있습니다
  • 마우스/트랙패드별 차이가 크면 알려주세요 — 추가 조정 가능
Q. 25개 척추체를 다 라벨링할 수 없는 이미지는?
  • 보이는 만큼만 라벨링하면 됩니다 — 시작 라벨부터 순서대로 자동 할당됨
  • 예: 흉추만 보이는 이미지 → 시작 라벨 T1로 설정, 12개 폴리곤 → T1~T12