keypoint detection - 전체 과정 정리

FSA·2024년 10월 13일

keypoint_detection

목록 보기
9/19

1. 이미지 라벨링 하기

1.1. 프로젝트 생성

  • Roboflow 대시보드로 가서 "Create New Project"(새 프로젝트 생성)을 클릭

1.2. 각 클래스에 대한 스켈레톤을 설정

  • Roboflow 사이드바에서 "Classes"(클래스)를 클릭하세요. 그런 다음 모델 훈련에 사용할 모든 클래스를 추가하세요.
  • 클래스를 추가한 후, 각 객체에 대해 라벨링할 지점을 정의해야 합니다.
  • 스켈레톤을 정의하려면 페이지의 그리드에서 아무 곳이나 클릭하여 포인트를 추가하세요.
  • 포인트를 클릭하면 포인트에 대한 이름을 지정할 수 있습니다.
  • TODO
    • 포인트에 대한 이름을 저장했는가? 필요한가? (안한듯)
    • 색깔과 edge 정하기
      • 색깔: 주황 / 빨강 / 하늘색
      • edge: 연결하기

1.3. 데이터 업로드

  • 스켈레톤을 정의한 후 데이터를 업로드할 수 있습니다.
  • Roboflow 웹 인터페이스 또는 Roboflow API를 사용하여 원본 이미지를 업로드할 수 있습니다.
  • 웹 인터페이스를 통해 데이터를 업로드하려면 Roboflow 웹 애플리케이션에 이미지를 드래그하세요:

1.4. 라벨링 하기 (주석 추가)

  • Roboflow 사이드바에서 "Annotate"(주석 추가)를 클릭하여 주석이 필요한 모든 이미지를 확인하세요.
  • 이미지를 선택하면 Roboflow Annotate 인터페이스로 이동하여 이미지에 키포인트를 주석 처리할 수 있습니다.

  • 객체를 주석 처리하려면 오른쪽 사이드바에서 키포인트 주석 도구를 클릭하세요.
  • 그런 다음 주석을 추가할 객체 주위에 클릭하고 드래그하세요.
  • 클래스 이름을 선택하라는 메시지가 나타납니다.
  • 그런 다음 상자 안의 키포인트를 이미지의 각 지점 위치에 맞게 드래그할 수 있습니다.
  • 키포인트가 가려진 경우, 키포인트를 오른쪽 클릭한 후 "Mark as occluded"(가려진 것으로 표시)을 클릭하세요.
  • TODO
    • occluded class 지정을 하는가? (안하는듯)

2. 데이터셋 만들기

  • 이 단계에서는 이미지에 전처리 단계와 증강을 적용할 수 있습니다.

2.1. 데이터셋 생성

  • Roboflow 대시보드의 왼쪽 사이드바에서 "Generate"(생성)을 클릭하여 데이터셋을 생성하세요.
  • 이 페이지에서 데이터에 적용할 전처리 및 증강 단계를 선택할 수 있습니다.
  • TODO
    • flip_idx 를 어디서/어떻게/왜 설정해야할지 정하기

2.1.1. 데이터 선정

  • 255장 모으기

2.2. 전처리 단계

  • 픽셀 데이터 자동 방향 조정(EXIF 방향 정보 제거)
  • 640x640 크기로 리사이즈(스트레치 방식)

3. yolo 학습시키기

3.1. 데이터셋 다운로드 하기

!pip install roboflow

from roboflow import Roboflow
rf = Roboflow(api_key="N7MTpQadXU3Tr0pjiHKZ")
project = rf.workspace("capjamesg").project("glue-keypoint-detection")
dataset = project.version(1).download("yolov5")

3.2. yolo 모델 가져오기

from ultralytics import YOLO
model = YOLO('yolov8n-pose.pt')

results = model.train(data=./'path/to/coco8-pose.yaml', epochs=100, imgsz=640)
  • 여기서 'path/to/coco8-pose.yaml’을 다운로드한 데이터셋의 YAML 파일 위치로 교체하세요.

TODO

  • yolo v8 말고, v11로 학습할 순 없나?
  • 모델 크기는 얼마나 작은 것 까지 해볼 수 있나?
  • pre-trained
    • 500 epoch을 학습시켰다.
    • A100에서 batch 48로 했는데, 기본값은 16이다.

4. 학습시킨 모델 불러와서 돌리기

  • 모델 훈련이 완료되면 모델을 로드하고 이미지에 추론을 실행할 수 있습니다:
from ultralytics import YOLO

model = YOLO('path/to/best.pt')

results = model(“image.png”)

print(results)

5. keypoint를 어떻게 visualize?

profile
모든 의사 결정 과정을 지나칠 정도로 모두 기록하고, 나중에 스스로 피드백 하는 것

0개의 댓글