总体流程我也都是跟着网上dalao们的资料走的,但是也遇到很多问题,因此在这里记录一下我的整体流程,有些内容要在dalao们的代码基础上进行修改。
ssd.pytorch许多代码是有一定年纪的了,因此最好不要配置最新的pytorch,我使用的pytorch1.2,Cuda10.0的版本
先装上Conda,然后在启动Conda环境后安装pytorch:
# CUDA 10.0
conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch
# CPU Only 不用显卡加速的应该是这个,不过ssd是需要CUDA的所以不要用这个
conda install pytorch==1.2.0 torchvision==0.4.0 cpuonly -c pytorch
不同版本的安装代码可以在PyTorch.org官方网站找到
实践证明如果数据集做错,最后往往能训练但是跑测试时AP全为0。
我使用的时VOC2007标准的数据集,事前最好完全了解一遍这个标准各个文件的作用和内容,否则很容易数据集做错。
https://blog.csdn.net/duanyajun987/article/details/81507656
这篇文章记录了总体流程。
xml标记只能向上述文章里一样慢慢标记。
这里再记录一个windows系统下的形成四个训练测试图片名称文本文件的生成方法
1.在图片文件夹(JPEGImages)下面写一个.bat文件
#z.bat
dir *.*/b>all.txt.
运行后自动创建一个命名为all.txt的文本文件,里面是所有的图片名称加后缀
用查找替换,把后缀(.jpg)替换为空
这样文件名都获取到,就是整个数据集所有的图片名称了。
然后按照"trainval大约占整个数据集的50%,test大约为整个数据集的50%;train大约是trainval的50%,val大约为trainval的50%"的比例,把
test.txt:测试集
train.txt:训练集
val.txt:验证集
trainval.txt:训练和验证集
四个文件建好,
里面就按上述规则放入图片名字。(trainval和test别重复了)
https://blog.csdn.net/qq_21464351/article/details/104838456
这篇博客写的很详细。照着做就行。
但实际操作下来,这篇博客对multibox_loss.py的修改不很对,
对在99行上方不是插入内容,应该覆盖原来的loss_c的设置。(下图注释掉了)
此外在训练过程可视化上,不知道visdom是什么问题,反正就不行。
不过这不影响训练模型。
windows下这个HOME会指向我们的用户文件夹,在后面会引起很多路径问题,最好在config.py中直接改成ssd的根目录。
这里有个num_workers,原来是4,有说法说,如果不是0的话,可能遇到多线程的问题,
具体表现是不管batch_size多低,显卡显存多么充足,都无法分配显存。
所以最好改到0。
https://zhuanlan.zhihu.com/p/93883352
直接跟着这位dalao走一遍。(主要就是把他最后一段代码复制覆盖到我们的demo/live.py)
记得设置自己的个性化内容:
49行的frame是结果可视化的图片源
59行的net建立神经网络的方法调用里,没有用config里面的全局设定,把build_ssd最后一个参数改成和config.py里类数量一样(自己模型的类别+1)
运行: