YOLOv3使用笔记——修改backbone网络

本文探讨了如何在YOLOv3中替换Darknet53为Darknet19或ResNet,以减少模型计算量并加快推理速度。通过修改网络配置并进行微调,解决了预训练模型迭代次数过大的问题,提供了提取特定层权重的方法。

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

       对于部分场景简单,目标较大的图像可能并不需要darknet53这种深度的backbone网络也能检测出来,出于这样的目的,试验将darknet53替换为darknet19、resnet等,既减少了模型计算量,又加快了推理时间。

backbone网络对比:https://pjreddie.com/darknet/imagenet/

有各个网络的cfg以及在imagenet上的预训练模型。

 

1.替换backbone网络

以修改darknet19为例,截取convolutional filters1000之前的网络部分,替换掉yolov3中的darknet53部分。其中darknet53做了三次yolo层用于提取特征,每个yolo模块中有个route层,route层意义是将几个层的输出接到一块作为输出,几个层的输出大小要求一致。需要修改的地方,找到替换网络中的conv层与route选定的层输出大小一致。

替换resnet另外需要将 random=1改为 random=0。主要是旧版本的darknet当 random=1时resize存在问题。

 

2.在替换的网络上做fine-tuning

直接用下载的预训练模型做微调有个问题,训练一开始就结束了,并能保存出模型。原因是这些网络都是在imagenet上训练过,设置的迭代次数应该是远大于cfg中的max_batch或者其他参数,所以刚开始训练便达到了截止条件。不做fine-tuning,没有好的初始化又很难训练出好模型。

重新extract weights

./darknet partial cfg/darknet19.cfg darknet19.weights darknet19.conv.40 40

提取1~39层darknent19的参数,设置的40大于darknet19的层数就可以。

得到的darknet19.conv.40可以做为修改的yolov3-darkent19网络的初始化模型。

 

 

评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值