SSD目标检测复现

复现SSD网络时的错误

一、关于数据集
SSD数据集可以使用coco和voc,本次复现使用VOC2017数据集。
修改代码部分:
在这里插入图片描述
修改成自己的数据集路径。
在这里插入图片描述
因为数据集只用了VOC2007,需要修改2012的地方写成2007:dataset_name以及image_set.

train.py中关于数据集:
只用voc2007数据集,代码默认先使用coco数据集,将coco部分注释掉。
在这里插入图片描述
以上为tran.py文件中def train()
中需要注释的部分。
在这里插入图片描述
训练保存的checkpoint,自定义保存的名字:
在这里插入图片描述
如修改为:weights/ssd300_voc2017_

二、关于训练train.py
1、索引问题
在这里插入图片描述
如果出现类似于以上的索引错误,需要将layers/modules/multibox_loss.py 的代码按照下图修改即可。注释掉的是源代码,下面的是新加的,即交换两行代码的顺序即可。
在这里插入图片描述
解决了这个问题,又会出现新的问题
在这里插入图片描述
解决办法:
在这里插入图片描述
注意,在重新运行train.py文件时,所有的data[0]改为item()
2、触发Stoplteration异常
tain.py代码中,在迭代过程中,每次执行batch张图片,通过images, targets = next(batch_iterator)读取图片时,如果next()中没有数据后会触发Stoplteration异常,使用下面语句替换 images, targets = next(batch_iterator)将解决这种异常问题。
在这里插入图片描述
三、关于test.py
出现错误:RuntimeError: Legacy autograd function with non-static forward method is deprecated. Please use new-style autograd function with static forward method.

修改方式见博客:
添加链接描述
四、关于可视化loss
github里的损失ssd.pytorch-master代码中,明确指出可用visdom进行边训练边看loss的可视化。
具体过程如下:
安装visdom:pip install visdom
启动visdom: python -m visdom.server
点开出现的网址转到浏览器。
训练train.py文件。
注意:train.py里使用可视化的部分是用的viz,简单变换一下:
添加代码:import visdom
viz = visdom.Visdom()

五、可视化目标框
在第一个while True 循环里的fps.update里添加一句代码:
frame = cv2.imread(‘data/ …/1.jpg’)
但是可以可视化图片但是没办法出现索引,应该是有错误,有待继续研究。

最后,这篇博客《SSD-Pytorch训练和测试自己的数据集(新手必看)》写得挺全面的:https://blog.csdn.net/dingkm666/article/details/88775428

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值