📢 YOLO v8 모델을 활용하여 주먹, 가위, 보 객체 탐지
!pip -q install ultralytics
https://universe.roboflow.com/project-kzetv/yolov7_rock_paper_scissors/dataset/1
Download Dataset 클릭

3번째 Download Dataset 클릭

모델 선택 > continue 클릭

code 복사

!pip install roboflow
from roboflow import Roboflow
rf = Roboflow(api_key="mvueo9gbNXGpc80f1UFu")
project = rf.workspace("project-kzetv").project("yolov7_rock_paper_scissors")
version = project.version(1)
dataset = version.download("yolov8")
data.yaml 파일 수정
import library
from ultralytics import YOLO
모델 객체 생성
# 모델 객체 생성
# 사전 학습된 모델 사용 -> 전이학습
model = YOLO('yolov8n.pt')
model = YOLO()
모델 학습
# 모델 학습
result = model.train(data = './yolov7_rock_paper_scissors-1/data.yaml',
epochs = 100,
imgsz = 640)
...
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
99/100 2.62G 0.4481 0.334 0.882 14 640: 100% ━━━━━━━━━━━━ 19/19 3.4it/s 5.6s
Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 2/2 4.2it/s 0.5s
all 63 73 0.906 0.965 0.965 0.81
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
100/100 2.62G 0.4458 0.3325 0.8807 15 640: 100% ━━━━━━━━━━━━ 19/19 4.7it/s 4.1s
Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 2/2 2.9it/s 0.7s
all 63 73 0.898 0.973 0.964 0.807
100 epochs completed in 0.188 hours.
...runs/detect/train./weightbest.pt : 성능 가장 좋음last.pt : 가장 마지막베스트 모델 불러오기
# runs/detect/train2/weights/best.pt 베스트 모델 불러오기
my_model = YOLO('./runs/detect/train2/weights/best.pt')
예측에 사용할 이미지 한 장으로 예측해보기
# 예측에 사용할 이미지 한 장 가져오기
source = './yolov7_rock_paper_scissors-1/test/images/IMG_5636_MOV-40_jpg.rf.451d107b173a6856044a5d884eb7ed90.jpg'
# 예측 결과를 저장할 경로
save_dir = './runs/detect/predict'
# 예측
my_model(source = source, save_dir = save_dir, save = True, conf = 0.3)
conf0.3 : 30% 이상의 신뢰도를 가질 경우 표시
결과 확인
result_img = my_model(source = source, save_dir = save_dir, save = True, conf = 0.3)
import matplotlib.pyplot as plt
plt.imshow(result_img[0].plot())
plt.axis('off')
