- ultralytics에서 제작한 Object Detection에 특화된 YOLO8n 모델을 사용할 것이다.
- 다양한 이미지 데이터셋을 제공하는 roboflow에서 데이터셋을 사용할 것이다.
- 데이터셋 코드는 원하는 데이터셋 페이지에서 복사해서 얻어오면 됨.
- roboflow에서 데이터셋 생성하는 방법은 강의자료ppt 참고. 뒤에 잘 나와있음.
1. 실습(데이터셋, 모델 1, 모델 2)
- 데이터셋 불러오기(roboflow)
!pip install roboflow
from roboflow import Roboflow
rf = Roboflow(api_key="vOJCnFpStyQAaxJVYCrE")
project = rf.workspace("projet-va").project("va_projet")
dataset = project.version(7).download("yolov8")
- 방법 1
- 데이터셋이 제공하는 모델 불러오기
- 모델 생성
model_origin = project.version(7).model
- 모델 사용하여 예측하기
model_origin.predict(image_path='https://www.telegraph.co.uk/content/dam/football/2019/08/12/TELEMMGLPICT000206209364_trans_NvBQzQNjv4BqK3Ytq28vYzV8vgytz3tt20cdhPuOVqLHI0GKTHeusDU.jpeg?imwidth=1280',
hosted=True,
).save('predicted_originModel.jpg')
- 방법 2-
- ultralytics에서 제공하는 모델 불러오기(YOLO8n)
!pip install ultralytics
from ultralytics import YOLO
model = YOLO(model='yolov8n.pt', task='detect')
model.train(data='coco128.yaml',
epochs=10,
patience=5,
save=True,
project='trained',
name='trained_model',
exist_ok=False,
pretrained=True,
optimizer='auto',
verbose=False,
seed=2023,
resume=False,
freeze=None
)
-------------------------------------------------------------------------------------
<학습에 사용되는 파라미터>
data : 학습시킬 데이터셋의 경로. default 'coco128.yaml'
epochs : 학습 데이터 전체를 총 몇 번씩 학습시킬 것인지 설정. default 100
patience : 학습 과정에서 성능 개선이 발생하지 않을 때 몇 epoch 더 지켜볼 것인지 설정. default 50
batch : 미니 배치의 사이즈 설정. default 16. -1일 경우 자동 설정.
imgsz : 입력 이미지의 크기. default 640
save : 학습 과정을 저장할 것인지 설정. default True
project : 학습 과정이 저장되는 폴더의 이름.
name : project 내부에 생성되는 폴더의 이름.
.
exist_ok : 동일한 이름의 폴더가 있을 때 덮어씌울 것인지 설정. default False
pretrained : 사전 학습된 모델을 사용할 것인지 설정. default False
optimizer : 경사 하강법의 세부 방법 설정. default 'auto'
verbose : 학습 과정을 상세하게 출력할 것인지 설정. default False
seed : 재현성을 위한 난수 설정
resume : 마지막 학습부터 다시 학습할 것인지 설정. default False
freeze : 첫 레이어부터 몇 레이어까지 기존 가중치를 유지할 것인지 설정. default None
---------------------------------------------------------------------------------------------
- 모델 예측
model.predict(source = 'https://www.livingstreets.org.uk/media/7732/roath-adult-hoop.jpg',
save=True, save_txt=True, line_width=2,)
---------------------------------------------------------------------------------------------
<모델 예측에 사용되는 파라미터>
source : 예측 대상 이미지/동영상의 경로
conf : confidence score threshold. default 0.25
iou : NMS에 적용되는 IoU threshold. default 0.7. threshold를 넘기면 같은 object를 가리키는 거라고 판단.
save : 예측된 이미지/동영상을 저장할 것인지 설정. default False
save_txt : Annotation 정보도 함께 저장할 것인지 설정. default False
save_conf : Annotation 정보 맨 끝에 Confidence Score도 추가할 것인지 설정. default False
line_width : 그려지는 박스의 두께 설정. default None
---------------------------------------------------------------------------------------------
2-1. 실습(예측 데이터가 여러개의 이미지인 경우)
- 앞 과정은 생략.
- model 학습
model2.train(epochs=100,
verbose=True,
patience=5,
seed=2023,
pretrained=True
)
!mkdir /content/imgs
!wget -O /content/imgs/img1.jpg https://raw.githubusercontent.com/DrKAI/image/main/14th_Street_2005.jpg
!wget -O /content/imgs/img2.jpg https://raw.githubusercontent.com/DrKAI/image/main/street02.jpg
- 모델 예측
results = model2.predict(source='/content/imgs',
save=True,
line_width=2)
- 모델 예측 결과 생성
for result in results :
boxes = result.boxes
2-2. 실습(예측 데이터가 동영상인 경우)
- 앞 과정은 생략.
- model 학습
model2.train(epochs=100,
verbose=True,
patience=5,
seed=2023,
pretrained=True
)
- 모델 예측
results = model2.predict(source='https://youtu.be/RGLPlKtCgd8?si=WhYAsbhtul46FudD',
save=True,
line_width=2,
stream=True
)
- 모델 예측 결과 생성
for result in results:
boxes = result.boxes