[IN-ISP] YOLOv8 (1)

junhjun·2023년 3월 21일
0

IN-ISP Project

목록 보기
6/16

이번에 새로 나온 YOLOv8 모델이 object detection과 segemantion을 동시에 지원한다는 이야기를 듣고 시도해보았다.

Instance segmentation YOLO v8 | Opencv with Python tutorial


COCO 데이터셋으로 학습된 모델을 다운로드 받고 적용해보았다.



이 모델은 총 80개의 클래스를 분류할 수 있도록 학습시켰다.
농구공은 32, 럭비공은 29로 라벨링 되었겠거니 했다.


수집한 도로 이미지로도 작동이 되는지 확인해봤다.




이제는 크랙을 학습시켜서, 크랙을 분류할 수 있는 모델을 만들어야한다.
찾아보니, YOLOv8 모델 학습부터 예측까지의 과정이 매우 간단해보였다.

How to Train YOLOv8 Object Detection on a Custom Dataset


roboflow 활용

  • 커스텀 데이터셋 생성
    roboflow에 데이터 업로드
    Annotate 기능으로 각 이미지에서 크랙을 직접 레이블링

  • 데이터셋 배포
    YOLOv8 format으로 배포
    API key 이용한 코드 실행하여 데이터셋 다운로드

  • 학습
    !yolo task=detect mode=train model=yolov8s.pt data={dataset.location}/data.yaml epochs=25 imgsz=800 plots=True
    (data.yaml 파일 경로 설정)

  • 예측
    !yolo task=detect mode=predict model={HOME}/runs/detect/train/weights/best.pt conf=0.25 source={dataset.location}/test/images save=True
    (best.pt 모델과 테스트 이미지 경로 설정)



직접 크랙을 라벨링 하는데 시간이 너무 오래 걸렸다.

누가 만들어놓은 데이터셋은 없을까 찾아보니 역시나 있었다.

'road crack detection' 키워드로 찾아보니 여러 데이터셋이 있었다.
Try Pre-Trained Model을 누르니, 이미지를 업로드 해서 바로 테스트 해 볼 수도 있었다. (없는 경우도 있음)



(1) YOLOv8 format으로 데이터셋을 다운로드 받았다.


(2) 25 epoch로 모델 학습을 간단히 시켰다.


(3) 생성된 best.pt 모델로 예측을 해보았다.


테스트용 데이터에는 잘 작동하지만, 실제 이미지를 넣었을 때는 아직 많이 부족해보였다.

epoch을 더 늘려 학습을 많이 시켜보거나, 데이터셋을 더욱 확보할 필요가 있다.



기술 발전이 참 빠른 것 같고, 좋은 것들을 또 무료로 공개하고 사용법도 어렵지 않다.
영어를 술술 읽을 줄 알면 참 좋을텐데..

이번 주 시간이 남으면 할 것들 :

  • roboflow 데이터 자세히 뜯어보기 (크랙을 세밀하게 잘 라벨링 했는지 확인)
  • 연구실 컴퓨터로 모델 학습 시키기

0개의 댓글