目录
1.准备自己的数据集
pytorch-ssd可以支持VOC和COCO两种数据格式,所以你要将自己的数据集转化为VOC格式或者COCO格式,相应的转化脚本,请点击(注:SSD-Pytorch中含有自动下载VOC和COCO官方数据的脚本)如下图
2.pytorch环境安装即SSD-pytorch代码下载
点击链接登陆pytorch官网根据电脑的操作系统配置选择安装: http://pytorch.org/
python版本要求python3 + :https://www.python.org/
SSD-Pytorch代码链接:https://github.com/amdegroot/ssd.pytorch
训练模型下载链接(官方模型链接似乎失效了,推荐下载):https://download.csdn.net/download/qq_34374211/10712378
3.正常的修改
根据经验,我们要清楚自己数据集的含有的类别,例如:我自己的数据集为VOC格式,含有8个类别。
修改1:config.py
打开config.py,可以找到这样一段代码,要修改的就是num_class(类别数),更具自己数据集的实际情况进行修改。至于max_iter指的是最大迭代数,在尝试训练阶段,建议把它调低,比如调到1000,在确认训练过程没有问题之后,在调大迭代次数。这样可以有效的节约训练时间。
修改2:VOC0712.py
因为我是用的VOC格式的数据集,所以要在VOC0712.py处理数据。按照自己的数据的类别进行修改。
修改3:train.py
要训练自己的数据集,在这个train.py中我们必须要修改的是预训练的模型,根据自己的下载的预训练模型修改,官方提供的是VGG16_reducedfc_pth,链接已在第二部分提供。批处理数根据排至修改,batch_size越大对显卡的内存要求就越大,我使用的是NVIDIA 1080TI 12G ,batch_size大小使用32. (根据经验,batch_size大小适宜,训练效果会更好)
在尝试阶段,为了节省时间,建议将根据迭代次数保存模型的参数调低,例如调节到500。之后正式开始训练后在调高。
修改4:eval.py
在训练得到模型之后,要修改评估的模型的名。
4.遇到的问题和相应的解决办法
问题1:
解决方法:
将190,191行换成192,和193的内容,还有红框部分的相应修改(如图)
问题2:提示自动跳出迭代
解决方法:
问题3:训练是loss出现抑制为nan的情况
解决方法:
这个问题是由学习率够高引起的,只需降低学习率即可,loss出现一直nan会导致训练出来的模型检测不出来任何东西。 (坑了我好久)
5.成果展示
这是最后根据训练模型得到的评估结果。
这是我在训练和测试自己的数据集中的碰到的问题总结,如有问题,可以发表评论,供大家参考,如有不足,请不吝赐教。