1、SSH单阶人脸段检测器,在不同层检测不同scale的人脸,而不是使用mtcnn中金字塔的方式,从而实现加速。

2、SSH的整体结构,3个module的stride分别为8,16,32,使用不同的感受野,从而实现多尺度;三个Module独立训练、检测,

最终结果NMS。

SSH阅读笔记_图像金字塔



3、检测模块和上下文模块。在context-module中,使用5*5和7*7的卷积增大感受野,又分别用2个和3个 3*3代替5*5和7*7。

SSH阅读笔记_图像缩放_02

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