컴퓨터 비전

YOLO 트레이닝, roboflow

도그사운드 2023. 10. 9. 21:00

 

Kaggle Pothole image dataset

 

라벨링하는 방법으로 라벨미도 있지만 roboflow가 편리하고 자동화되어있다.

동영상에서 이미지를 간격마다 추출하거나, 트레이닝 셋을 추가로 만들어내는 작업이 가능하다.

https://roboflow.com/

 

Roboflow: Give your software the power to see objects in images and video

With just a few dozen example images, you can train a working, state-of-the-art computer vision model in less than 24 hours.

roboflow.com

roboflow에서 프로젝트를 만든 후 파일을 업로드

파일을 올린 후 save and continue를 클릭

 

 

 

Augmentation은 데이터 양을 늘려준다. 단 Test set 에 한정되어 있다.

다운로드 코드를 선택하면 

아래와 같은 코드를 카피할 수 있게 해준다.

!pip install roboflow

from roboflow import Roboflow
rf = Roboflow(api_key="Vm4xxxxxxX")
project = rf.workspace("oxxxxs").project("potholedetectionyolov8-su8fw")
dataset = project.version(1).download("yolov5")

 

트레이닝을 시작해본다.

!yolo task=detect mode=train model=yolov8m.pt data=/content/datasets/potholes-detection-yolonas-5/data.yaml epochs=10 imgsz=640

epochs=10은 좀 적다고 볼 수 있으나 시간상

 

 

 

  • Model Summary:
    • 218 layers: 모델은 총 218개의 계층(layer)으로 구성되어 있습니다.
    • 25,840,339 parameters: 모델은 약 2580만개의 파라미터를 가지고 있습니다.
    • 0 gradients: 그라디언트는 0입니다, 이는 학습 중인 모델에서 가중치가 업데이트되지 않음을 의미할 수 있습니다.
    • 78.7 GFLOPs: 모델은 78.7 Giga Floating Point Operations Per Second(십억 번의 부동 소수점 연산/초)를 수행합니다.
  • Class:
    • Images: 135개의 이미지를 테스트에 사용했습니다.
    • Instances: 테스트 이미지들은 총 424개의 객체 인스턴스를 포함하고 있습니다.
    • Box: 다음의 값들은 bounding box 예측의 평가 메트릭을 나타냅니다.
      • P (Precision): 0.621, 모델이 참으로 예측한 것 중에 실제로 참인 비율입니다.
      • R (Recall): 0.427, 실제 참인 것 중에서 모델이 참으로 예측한 비율입니다.
      • mAP50: 0.488, mAP(mean Average Precision)는 모델의 평균 정밀도를 나타내며, 이 경우 IoU(Intersection over Union)가 0.50 이상인 예측에 대한 것입니다.
      • mAP50-95: 0.222, 이것은 IoU 임계값을 0.50에서 0.95까지 0.05의 간격으로 증가시키면서 계산한 mAP의 평균입니다.
  • Speed:
    • 3.0ms pre-process: 각 이미지를 전처리하는데 평균적으로 3.0밀리초가 소요되었습니다.
    • 11.1ms inference: 모델이 각 이미지에 대한 예측을 생성하는데 평균적으로 11.1밀리초가 소요되었습니다.
    • 0.0ms loss: 손실 계산에 0.0밀리초가 소요되었습니다.
    • 4.2ms post-process: 각 이미지를 후처리하는데 평균적으로 4.2밀리초가 소요되었습니다.

 

트레이닝 후의 결과들

 

validation

best 모델을 적용

!yolo task=detect mode=val model={HOME}/runs/detect/train5/weights/best.pt data=/content/potholes-detection-yolonas-5/data.yaml