오늘은 ultralytics yolo v11 이 나온 기념으로 docker 를 만들고 그 안에서 학습 및 prediction 하는 방법을 알아보겠다.
1) 깃 클론
https://github.com/ultralytics/ultralytics
git clone https://github.com/ultralytics/ultralytics
cd ultralytics
2) 도커빌드 (도커 이미지 파일 만들기)
ultralytics/yolov11 도커 이미지를 만드는 방법
(주의 .git 이 있는 ultralytics로 가야한다)
docker build . -f docker/Dockerfile -t ultralytics/yolov11
docker images 명령어로 이미지 보기
만들어진 ultralytics/yolov11 이미지가 보인다.

이 스텝은 도커 풀 해도 무방
3) 도커 런 (도커 컨테이너 만들기)
- d 드라이브의 data 에 볼륨마운트
- v /mnt/d/data:/usr/src/data ultralytics/yolov11 /bin/bash 에서 앞부분을 데이터가 있는 dir를 넣어주세용
docker run -itd --gpus all --restart always --name yolov11 -v /mnt/d/data:/usr/src/data ultralytics/yolov11 /bin/bash
4) 도커 어태치 (컨테이너로 들어가기)
docker attach yolov11
cd /ultralytics/
이제 coco 데이터를 학습해보자.
5) config .yaml 파일 만들기
ultralytics > cfg > datasets > coco.yaml 로 가보자. 여기서 path 업데이트 (자신이 데이터 받고싶은곳으로)
필자는 미리 마운트 해둔 데이터 경로로 '/usr/src/data/coco' 로 하였다.
coco.yaml 을 변경하면 자동으로 데이터 다운로드 및 학습이 시작된다.

custom dataset 을 학습하기 위해서 .yaml format 에 맞게 자신의 데이터셋의 path/class 정보 넣어주면 된다.
아래는 coco.yaml 의 예

6) train.py 파일만들기
gpu 는 RTX4090 (24GB) 기준으로 다음 코드를 진행한다.
from ultralytics import YOLO
# 1. 학습 모델 선택
model = YOLO('yolo11n.pt')
# 2. yaml 파일 선택
results = model.train(data='coco.yaml', batch=64, epochs=100, workers=0, imgsz=640, device=[0])
7) 학습 결과
mAP 0.50-0.95 :: 0.05 결과로 약 0.38055 성능이 나왔다. official 성능보다는 약간 낮은 성능을 보인다.
학습시간은약 70000초 20시간남짓이다.

8) 레나 prediction
import os
import wget
from ultralytics import YOLO
model = YOLO("yolo11n.pt") # or 학습한 .pt 데이터
if os.path.isfile('lena.png'):
print('File exists')
pass
else:
wget.download('http://www.hpca.ual.es/~vruiz/images/lena.png')
model.predict("lena.png", save=True, imgsz=320, conf=0.5)
그러면 runs/predict/lena.jpg 가 생깁니다.

사실 https://docs.ultralytics.com/modes/#modes-at-a-glance 여기 다 있는내용!
-끝-
'Object Detection' 카테고리의 다른 글
[Object Detection] torchvision faster rcnn 튜토리얼 (0) | 2023.05.06 |
---|
댓글