一、前期准备
打开conda prompt,输入:
conda create -n yolov8 python=3.10
下载YOLOv8官方源码:
https://github.com/Pertical/YOLOv8/tree/main?tab=readme-ov-filehttps://github.com/Pertical/YOLOv8/tree/main?tab=readme-ov-file接下来环境配置、依赖包安装、预训练权重下载以及验证环境等操作,我参考了下面这一篇博客:适合小白的超详细yolov8环境配置+实例运行教程
二、COCO128数据集
下载链接:COCO128数据集
在根目录下新建datasets文件夹,组成如下形式:
在"coco128"文件夹下新建coco128.yaml文件:
# coco128.yaml
# COCO128 dataset configuration file for YOLOv8
# Path: https://github.com/ultralytics/ultralytics/blob/main/ultralytics/datasets/coco128.yaml
# Dataset path (relative to YOLOv8 project root)
path: D:/YOLOv8-main/datasets/coco128 # 数据集根目录
# Train/val/test splits (images and labels)
train: D:/YOLOv8-main/datasets/coco128/images/train2017 # 训练集图像路径(COCO128 默认全部用于训练)
val: D:/YOLOv8-main/datasets/coco128/images/train2017 # 验证集路径(小数据集可直接复用训练集)
test: # 测试集路径(可选)
# Class names (80 classes, same as full COCO)
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush
三、 训练模型
在terminal中输入下面的命令:
yolo detect train data=datasets/coco128/coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 batch=4 lr0=0.01 resume=True
显示如下界面:
训练结果如下:
Validating runs\detect\train6\weights\best.pt...
Ultralytics 8.3.141 Python-3.10.16 torch-2.7.0+cpu CPU (Intel Xeon E5-2683 v3 2.00GHz)
YOLOv8n summary (fused): 72 layers, 3,151,904 parameters, 0 gradients, 8.7 GFLOPs
Class Images Instances Box(P R mAP50 mAP50-95):
all 128 929 0.851 0.803 0.867 0.697
person 61 254 0.972 0.686 0.871 0.67
bicycle 3 6 1 0.54 0.809 0.503
car 12 46 0.839 0.478 0.566 0.317
motorcycle 4 5 0.895 1 0.995 0.957
airplane 5 6 0.958 1 0.995 0.929
bus 5 7 1 0.784 0.953 0.81
train 3 3 0.923 1 0.995 0.85
truck 5 12 0.919 0.5 0.597 0.469
boat 2 6 0.804 0.5 0.754 0.512
traffic light 4 14 0.987 0.357 0.415 0.255
stop sign 2 2 0.85 1 0.995 0.847
bench 5 9 1 0.867 0.984 0.778
bird 2 16 0.995 1 0.995 0.727
cat 4 4 0.919 1 0.995 0.915
dog 9 9 0.978 1 0.995 0.885
horse 1 2 0.862 1 0.995 0.946
elephant 4 17 0.951 0.882 0.96 0.8
bear 1 1 0.785 1 0.995 0.995
zebra 2 4 0.914 1 0.995 0.995
giraffe 4 9 0.97 1 0.995 0.89
backpack 4 6 0.919 0.667 0.789 0.651
umbrella 4 18 1 0.83 0.972 0.765
handbag 9 19 0.829 0.474 0.588 0.399
tie 6 7 0.748 0.848 0.824 0.72
suitcase 2 4 0.66 1 0.995 0.623
frisbee 5 5 0.779 0.8 0.801 0.701
skis 1 1 0.815 1 0.995 0.796
snowboard 2 7 0.332 0.857 0.774 0.559
sports ball 6 6 1 0.547 0.672 0.38
kite 2 10 1 0.379 0.776 0.321
baseball bat 4 4 0.69 0.571 0.825 0.455
baseball glove 4 7 0.951 0.429 0.435 0.35
skateboard 3 5 0.692 0.906 0.938 0.628
tennis racket 5 7 0.814 0.631 0.67 0.462
bottle 6 18 1 0.332 0.708 0.454
wine glass 5 16 0.877 0.438 0.842 0.547
cup 10 36 0.921 0.651 0.861 0.622
fork 6 6 0.952 0.667 0.812 0.644
knife 7 16 0.737 0.7 0.734 0.446
spoon 5 22 0.656 0.591 0.657 0.45
bowl 9 28 0.862 0.821 0.881 0.729
banana 1 1 0.63 1 0.995 0.895
sandwich 2 2 0.659 1 0.995 0.995
orange 1 4 0.898 1 0.995 0.679
broccoli 4 11 0.608 0.364 0.534 0.382
carrot 3 24 0.949 0.777 0.889 0.661
hot dog 1 2 0.831 1 0.995 0.995
pizza 5 5 0.928 1 0.995 0.917
donut 2 14 0.655 1 0.906 0.818
cake 4 4 0.906 1 0.995 0.938
chair 9 35 0.87 0.571 0.825 0.611
couch 5 6 1 0.915 0.995 0.816
potted plant 9 14 0.855 0.845 0.952 0.763
bed 3 3 0.891 1 0.995 0.94
dining table 10 13 0.861 1 0.986 0.818
toilet 2 2 0.821 1 0.995 0.847
tv 2 2 0.882 1 0.995 0.946
laptop 2 3 0.847 1 0.995 0.897
mouse 2 2 1 0.864 0.995 0.5
remote 5 8 0.952 0.75 0.765 0.659
cell phone 5 8 0.874 0.5 0.55 0.422
microwave 3 3 0.798 1 0.995 0.816
oven 5 5 0.696 0.6 0.551 0.506
sink 4 6 0.639 1 0.775 0.464
refrigerator 5 5 0.874 1 0.995 0.933
book 6 29 0.737 0.387 0.657 0.441
clock 8 9 0.95 0.889 0.951 0.836
vase 2 2 0.804 1 0.995 0.895
scissors 1 1 0.567 1 0.995 0.746
teddy bear 6 21 0.779 0.839 0.928 0.723
toothbrush 2 5 0.929 1 0.995 0.895
Speed: 2.1ms preprocess, 52.8ms inference, 0.0ms loss, 2.1ms postprocess per image
Results saved to runs\detect\train6
Learn more at https://docs.ultralytics.com/modes/train
训练得到的各项指标:
四、验证
输入下面的命令进行模型的验证,这里的models为训练的最好的那一组权重:
yolo detect val data=datasets/coco128/coco128.yaml model=runs/detect/train6/weights/best.pt batch=4
结果如下:
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 32/32 [00:07<00:00, 4.33it/s]
all 128 929 0.852 0.802 0.867 0.696
person 61 254 0.972 0.685 0.872 0.672
bicycle 3 6 1 0.536 0.809 0.503
car 12 46 0.841 0.478 0.566 0.317
motorcycle 4 5 0.898 1 0.995 0.957
airplane 5 6 0.958 1 0.995 0.929
bus 5 7 1 0.783 0.953 0.81
train 3 3 0.924 1 0.995 0.85
truck 5 12 0.919 0.5 0.597 0.469
boat 2 6 0.807 0.5 0.754 0.512
traffic light 4 14 0.992 0.357 0.415 0.255
stop sign 2 2 0.851 1 0.995 0.847
bench 5 9 1 0.869 0.984 0.774
bird 2 16 0.998 1 0.995 0.727
cat 4 4 0.919 1 0.995 0.915
dog 9 9 0.978 1 0.995 0.885
horse 1 2 0.862 1 0.995 0.946
elephant 4 17 0.952 0.882 0.958 0.781
bear 1 1 0.786 1 0.995 0.995
zebra 2 4 0.915 1 0.995 0.995
giraffe 4 9 0.971 1 0.995 0.868
backpack 4 6 0.92 0.667 0.789 0.651
umbrella 4 18 1 0.829 0.972 0.756
handbag 9 19 0.839 0.474 0.596 0.403
tie 6 7 0.747 0.844 0.824 0.72
suitcase 2 4 0.662 1 0.995 0.623
frisbee 5 5 0.779 0.8 0.801 0.701
skis 1 1 0.817 1 0.995 0.796
snowboard 2 7 0.333 0.857 0.774 0.559
sports ball 6 6 1 0.546 0.672 0.38
kite 2 10 1 0.36 0.776 0.322
baseball bat 4 4 0.69 0.569 0.808 0.438
baseball glove 4 7 0.952 0.429 0.435 0.35
skateboard 3 5 0.691 0.904 0.938 0.628
tennis racket 5 7 0.814 0.63 0.67 0.462
bottle 6 18 1 0.332 0.707 0.453
wine glass 5 16 0.878 0.438 0.842 0.547
cup 10 36 0.921 0.65 0.861 0.622
fork 6 6 0.953 0.667 0.812 0.644
knife 7 16 0.735 0.694 0.734 0.446
spoon 5 22 0.658 0.591 0.657 0.45
bowl 9 28 0.863 0.821 0.881 0.729
banana 1 1 0.632 1 0.995 0.895
sandwich 2 2 0.661 1 0.995 0.995
orange 1 4 0.9 1 0.995 0.679
broccoli 4 11 0.609 0.364 0.534 0.382
carrot 3 24 0.949 0.774 0.889 0.661
hot dog 1 2 0.832 1 0.995 0.995
pizza 5 5 0.928 1 0.995 0.916
donut 2 14 0.655 1 0.906 0.818
cake 4 4 0.907 1 0.995 0.938
chair 9 35 0.899 0.571 0.824 0.61
couch 5 6 1 0.915 0.995 0.816
potted plant 9 14 0.852 0.823 0.952 0.763
bed 3 3 0.892 1 0.995 0.94
dining table 10 13 0.863 1 0.986 0.818
toilet 2 2 0.822 1 0.995 0.847
tv 2 2 0.882 1 0.995 0.946
laptop 2 3 0.847 1 0.995 0.897
mouse 2 2 1 0.861 0.995 0.5
remote 5 8 0.953 0.75 0.765 0.659
cell phone 5 8 0.875 0.5 0.549 0.422
microwave 3 3 0.796 1 0.995 0.816
oven 5 5 0.65 0.6 0.552 0.492
sink 4 6 0.64 1 0.775 0.464
refrigerator 5 5 0.872 1 0.995 0.933
book 6 29 0.736 0.385 0.657 0.441
clock 8 9 0.95 0.889 0.951 0.836
vase 2 2 0.805 1 0.995 0.895
scissors 1 1 0.569 1 0.995 0.746
teddy bear 6 21 0.778 0.837 0.928 0.723
toothbrush 2 5 0.929 1 0.995 0.895
Speed: 1.3ms preprocess, 45.8ms inference, 0.0ms loss, 2.2ms postprocess per image
Results saved to runs\detect\val
Learn more at https://docs.ultralytics.com/modes/val
预测单张图片:
yolo predict model=runs/detect/train6/weights/best.pt source=datasets/coco128/images/train2017/000000000009.jpg
结果如下: