人脸检测之SSH(Single Stage Headless)

文章出自2017 ICCV, SSH: Single Stage Headless Face Detector


感觉SSH最大的特色就是尺度不相关性(scale-invariant),像MTCNN这样的网络在预测的时候,是通过一个for循环输入不同大小scale的图片进行预测再NMS,而SSH只需要一遍forward就可以搞定。实现的途径就是对VGG不同的卷积输出层做了3个分支(M1,M2,M3),每个分支都使用类似的流程预测检测和分类结果。这样的实现从理论来说性能也会比MTCNN有所提高,当然经过优化,MTCNN速度也会很快。


其中,M2和M3的流程基本一样,唯一的区别就是滑动步长的区别,其中,M1,M2,M3中的卷积核滑动步长分别为8,16,32。
M1和M2,M3区别有点大,首先,M1的通道数为128,M2,M3的通道数为512,这里,作者使用了神奇的1*1卷积核进行了降维操作。其次,将第四个卷积层和第五个卷积层的特征进行了融合(Elementwise sum),这里由于第五个卷积层的大小和第四个卷积层的大小不一样,作者队第五个卷积层的输出做了双线性插值的上采样。


其中,M模块的具体细节如上图所示,包含了分类和回归2个内容,分为2条卷积途径,第一个是普通的3*3卷积,第二个,也就是context Module,作者为了获得更多的上下文信息,更大的感受野,对该模块使用了5*5和7*7的卷积分别进行操作,然后进行特征的concat,然后由于大的卷积核效率问题,根据INCEPTION的思想,使用2个3*3的卷积核替代一个5*5的卷积核,使用3个3*3的卷积核替换1个7*7的卷积核,最终形成了上图的context Module。

还有一个需要注意的就是最后作者没有使用全连接层,而是使用了1*1的卷积达到同样的效果,亮点就是输入图片可以输入像fasterRCNN那样不同aspect ratio的图片了。从而可以使得输入图片再保证aspect ratio的同时,输入尽可能大的图片。

 

在上面的整个forward都走完后,再对输出的结果大概3000个(每个module输出1000个)做NMS(阈值0.3)操作,形成最终的结果。

另外一个需要注意的就是,作者anchor的设计,作者只考虑了scale的因素,aspect ratio的比例为固定的1/2,其中M1的scale为(1,2),M2的scale为(4,8),M3的scale为(16,32),其中base anchor为16 pix

 

其他方面,OHEM,smooth L1等都会对结果有提高。

和MTCNN相比,略显遗憾的地方就是没有实现人脸检测和关键点检测的一体化。

 

代码测试:


git clone --recursive https://github.com/mahyarnajibi/SSH.git
cd SSH/caffe-ssh
cp Makefile.config.example Makefile.config
make all –j32
make pycaffe
cd ../lib/
make
cd ..
bash scripts/download_ssh_model.sh
bash scripts/ download_imgnet_model.sh

 

错误:/usr/bin/ld: cannot find -lhdf5_hl

/usr/bin/ld: cannot find -lhdf5

collect2: error: ld returned 1 exit status

Makefile:574: recipe for target'.build_release/lib/libcaffe.so.1.0.0' failed

make: ***[.build_release/lib/libcaffe.so.1.0.0] Error 1

解决:将Makefile 181行

LIBRARIES += glog gflags protobufboost_system boost_filesystem m hdf5_hl hdf5

改为:

LIBRARIES += glog gflags protobufboost_system boost_filesystem m hdf5_serial_hl hdf5_serial

 

错误:fatal error: numpy/arrayobject.h: No such file or directory

解决:apt-get install python-numpy

 

 

python demo.py


python demo.py --im ./data/demo/3.jpg




References:
https://github.com/mahyarnajibi/SSH

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值