细小人脸检测的实践(Finding Tiny Faces论文代码复现)

https://www.cs.cmu.edu/~peiyunh/tiny/这个主页上介绍了CVPR中的一篇文章,关于细小人脸检测的。小物体检测一直还是CV界比较有挑战的一个问题。从作者的摘要可以看出,主要完成了以下三个工作:

We explore three aspects of the problem in the context of finding small faces: 

(1)the role of scale invariance,

(2)image resolution, 

(3)and contextual reasoning. 

具体而言,论文关键点包括以下三个方面:

Multi-task modeling of scales

目前常用的方法是使用尺度归一化分类器或者在 ROI 池化特征图上运行区域分类器。将区域尺寸归一化到一个标准尺寸,会面临一个简单的问题,因此直观的想法是:分别训练不同尺度的检测器。然而这种问题肯定会带来复杂性的增加。通过发现对卷积网络后端小尺寸特征图进行放大,这对检测小目标很重要。因此作者最后采用了尺度不变方式,来处理图像金字塔以捕获大规模变化,并采用特定尺度混合检测器

整个论文实现检测的流程如下:从输入图像开始,首先创建一个粗图像金字塔(包括2X插值)。然后,我们将缩放的输入图像输入到CNN中(论文中采用了resnet-101),以便在每个分辨率下预测模板响应(用于检测和回归)。最后,我们在原始分辨率图像上应用非最大抑制(NMS)来获得最终检测结果。

觉得工作挺有意义的,于是进行了代码的复现。

具体过程:

(1)安装matlab

(2)安装matconvnet,这个必须采用作者的fork版本,否则会出现split函数没有找到的问题。

(3)直接运行

tiny_face_detector.m这个文件进行测试。(利用这种运行的方式可以避免反复加载预训练模型,提高测试效率)

具体的执行过程可以看到如下的字眼,即可以看到实际过程中采用了多种分辨率。

find the pretrained model file ./trained_models/hr_res101.matLoading pretrained detector model... load modelProcessing data/3.jpg at scale 0.062500. Processing data/3.jpg at scale 0.125000. Processing data/3.jpg at scale 0.250000. Processing data/3.jpg at scale 0.500000. Processing data/3.jpg at scale 1.000000. Processing data/3.jpg at scale 1.414214. Processing data/3.jpg at scale 2.000000.

下面为一些测试结果:

这种不是正面拍摄的照片,检测结果居然还是相当好的。

挑了张阅兵的照片,由于原始的照片是:650*350的,检测结果就相对一般了,主要可能是作者采用的20*15的框,已经超过了后面那排的人脸的像素。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏决胜机器学习

机器学习(十五) ——logistic回归实践

机器学习(十五)——logistic回归实践 (原创内容,转载请注明来源,谢谢) 一、概述 logistic回归的核心是sigmoid函数,以...

375100
来自专栏大数据智能实战

pix2pix tensorflow试验(GAN之图像转图像的操作)

GAN是一种典型的概率生成模型,其核心思想是:找出给定观测数据内部的统计规律,并且能够基于所得到的概率分布模型,产生全新的,与观测数据类似的数据。 概率生成模...

57450
来自专栏智能算法

多目标模板匹配

一. 模板匹配 模板匹配是数字图像处理的重要组成部分之一。把不同传感器或同一传感器在不同时间、不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已...

47150
来自专栏郭耀华‘s Blog

MaxPooling的作用

maxpooling主要有两大作用 1. invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺...

30170
来自专栏AI研习社

如何找到最优学习率?

经过了大量炼丹的同学都知道,超参数是一个非常玄乎的东西,比如batch size,学习率等,这些东西的设定并没有什么规律和原因,论文中设定的超参数一般都是靠经验...

442100
来自专栏null的专栏

简单易学的机器学习算法——线性支持向量机

一、线性支持向量机的概念     线性支持向量机是针对线性不可分的数据集的,这样的数据集可以通过近似可分的方法实现分类。对于这样的数据集,类似线性可分支持向量机...

39460
来自专栏Petrichor的专栏

深度学习: 随机失活 (dropout)

按概率p 随机 将神经元 置 0 [如下(b)图],以 缓解 神经元之间 隐形的协同适应,从而达到降低模型复杂度的目的:

39980
来自专栏AI研习社

基于 Keras 对深度学习模型进行微调的全面指南 Part 2

本部分属该两部系列中的第二部分,该系列涵盖了基于 Keras 对深度学习模型的微调。第一部分阐述微调背后的动机和原理,并简要介绍常用的做法和技巧。本部分将详细地...

15130
来自专栏人工智能LeadAI

深度学习 | Why and How:神经网络中的权重初始化

前言 神经网络中的权重(weight)初始化是个常常被忽略的问题。 最近在手写一个Python的神经网络库(GitHub:hamaa——https://gith...

36760
来自专栏AI研习社

Inception Network 各版本演进史

Inception 网络是卷积神经网络 (CNN) 分类器发展中的一个重要里程碑。在 inception 之前, 大多数流行的 CNN 只是将卷积层堆叠得越来越...

15130

扫码关注云+社区

领取腾讯云代金券