解决:YOLOv8训练数据集时P、R、mAP等值均为0的问题

问题

在这里插入图片描述
使用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. data.yaml和classes.txt的类别顺序要与标注软件中的相同

类别文件classes.txt

dog
cat
pig

data.yaml中也应该为

names: ['dog', 'cat', 'pig']

🍋xml转txt格式时,也要注意类别顺序

2.匹配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

3.使用 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

4.加大训练轮数epoch

我训练自己的数据集大概标注了10来张,前面训练的时候P、R、mAP也为0,到后面才开始增长的

yolo task=detect mode=train model=yolov8n.pt data=your_dataset.yaml epochs=200 imgsz=640  optimizer=Adam

在这里插入图片描述
在这里插入图片描述

5. 删除data/labels下的train.cache和val.cache

在修改数据集后,若之前训练过,在训练前删除这两个train.cache和val.cache
在这里插入图片描述

6. 训练数据集过少

可能是训练数据集过少,增大标注数据集的数量。

根据引用[1]中的描述,当修改了YOLOv8网络的主干等结构后,在训练可能会出现Box的精度P、召回率R、mAP等值均为0的问题。这可能是由于网络结构的修改导致了训练过程中的错误。 为了解决这个问题,您可以尝试以下几个方法: 1. 检查网络结构修改的正确性:确保您对网络结构的修改是正确的,并且没有引入错误。可以仔细检查修改的代码,确保没有遗漏或错误的操作。 2. 调整训练参数:尝试调整训练参数,例如学习率、批量大小等。有候,修改网络结构后需要重新调整这些参数,以适应新的网络结构。 3. 使用预训练模型进行迁移学习:如果您修改了网络结构,但是没有足够的数据进行训练,可以考虑使用预训练模型进行迁移学习。通过在预训练模型的基础上进行微调,可以更快地训练出一个具有较高精度的模型。 4. 检查数据集和标签:确保您的数据集和标签是正确的,并且与网络结构的修改相匹配。如果数据集或标签存在问题,可能会导致训练精度为0。 5. 查看训练日志和损失函数:仔细查看训练日志和损失函数的变化,以确定训练过程中是否存在问题。如果损失函数没有下降或者训练日志中存在异常情况,可能需要进一步调查和排除问题。 请注意,以上方法仅为一般性建议,具体解决方法可能需要根据您的具体情况进行调整和优化。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值