文章目录
问题
使用YOLOv8训练自己的数据集时,出现P、R、mAP等值均为0的问题
Model summary (fused): 186 layers, 2,685,733 parameters, 0 gradients, 6.8 GFLOPs
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 1/1 [00:00<00:00, 13.29it/s]
all 2 12 0 0 0 0
Speed: 0.7ms preprocess, 28.2ms inference, 0.0ms loss, 5.0ms postprocess per image
解决
1.匹配pytorch与cuda的版本
Win+R
输入cmd
打开命令行,输入命令nvidia-smi
查看cuda版本,本机为CUDA:12.6
在pytorch官网找到以前的版本:https://pytorch.org/get-started/previous-versions/
我这里选择CUDA 12.1的pytorch版本
# CUDA 12.1
pip install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 --index-url https://download.pytorch.org/whl/cu121
2.使用 Adam 优化器
在使用 YOLOv8 进行训练时,默认的优化器是 SGD(Stochastic Gradient Descent),可以通过命令行参数或代码修改优化器为 Adam
yolo task=detect mode=train model=yolov8n.pt data=your_dataset.yaml epochs=100 imgsz=640 optimizer=Adam
3.加大训练轮数epoch
我训练自己的数据集大概标注了10来张,前面训练的时候P、R、mAP也为0,到后面才开始增长的
yolo task=detect mode=train model=yolov8n.pt data=your_dataset.yaml epochs=200 imgsz=640 optimizer=Adam
4. 删除data/labels下的train.cache和val.cache
在修改数据集后,若之前训练过,在训练前删除这两个train.cache和val.cache