4篇很快的人脸检测论文速读

本文速读了四篇关于人脸检测的论文,包括FaceBoxes、LFFD、EXTD和RetinaFace。这些论文聚焦于提高检测速度和准确性,通过改进网络结构和特征提取方法,如使用CReLU、Inception模块、anchor设计和感受野调整。每篇论文都提供了相关代码实现,涉及CPU实时检测、边缘设备优化和极端小目标检测。文章最后指出,单阶段目标检测面临多尺度目标和样本不平衡的挑战,未来将继续关注此领域的进展。
摘要由CSDN通过智能技术生成

四篇人脸检测论文速读与实践

1.《FaceBoxes: A CPU Real-time Face Detector with High Accuracy

code:https://github.com/sfzhang15/FaceBoxes

这篇论文主要就是将不用层次的特征图用于检测不同尺度大小的人脸(自SSD 等开始,全都是这种套路),先上整体结构图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KHk1Q0p6-1595067806440)(1.PNG)]

上图清晰地可以看到网络结构分为两大部分,分别是:

  • the Rapidly Digested Convolutional Layers (RDCL) :用于提取主干特征,这里主要是考虑如何加速,包括使用合适地卷积核大小,通道数等,还有激活函数采用CReLU可以减半通道数等,CReLU结构如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFdhASOo-1595067806444)(2.PNG)]

  • Multiple Scale Convolutional Layers :这个模块是提供多尺度人脸检测特征图,采用 Inception:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mPzSWzx5-1595067806446)(3.PNG)]

作者在anchor这一步考虑 人脸大小地不一致,anchor采样的密度也不一样,导致对于小脸来说anchor的密度太低了,这样不好,所以作者采用下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fuui7hoz-1595067806449)(4.PNG)]

看不太清楚没有关系,可以看一下相关代码:

class PriorBox(object):
    def __init__(self, cfg, image_size=None, phase='train'):
        super(PriorBox, self).__init__()
        #self.aspect_ratios = cfg['aspect_ratios']
        self.min_sizes = cfg['min_sizes']
        self.steps = cfg['steps']
        self.clip = cfg['clip']
        self.image_size = image_size
        self.feature_maps = [[ceil(self.image_size[0]/step), ceil(self.image_size[1]/step)] for step in self.steps]

    def forward(self):
        anchors = []
        for k, f in enumerate(self.feature_maps):
            min_sizes = self.min_sizes[k]
            for i, j in product(range(f[0]), range(f[1])):
                for min_size in min_sizes:
                    s_kx = min_size / self.image_size[1]
                    s_ky = min_size / self.image_size[0]
                    if min_size == 32:  # 就在这里
                        dense_cx = [x*self.steps[k]/self.image_size[1] for x in [j+0, j+0.25, j+0.5, j+0.75]]
                        dense_cy = [y*self.steps[k]/self.image_size[0] for y in [i+0, i+0.25, i+0.5, i+0.75]]
                        for cy, cx in product(dense_cy, dense_cx):
                            anchors += [cx, cy, s_kx, s_ky]
                    elif min_size == 64:
                        dense_cx = [x*self.steps[k]/self.image_size[1] for x in [j+0, j+0.5]]
                        dense_cy = [y*self.steps[k]/self.image_size[0] for y in [i+0, i+0.5]]
                        for cy, cx in product(dense_cy, dense_cx):
                            anchors += [cx, cy, s_kx, s_ky]
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值