【ECCV 2016】Grid Loss及其在人脸检测中的应用

article/2025/9/13 16:26:33

本文来源微信公众号:深度学习大讲堂,已授权发布。
作者:时学鹏,中科院计算所VIPL组15级硕士生。导师为山世光研究员。研究方向为基于深度学习的目标检测,特别是人脸检测。研发了VIPL课题组第五代人脸检测SDK。
原文:【Technical Review】ECCV16 Grid Loss及其在人脸检测中的应用
欢迎技术投稿、约稿、给文章纠错,请发送邮件至heyc@csdn.net

什么是人脸检测?简而言之,给定一张图片,判断图中是否有人脸,如果有人脸,进一步给出每一张人脸的位置和大小。这一看似简单的任务,在实际应用中却面临着诸多困难,其中之一就是当人脸被遮挡时,如何才能准确地进行检测。在ECCV 2016上,有一篇文章专门针对检测遮挡人脸的问题进行了探索:Grid Loss: Detecting Occluded Faces,该文章通过设计新的损失函数,综合考虑局部和整体信息对分类的作用,增强了检测器对遮挡的鲁棒性。

图片描述

检测被遮挡的人脸,这一任务的难点在于,遮挡会导致一部分人脸特征缺失,取而代之的是遮挡物的特征,这不仅容易引起分类器误判,还容易造成漏检。解决遮挡人脸检测的问题可以从数据与算法两个方面切入。从数据方面入手的做法较为直接,即在分类器训练阶段,在正样例集中加入一定比例的带遮挡人脸,让分类器从数据中自动去学习带遮挡人脸的变化模式。数据驱动的方式也就意味着对数据的依赖,而遮挡的变化模式复杂多样,如果希望模型能对遮挡有较好的鲁棒性和泛化能力,那将需要非常大量的数据。从算法的角度入手,已有的一些工作在解决遮挡问题时,有些需要在训练数据中标好人脸的五官,这样在训练数据的制备收集阶段要花费更多的精力;有些在人脸检测的预测阶段有额外的计算,这样会因为处理遮挡带来额外的时间开销,而检测本身就是一个对速度极其敏感的任务,这也不是我们希望看到的。

近年来,神经网络在计算机视觉领域得到了广泛应用,也包括人脸检测这个子领域。神经网络的参数优化过程就像是一艘船在茫茫大海上行驶。这一叶扁舟(神经网络的参数),在大海(参数的解空间)上航行,那黑暗中的灯塔(损失函数),放射出耀眼的光辉(梯度),引导着前进的方向(梯度下降)。神经网络具有强大的非线性建模能力,有些时候对于一个问题效果不好,并不是神经网络的表达能力不足,而是损失函数没能引导神经网络的参数落在一个很好的解上。既然如此,可否改进人脸与非人脸分类时使用的损失函数,引导分类网络学习到对遮挡更鲁棒的特征呢?这样,不会在预测阶段带来额外的计算时间,如果损失函数无需额外标注信息,那也不需要额外的数据标注了。

图片描述

这篇文章提出的grid loss就是在这个方向上进行了探索研究。一般的损失函数都是直接根据整个图片的信息计算loss,导致学习出的网络会趋向于利用全局信息分类。这篇文章将分类网络最后一个特征图划分为若干个网格(也就是相当于将图片划分为若干个网格),每个小网格看成一个单独的区域,按同样的方式计算一个loss,与整个图片的loss加和作为最终的loss。这样的loss强化了每一个小网络区域单独的判别能力,使得学习出的特征对于遮挡会更加鲁棒。引用论文中的一个图来说明普通loss与grid loss的区别。

图片描述

grid loss的数学定义如下(这里每一个grid的loss都是一个hinge loss):
图片描述

其中,N代表grid的个数,wi与bi是最后一个featuremap的第i个grid对应的权值参数与偏置项, w = [w1, w2, …, wN]为最后一个featuremap整体对应的权值参数,b = b1 + b2 + … + bN 为其对应的偏置项。这样,公式的第一项代表了整个featuremap上的loss,第二项代表了每一个grid的loss。λ是一个平衡系数,权衡全局的loss与局部的loss大小。m为一个常数,为1 / N,因为希望每一个网格区域对分类有相同的贡献。下图是分类网络的最后一个featuremap分块计算loss的示意图。
图片描述

在检测阶段,直接将训练得到的w和b换为一个对应的全连接层即可,不需要任何额外的计算量。

grid loss经过作者的实验论证,能够比较明显的提升对于遮挡人脸的检测效果。除此之外,作者还发现grid loss可以使网络学习出更加多样性的特征;同时可以起到正则化的作用,在减少训练数据的时候,使用了grid loss的检测器性能下降会更少一些。这一点可以从模型集成的角度理解,因为现在强化了每一个grid的作用,最终学习出的检测器有一点若干个检测器集成的味道。作者使用的检测器,使用logistic loss时,用fddb数据集图像测试, 100个误检下的召回为0.795,使用了grid loss可以达到0.838,提高了大约4个百分点。

最后总结一下,grid loss这篇文章提出了一种提升被遮挡人脸检测性能的方法,这种方法无需额外的数据标注(如标注人脸中的五官),并且是一种离线训练时的策略,对在线的检测阶段没有影响,不会有额外的时间代价。作者论文中使用的检测框架是一个使用了滑动窗口范式的比较原始的框架,笔者认为,未来尝试将grid loss嵌入到一些先进的检测框架,如Faster RCNN里,是一件值得一试的事情。最后的最后,祝各位读者在生活这片海域里,都能找到自己最想要的那个损失函数,向之前进。


130+位讲师,16大分论坛,中国科学院院士陈润生、滴滴出行高级副总裁章文嵩、联想集团高级副总裁兼CTO芮勇、上交所前总工程师白硕等专家将亲临2016中国大数据技术大会,预购从速。

图片描述


http://chatgpt.dhexx.cn/article/urVPkGUp.shtml

相关文章

Linux lvm(pv、vg、lv)操作命令收集

摘要:在Linux中,lvm逻辑卷应用非常广泛,vg卷组可以动态的调整空间大小,逻辑卷的扩容,可以轻松解决系统挂载点空间不足的问题。vg卷组创建的前提是设备分区标签必须为lvm。 一、物理卷操作命令 1、创建物理卷&#xff…

中科院计算所VIPL实验室2篇AAAI 2020论文导读

点击我爱计算机视觉标星,更快获取CVML新技术 经过数个月的审稿,近日,AAAI 2020 公布最终论文接收结果。大会共收到有效论文投稿超过8800 篇,再创历史新高,其中 7737 篇论文进入评审环节,最终有1591 篇被录用…

Linux LVM学习 查看pg,vg,LV的命令

Linux LVM学习 先了解一下PV,VG,LV的命令一张图先看关系物理存储介质(The physical media)这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。 物理卷(PV physical volume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备…

2020年chx的计算机保研之路系列(3)——中科院计算所(获得offer)

写在前面 写这篇博客的时间是2020.7.26。有北航cs保底了,再参加其他夏令营的时候明显就自信了许多,所以计算所面试发挥的也不错。但是,我还真是没想到,在夏令营阶段(真是各路神仙打架),就一举拿…

Self-supervised Equivariant Attention Mechanism for Weakly Supervised Semantic Segmentation论文解读

( CVPR 2020|中科院VIPL实验室 ) 1.要解决的问题: 基于类别标签的弱监督语义分割是一个具有挑战性的问题,类别响应图(class activation map,简称CAM)始终是这一领域的基础方法。但是…

2022年计算机保研记录(计算所、浙大、华科、东南、北航)

在 2022 年 9 月 26 日,我的保研之旅终于结束啦,成功上岸浙江大学软件学院,来记录一下我的保研经历~ 文章目录 一、个人情况二、夏令营浙江大学北京邮电大学中国科学院大学计算所计算机网络信息中心 东南大学北京航空航天大学中南…

CVPR2019| 中科院VIPL实验室11篇CVPR解读:弱监督学习、视频分割、目标检测

点上方蓝字计算机视觉联盟获取更多干货 在右上方 设为星标 ★,与你不见不散 11篇论文的信息概要介绍如下: 1. VRSTC: Occlusion-Free Video Person Re-Identification (Ruibing Hou, Bingpeng Ma, Hong Chang, Xinqian Gu, Shiguang Shan, Xilin Chen) …

VIPL Lab 9篇ACM MM 2019和IEEE TIP 论文精解

点击我爱计算机视觉标星,更快获取CVML新技术 春华秋实,硕果累累。近期,中国科学院计算技术研究所视觉信息处理与学习研究组(VIPL实验室)再创佳绩,有6篇论文被ACM MM 2019接收,还有3篇文章被IEEE…

CVPR2020 | 中科院VIPL实验室录取论文详解

编者按:近日,计算机视觉顶会 CVPR 2020 接收论文结果揭晓,从 6656 篇有效投稿中录取了 1470 篇论文,录取率约为 22%。中科院VIPL实验室共七篇论文录取,内容涉及弱监督语义分割、活体检测、手势识别、视觉问答、行人搜索…

深度优先搜索 广度优先搜索理解

深度优先搜索广度优先搜索 1. 什么是 “搜索” 算法 我们知道,算法都是作用于某种具体的数据结构上的,而深度优先搜索算法和广度优先搜索算法就是作用于图这种数据结构的。 图上的搜索算法,就是从图中的一个顶点出发,到另一个顶…

深度优先搜索广度优先搜索

1 概述 算法是作用于具体的数据结构之上的,深度优先搜索算法和广度优先搜索算法都是基于图这种数据结构的。主要原因是因为图的这种数据结构表达能力很强,大部分涉及搜索的场景都可以抽象成图。 图上的搜索算法,最直接的理解就是&#xff0c…

邻接矩阵的深度优先搜索技术

概述 深度优先搜索(Depth First Search,DFS),是最常见的图搜索方法之一。深度优先搜索沿着一条路径一直走下去,无法行进时,回退回退到刚刚访问的结点,似不撞南墙不回头,不到黄河不死…

图-深度优先遍历

概述 深度优先遍历,从初始访问结点出发,初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第-一个邻接结点,可 以这样理解…

深度优先搜索python

深度优先搜索 概念 深度优先搜索和广度优先搜索一样,都是对图进行搜索的算法,目的也都是从起点开始搜索直到到达指定顶点(终点)。深度优先搜索会沿着一条路径不断往下搜索直到不能再继续为止,然后再折返,…

DFS——深度优先搜索

什么是DFS DFS,中文名深度优先搜索,是一种图的搜索方式,本质上是一种递归。 dfs相当自由,学dfs可能最高境界就和打太极似的,无招胜有招 DFS的经典应用: 1.全排列 虽然感觉没有贴题目的必要 这应该是大多数d…

算法详解之深度优先搜索算法

14天阅读挑战赛 文章目录 1、深度优先搜索(Depth-First Search,DFS)介绍2、深度优先搜索算法思想3、深度优先搜索算法步骤:4、深度优先搜索算法的应用 1、深度优先搜索(Depth-First Search,DFS&#xff09…

第七章:深度优先搜索

不撞南墙不回头-深度优先搜索 广度优先搜索BFS是每次将当前状态能够一步拓展出的所有状态,全部拓展出来依次存入队列。而深度优先搜索是将当前状态按照一定的规则顺序,先拓展一步得到一个新状态,再对这个这个新状态递归拓展下去。如果无法拓…

Java实现深度优先搜索

Java实现深度优先搜索 图的遍历 图的遍历就是访问图中的每个节点并且每个节点只访问一次。但图中有那么多节点,要如何进行访问就是一个问题,所以我们需要有特定的策略来进行访问这些节点。图的访问策略一般有两种:深度优先搜索和广度优先搜…

深度优先搜索

深度优先搜索: 深度优先搜索是对先序遍历的一般化。我们从某个节点开始,先处理,并将标记为已知,然后任意选择的一个邻接顶点,对其进行深度优先搜索,这样就递归的遍历了图的所有顶点。当图中有圈时&#xf…

【基础知识】一文看懂深度优先算法和广度优先算法

概览 先上个图 现在我们要访问图中的每个节点,即图的遍历。 图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次&#xff…