再也不局限于SSD300 和SSD512这两个版本了!!!
BRFSSD_vgg实现修改input size!!!
1、首先准备好一份SSD代码
推荐使用:https://github.com/lzx1413/PytorchSSD
框架:pytorch0.4.0
运行遇到报错:关于Sample.py 下面什么说东西不能放在gpu之类的。进行如下修改
anaconda3/envs/pytorch0.4.0/lib/python3.6/site-packages/torch/utils/data/sampler.py打开之后,修改下面那样
2、首先需要理解,SSD产生预测bbox的机制!RFBSSD也是同样的道理!
打开项目路径下的/PytorchSSD/data/config.py在里面能够看到很多相关配置!
我们这里以512的输入为例子:
‘feature maps’:代表了来自不同层的特征,上面有7个值,来表了7个来源!大小分别是64x64,32x32,16x16,8x8,4x4,2x2,1x1.
‘min_dim’:代表输入图像的大小size
‘steps’:代表了上面那些feature maps分别是原图 下采用倍率,都是一一对应的
‘min_sizes’:代表了在对应feature map上每一个cell(pixle)所采用的anchor的最小size,
‘max_sizes’:同上
‘aspect ratios’:代表了anchor将会使用的长宽比,每一个feature maps来源都会默认使用1,再加上手动设定的比如[2,3]!
其他的暂不讨论。
接下来以第一个64x64 的fearure maps为例子,根据上面的设置,这一层将会得到总共anchor数量为64*64*2(min/max size)*3(ratios)。其他层也一样
3、如何得到ssd 的input size=640
首先建立参数:
【注意】:feature maps的size必须写对,不然后面计算loss的时候网络产生的bbox数目和预先生成的label数目的mask会对不上
在网络模型中加入640这部分的内容,其他的话,记得在训练文件train.py头文件加上VOC_640,以及设定训练参数为VOC 640。