ubantu+pytorch环境下运行SSD算法

前言:最近由于项目的进展,需要测试SSD算法。但是目前在网上没有发现较为系统的运行指导。自己摸索着将算法跑通。特此开一贴记录自己的流程,供后来的大佬们参考。以下是自己在开源代码提供的数据集下得到的结果。ubantu+pytorch环境下运行SSD算法_第1张图片
1、环境的搭建:这个就不叙述了,主要的环境就是pytorch0.4.1+py36,自己找一下安装教程,网上很多。
2、环境安装安装后首先下载源代码

git clone https://github.com/amdegroot/ssd.pytorch.git

3、下载数据集:自己在运行过程中发现,作者提供的coco数据集下载存在问题,而且作者默认的数据集是voc数据集。所以自己便只下载voc07,voc12两个数据集,具体的下载流程是

sh data/scripts/VOC2007.sh
sh data/scripts/VOC2012.sh

别问为什么这样下载,我也不清楚,学着下载就是喽,哈哈哈!下载完,你会发现你的电脑里多了一个data文件夹,下载的东西就存在那里
4、安装预训练模型

mkdir weights
cd weights
wget https://s3.amazonaws.com/amdegroot-models/vgg16_reducedfc.pth
# 训练好的VOC权重
wget https://s3.amazonaws.com/amdegroot-models/ssd300_mAP_77.43_v2.pth

到此安装到此结束。下面讲一下运行前代码需要改动的部分
1首先是针对学习率的修改:
作者提供的默认的学习率太大了,往往训练两次会出现loss=nan的情况,所以推荐将学习率修改为0.000001,学习率的修改在train.py中
2、针对代码的修改
参照网上原有的教程
修改如下:
1、在multibox_loss.py:中调换第97,98行:

loss_c = loss_c.view(num, -1) 
loss_c[pos] = 0 # filter out pos boxes for now

2、修改第114行为:

N = num_pos.data.sum().double() 
loss_l = loss_l.double() 
loss_c = loss_c.double()

3、在运行的过程中,会出现StopIternation的错误,所以在train.py修改164行代码`

images, targets = next(batch_iterator)

将代码转换为:

 try:
     images, targets = next(batch_iterator)
 except StopIteration:
     batch_iterator=iter(data_loader)
     images, targets = next(batch_iterator)

至此代码部分修改完毕,下面进行训练:

python train.py

进行检测

python eval.py

好的,到此SSD算法应该就结束了。更换自己的数据集,由于自己还未开始,等到训练结束后更新。
参考文档:
https://blog.csdn.net/qq_39571318/article/details/89788687?utm_source=distribute.pc_relevant.none-task

你可能感兴趣的:(神经网络,深度学习,pytorch)