SSD的default box计算方式:
-
以feature map上每个点的中点为中心(offset=0.5),生成一些列同心的prior box(然后中心点的坐标会乘以step,相当于从feature map位置映射回原图位置)
-
正方形prior box最小边长为
image
,最大边长为:
image -
每在prototxt设置一个aspect ratio,会生成2个长方形,长宽为:
image
和
image
image
而每个feature map对应prior box的min_size和max_size由以下公式决定,公式中m是使用feature map的数量(SSD 300中m=6):
image
第一层feature map对应的min_size=S1,max_size=S2;第二层min_size=S2,max_size=S3;其他类推。在原文中,Smin=0.2,Smax=0.9
具体计算方式在SSD的训练脚本ssd_pascal.py中如下:
具体计算可以由以下说明:
image
image
简单来讲,对于第一层feature给定了min_sizes和max_size,剩余五层之间的间隔为step。step其实指定的是到feature对应到原图的一种计算中间数。min_ratio和max_ratio是原图的尺寸比例,可以理想地理解为,(对于300x300的SSD)最小的default box面积为0.2x300x300,最大为0.9x300x300。
image
因此,对于检测较小像素比例的物体时,可以改变min_ratio和max_ratio的大小来对网络进行调整,比如调整为0.1到0.5,那么这样的网络适用于所有检测的物体的面积都不大于整副图的一半儿。当然,如果能调整对应的每层的feature map的大小效果更好。
网友评论