1、SSH单阶人脸段检测器,在不同层检测不同scale的人脸,而不是使用mtcnn中金字塔的方式,从而实现加速。
2、SSH的整体结构,3个module的stride分别为8,16,32,使用不同的感受野,从而实现多尺度;三个Module独立训练、检测,
最终结果NMS。
3、检测模块和上下文模块。在context-module中,使用5*5和7*7的卷积增大感受野,又分别用2个和3个 3*3代替5*5和7*7。
4、训练与测试
训练时,三个分支独立训练,各自的loss独立,每个Module匹配对应尺度的anchor,并将对应尺度的Loss回传;
anchor的尺度为{1:2,4:8, 16:32}×16
使用OHEM效果会更好:选择得分最高的负样本和得分最低的正样本(难分的样本)
在训练阶段,每个module产生256个anchor,而在测试阶段,每个module产生1000个anchors
在对比试验中,有一个比较有趣。作者使用了更多尺度的anchor,S 1 = {0.25, 0.5, 1, 2, 3}, S 2 = {4, 6, 8, 10, 12}, S 3 =
{16, 20, 24, 28, 32},但发现ap变低了,因为产生了更多的false postive。
5、对比
SSD、SSH、SNIP都用到了多尺度训练,那么他们的区别呢(主要是训练时anchor与gt的匹配)?
SSD:每个layer会生成各个尺度的anchor,并且与各个gt匹配,loss反传时,只更新该anchor的layer;
SSH:每个分支匹配特定范围的anchor(通过设计anchor的大小尺度来实现,不需要特殊层),只更新anchor所处分支的loss;
SNIP:把图像缩放成图像金字塔后,只处理每个金字塔图像里的特定尺度的proposal
参考:https://zhuanlan.zhihu.com/p/37715872