目标检测系列文章
yolo v1原理:https://blog.csdn.net/cjnewstar111/article/details/94035842
yolo v2原理:https://blog.csdn.net/cjnewstar111/article/details/94037110
yolo v3原理:https://blog.csdn.net/cjnewstar111/article/details/94037828
SSD原理:https://blog.csdn.net/cjnewstar111/article/details/94038536
FoveaBox:https://blog.csdn.net/cjnewstar111/article/details/94203397
FCOS:https://blog.csdn.net/cjnewstar111/article/details/94021688
FSAF: https://blog.csdn.net/cjnewstar111/article/details/94019687
基本原理
在多个尺寸的feature map上面使用anchors预测,每个anchor对应4个坐标+1组分类概率(包含背景类别)
网络结构
实现细节
anchor生成规则:
在SSD中6层卷积层的每个特征图的每个中心点会产生2个不同大小的正方形默认框,另外每设置一个aspect_ratio则会增加两个长方形默认框,而文中代码对于6层的aspect_ratio个数分别为1、2、2、2、1、1,所以这也就是为什么会产生4、6、6、6、4、4个默认框了。举例如下:
根据以上分析,我们可以计算6层中每个特征图的每个中心点所产生的默认框的大小,分别如下:
conv4_3:
小正方形边长=min_size=30,大正方形边长=sqrt(min_size*max_size)=sprt(30*60)=42.42;
长方形的宽=sqrt(aspect_ratio)*min_size=sqrt(2)*30,高=1/sqrt(aspect_ratio)*min_size=30/sqrt(2),宽高比刚好为2:1;
将以上宽高旋转90度产生另一个长方形,宽高比变为1:2。
fc7:
小正方形边长=min_size=60,大正方形边长=sqrt(min_size*max_size)=sprt(60*111)=81.6;
第1组长方形的宽=sqrt(aspect_ratio)*min_size=sqrt(2)*60,高=1/sqrt(aspect_ratio)*min_size=60/sqrt(2),宽高比刚好为2:1;
将以上宽高旋转90度产生另一个长方形,宽高比变为1:2。
第2组长方形的宽=sqrt(aspect_ratio)*min_size=sqrt(3)*60,高=1/sqrt(aspect_ratio)*min_size=60/sqrt(3),宽高比刚好为3:1;
将以上宽高旋转90度产生另一个长方形,宽高比变为1:3。
conv6_2:
小正方形边长=min_size=111,大正方形边长=sqrt(min_size*max_size)=sprt(111*162);
第1组长方形的宽=sqrt(aspect_ratio)*min_size=sqrt(2)*111,高=1/sqrt(aspect_ratio)*min_size=111/sqrt(2),宽高比刚好为2:1;
将以上宽高旋转90度产生另一个长方形,宽高比变为1:2。
第2组长方形的宽=sqrt(aspect_ratio)*min_size=sqrt(3)*111,高=1/sqrt(aspect_ratio)*min_size=111/sqrt(3),宽高比刚好为3:1;
将以上宽高旋转90度产生另一个长方形,宽高比变为1:3。
......
位置信息(与RCNN一致)
位置信息采用(X中心,Y中心,宽,高)表示
假设anchor(default box)使用如下坐标表示
gt使用如下坐标表示
偏移使用如下公式表示:
损失函数
正负样例的选择
与gt的IOU最大的先验框作为正样例
剩余未匹配的先验框如果与某个gt的IOU大于阈值(0.5),也作为正样例
正负样例平衡
采用所谓的hard negtive mining策略。即选取背景概率最大的top k个作为负样本,使得正负样本比例为1:3
参考资料
《目标检测——one-stage 检测(二)》