用yolov3 VOC训练自己的数据时出现的问题及解决方法

在使用yolov3进行VOC数据集训练时,遇到两个主要问题:1. 显存不足导致的out of memory错误,通过修改配置文件和减小batch大小可以解决;2. 训练过程中的loss变为nan,可能是由于batch大小、scales设置不适当或预训练权重差异过大,调整这些参数或从头训练可解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题:各种out of memory

可能的原因:电脑显存不够,batch比较大,或者开了random = 1的时候带不动.

解决方法:darknet/cfg/yolov3-voc.cfg 文件最后面random = 0;,如果还不行就减小batch,以及减小batch/subdivisions。

2.问题:训练过程中出现大量的nan -nan,loss,avg啥啥都是nan

可能的原因:(1)batch比较小,可以改为64,或者128,都是正常的;

(2)scales 设置的不对,导致步长变大,结果就不收敛了;

(3)看到网上有说是因为官方的预训练权重可能与你的相差比较大,可以自己从头训练,但我觉得先试试其他方法再问最后自己训练吧。

解决方法:我是因为看了知网-水果识别的例子,用了他的steps和scales,所以训练到1000次的时候rate猛增10倍,然后就振荡发散了,所以后来修改好了再在第900的基础上继续训练就没问题了。


[net]
# Testing
# batch=1
# subdivisions=1
# Training       # 训练的时候把Testing的参数注释掉,把Training的参数取消注释
batch=64
subdivisions=16
width=416
height=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.001          # 根据需要修改学习率,就是梯度下降的速率,越大训练速度越快但会牺牲准确率
burn_in=1000
max_batches = 100000     # 训练的总次数
policy=steps
steps=100,10000,70000,80000,90000        # 训练到相应次数后学习率变化
scales=10,10,.1,.1,.1        # 学习率变化情况,是累乘操作
#以上为知网-水果识别中摘取,但不适合我的
### YOLOv5 Nano 模型概述 YOLOv5 Nano 是 YOLOv5 家族中的一个轻量化版本,旨在实现在资源受限环境下的高效目标检测。该模型通过减少网络层数和通道数,在保持较高检测精度的同显著降低了计算复杂度和内存占用[^1]。 ### 实现细节 YOLOv5 Nano 的架构设计借鉴了其他小型化模型的设计理念: - **骨干网简化**:采用更少的卷积层和残差模块,减少了整体参数量。 - **特征金字塔优化**:调整了 PANet 结构,使得多尺度特征融合更加紧凑有效。 - **头部精简**:预测头部分也进行了裁剪,只保留必要的组件以降低运算负担。 这些改进措施共同作用下,使 YOLOv5 Nano 能够在低功耗设备如嵌入式平台或移动终端上流畅运行,并且依然能够提供令人满意的检测效果[^2]。 ```python import torch from models.experimental import attempt_load # 加载预训练权重文件 weights_path = 'yolov5n.pt' device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') model = attempt_load(weights_path, map_location=device) # 设置为评估模式 model.eval() ``` 上述代码展示了如何加载并初始化 YOLOv5 Nano 模型用于推理的过程。需要注意的是 `attempt_load` 函数会自动处理不同版本间的兼容性问题[^3]。 ### 使用方法 为了更好地利用 YOLOv5 Nano 进行实际项目开发,建议遵循以下几点指导原则: - 对于特定应用场景的数据集进行适当标注; - 根据具体需求调整输入图像尺寸以及置信度阈值等超参数设置; - 利用官方提供的配置文件作为起点来进行定制化的修改与扩展工作;
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值