目标检测ssd复现pytorch代码以及更换自己的数据集
2019.5.14日记录目标检测SSD算法,实现复现pytorch代码以及更换自己的数据集。
1、下载代码:https://github.com/amdegroot/ssd.pytorch
2、数据集按照作者自己的voc0712.sh文件下载,下载后的数据集在主目录C:\Users\自己的用户名\data\VOCdevkit 如下图1,VOC2007的下载后,训练和测试集混合在一起了。
3、train.py文件,运行会出现很多bug, 我自己电脑的配置:pytorch版本是1.0.1版本, 出现的几个问题都可以在issues里面找到,需要修改几个地方。
训练网络,可以通过visiom观察totalloss变化,在下降到6后,loss下降变得很慢
4、运行eval.py文件:得到算法的总的精度
AP for tvmonitor = 0.7669
Mean AP = 0.7749
5、运行test.py文件:得到每张图中框的具体细节,写入到一个txt文档中。
6、运行demo.py:
得到测试集每张图片的具体细节,图片显现,分为3张图片,第一张原图显示,第二张是分割的图片显示,第三张是检测的带框图片。
需要做的:还需要返回图片的名称等,筛选谁有框。
更换自己的数据集:
首先利用自己的图片1.jpg,统一命名为数字,
再利用Lableimg软件进行标注,必须保证标注文件与原图片命名一致,
对标注的文件进行检查,长与宽属性是否正确,XML文件需要进行统一修改,这里利用别人的代码:https://blog.****.net/dingkm666/article/details/88775428。
再生成Main文件夹下的几个txt文件,利用代码生成。网上很多。
还需要修改几个文件:config.py VOC0712.py ssd.py demo.py
参考:https://blog.****.net/dingkm666/article/details/88775428
demo.py
修改:net = build_ssd('test', 300, 2) # initialize SSD
参考:https://blog.****.net/weixin_43380510/article/details/83004127
我自己将类改为2,其实只有一个类,再加一个背景类。
特别注意的是:如果只有一个类,需要加[]
VOC_CLASSES = [(# always index 0
'feng')]
至此,基本就可以运行成功。
如果出现这个错误:进入pytest,会报错
需要退出pytest模式。File>setting>Python Integrated Tools 的Default test runner, 选择其他选项,别选pytest
并且需要,run》Edit configuration> ,按减号,把那个XX.py文件删除pytest模式