YOLOFaceV2笔记
论文地址:2022-CVPR-YOLO-FaceV2: A Scale and Occlusion Aware Face Detector
论文代码:https://github.com/Krasjet-Yu/YOLO-FaceV2
Abstract
- 现有目标(人脸)检测算法已取得很大的进展,如BlazeFace、RetinaFace、RCNN系列、YOLO系列等;
- 这些算法可以被分为两大类:两阶段的(RCNN系列)和单阶段的(YOLO系列);
- 本文基于单阶段的yolov5提出了一个实时的face detector:YOLO-FaceV2;
- 主要改进的部分有以下几方面:
(1)设计了一个被称为RFE(receptive field enhancement module)的感受野增强模块来增强小脸的感受野;
(2)利用NWD loss来弥补IoU对微小物体位置偏差的敏感性;
(3)针对人脸遮挡问题,提出了一种名为SEAM的注意模块,并引入排斥损失(Repulsion Loss)来解决;
(4)还利用权重函数Slide来解决易样本和难样本之间的不平衡,并利用有效接受野的信息来设计锚。
5.最后通过实验证明yolofacev2性能好。
1 Introduction
通过仔细分析现有人脸检测算法遇到的困难和yolov5检测算法的缺陷,本文从以下几方面进行改进:
- 多尺度融合:RFE;
- ** 注意力机制:SEAM;**
- 难样例:Slide 权重函数;
- 锚点设计:设计多个锚框的比例;
- 回归损失:NWD(Normalized Wasserstein Distance)与IoU以不同的权重进行结合;
本文的主要贡献如下:
- 为了检测多尺度的人脸,感受野和分辨率是关键因素。因此,在本文中设计了RFE模块(receptive field enhancement module)以学习特征图的不同接受域,并进行增强特征金字塔表示;
- 本文中将人脸遮挡(face occlusions)分为两大类:不同人脸之间的遮挡与其他物体对人脸的遮挡。前者使用排斥损失Repulsion Loss惩罚预测框转移到其他真实对象,要求每个预测框远离其他具有不同指定目标的预测框,以降低检测结果对NMS的敏感性。后者使用 SEAM注意力机制以增强面部特征学习能力。
- 为了解决难易样例间的不平衡问题,根据IoU以对不同的样例进行加权,主要使用的方式是Slide权重函数;
3 YOLO-FaceV2
3.1 Network Architecture
YOLOFaceV2主要由3部分构成:backbone [ CSPDarknet53 ]、neck [ SPP、PAN ]、heads。(与yolov5、yolov5face基本一致。)
【
SPP:单独的P3、P4、P5模块;
PAN:P3、P4、P5等进行整合的操作;细节参考:(https://www.cnblogs.com/AIBigTruth/p/15100810.html)
】
3.2 Scale-Aware RFE Model
不同的接收域大小意味着捕获远程依赖的能力不同。
在RFE中主要使用的是dilated conv。并使用不同比列的膨胀卷积进行不同卷积操作,即:
使用4种不同比例的扩展卷积分支来捕获多尺度信息和不同的依赖范围,且这些分支间权值共享,唯一的不同就是接受域不同。
且此方式的好处是:
- 减少了模型参数,同时减少潜在的overfitting风险;
- 可以充分利用每个样例。(主要是因为可以进行不同尺寸的操作~)。
RFE模块主要由两部分构成:基于膨胀(扩张)卷积的多分支和 gathering&weighting layer。具体如下图:
其中多分支主要是通过设置不同比列的膨胀卷积来实现的;收集和加权层(gathering and weighting layer)用于从不同的分支收集信息,并对特征的每个分支进行加权。
4 Experiments
在本章,主要对所提出的方法进行了全面的消融,包括注意模块、多尺度融合金字塔结构和损失函数设计的有效性。最后与其他SOTA人脸检测器的性能进行了比较。
4.1 Dataset
WiderFace:由超过400K张人脸的33203张图像构成。其包含训练(40%)、测试(50%)与验证(10%)三部分;根据困难程度,WidefFace又可被分为三部分:easy、medium和hard。
4.2 Training
- 与yolov5face一样同样使用yolov5作为baseline;
- optimizer使用的是:SGD;初始学习率:1e-2;最终学习率1e-3;权重缩减:5e-3;前3轮进行warming-up,且仅在该情况下的动量参数为0.8,其他情况下动量参数为0.937;
- IoU阈值为0.5;
- 硬件资源:1080ti,4核;
- 以batch size为16的情况下迭代100次进行微调。
4.3 Ablation Study
4.3.1 SEMA Block
SEAM块是注意网络。通过使用该块,以通过增强未遮挡人脸的响应来弥补被遮挡人脸的响应损失。[实验性能对应下表:Table2中第2行~]
(上表中序号为对应的行数)
4.3.2 Multi-scale feature fusion
(1)在PAN的基础上融合P2层特征,以使得融合得到的特征图中包含更多小目标信息;[实验性能参考上表:Table2中第3行~]
(2)为了弥补颈部层(neck layer)输出特征图接受域有限,导致大中型目标检测精度下降的不足,使用了RFE模块;[实验性能如上表:Table2中第4行]
4.3.3 Slide Loss
使用Slide Loss的主要目标是:使得模型更加关注hard样例;[对应实现性能如上表:Table2中第5行]
4.3.4 Anchor Design
锚的比例和大小与有效感受野密切相关。[…第6行]
4.3.5 NWD Loss
首先使用NWD Loss替换IoU作为回归损失,但是性能并未提高。
因此选择保留IoU Loss,通过调整IoU Loss和MWD Loss之间的比例关系来提高模型对小目标检测的鲁棒性。因为实验结果表明,对于大中型目标,测量的效果IoU优于NWD, NWD可以有效提高小目标的检测精度。具体实验结果如下表(Table3):
4.3.6 Balance of RepGT and RepBpx
受行人遮挡问题的解决方案启发,作者在人脸检测中加入了排斥损失函数(Repulsion Loss),并分析了不同的人脸遮挡阈值,使该损失函数适用于人脸检测。[实验结果参考Table2中第8行。]
4.4 Comparisons with Existing Face Dectors
5 Conclusion
- 本文基于yolov5提出了yolofacev2,旨在解决人脸尺度变化(多尺度问题)、难易样本不平衡、面部遮挡等问题;
- 将P2层融合到特征金字塔中以提高小目标的分辨率,设计RFE模块以增强接受域,并使用NWD Loss来提高模型对小目标检测的鲁棒性;(多尺度问题)
- 引入Slide权值函数来缓解简单样例和难检测样例的不平衡;(数据不平衡)
- 使用SEMA模块和Repulsion Loss解决面部遮挡问题;(面部遮挡)
- 最终yolofacev2在widerface数据集上实现了接近或超过SOTA的性能。
########################################################################################
模型训练
YOLOFaceV2笔记相关推荐
- 【干货】AI全栈工程师学习+进阶+实战笔记
今天给大家推荐一个好朋友小书童,不仅有趣也具有非常强的执行力,独自创立和运营了[集智书童]公众号: [集智书童]从最开始的机器学习与深度学习基础开始记起,为刚刚入门人工智能的小伙伴提供理论基础: 同时 ...
- 【读书笔记】知易行难,多实践
前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...
- 【运维学习笔记】生命不息,搞事开始。。。
001生命不息,搞事不止!!! 这段时间和hexesdesu搞了很多事情! 之前是机械硬盘和固态硬盘的测速,我就在那默默的看着他一个硬盘一个机械测来测去. 坐在他后面,每天都能看到这位萌萌的小男孩,各 ...
- SSAN 关系抽取 论文笔记
20210621 https://zhuanlan.zhihu.com/p/353183322 [KG笔记]八.文档级(Document Level)关系抽取任务 共指id嵌入一样 但是实体嵌入的时候 ...
- pandas以前笔记
# -*- coding: utf-8 -*- """ Created on Sat Jul 21 20:06:20 2018@author: heimi "& ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 王道考研 计算机网络笔记 第六章:应用层
本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...
最新文章
- python 类继承和组合_python3--类与继承和组合
- CentOS 6.0安装ipvsadm 1.26错误笔录
- ui设计 网络错误_UI设计人员常犯的10个错误
- 前端学习(2219):react之jsx小案例
- shell 查出文件并复制到另一个文件夹
- 下载丨6月数据库技术通讯:不规范SQL引发大量TX锁
- 收文处理和发文处理的环节_公文处理,如何提速增效
- HTTP 1 1与HTTP 1 0的比较
- 详解sqlserver 执行计划
- 浏览器插件检测淘宝订单是否淘客下单
- 小武实习的debug日记
- c语言编辑图形时钟软件,C++实现图形界面时钟表盘代码
- OneZero第四周第五次站立会议(2016.4.15)
- 开源项目推荐:“蚂蚁呀嘿/蚂蚁牙黑”AI社交软件
- 国内TCP单边“加速”的“正确”做法
- 芝加哥犯罪率数据集(数据分析与特征处理)
- Centos7 连接wifi (PEAP)
- win10系统Jinlk固件烧写
- window下Slik SVN的安装配置
- web前端开发学什么,JavaScript逻辑运算符与赋值运算符
热门文章
- 用Python也能画图?用Python来画个“python”~
- (二)应用层 -- 2. Web和HTTP(下)
- AEJoy —— 表达式之模拟超越与反弹(四)【JS】
- UVALive - 5542 Commedia dell' arte 三维n数码问题
- 前端面试题(适合vue)
- 达梦数据库的模式、状态介绍
- 关于Reflow回流
- 模型视图简介、QListWidget、QTreeWidget、QTableWidget、QStringListModel、QFileSystemModel
- 关于Unity出现青色闪屏
- 线性八叉树_八叉树OcTree