【EMFace】《EMface: Detecting Hard Faces by Exploring Receptive Field Pyramids》

在这里插入图片描述

arXiv-2021


文章目录

  • 1 Background and Motivation
  • 2 Related Work
  • 3 Advantages / Contributions
  • 4 Method
  • 5 Experiments
    • 5.1 Datasets and Metrics
    • 5.2 Ablation Study
    • 5.3 Comparison with State-of-the-Arts
  • 6 Conclusion(own)


1 Background and Motivation

尺度变化是人脸检测中最具挑战性的问题之一

在这里插入图片描述

Modern face detectors employ feature pyramids to deal with scale variation

但是特征金字塔存在如下问题:

it might break the feature consistency across different scales of faces(想表达的是一定范围的尺寸人脸,eg 50~100大小的,都落在一张特征图上,怕特征图 hold 不住)

作者对特征金字塔进行改进,提出 EMFace(EXPLORING RECEPTIVE)

2 Related Work

  • CNN-based face detection
  • receptive fields for recognition tasks
    • ASPP
    • RFB Net
    • Deformable convolution

3 Advantages / Contributions

  • 提出 EMFace,核心模块为感受野金字塔(Receptive Field Pyramid)
  • 感受野金字塔中的 pooling 模块,多分支训练,单分支测试,速度得以提升
  • 在 WIDER FACE 和 UFDD 数据集上,验证了其速度和精度
    在这里插入图片描述

The branch pooling balances the representations of parallel branches during training and enables a single branch to implement inference during testing

4 Method

在这里插入图片描述
特征金字塔 P2~P7,这个本身应该提点很猛,哈哈哈

RFP 的细节如下

  • multi-branch convolution layer
  • branch pooling layer
    在这里插入图片描述

先经过三个权重共享的空洞卷积+残差结构

在这里插入图片描述
再接个 Branch Pooling 结构

在这里插入图片描述
B = 3

RFP 输入输出维度相同

代码:https://github.com/emdata-ailab/EMface

class MRF(nn.Module):def __init__(self,in_planes):super(MRF,self).__init__()self.share_weight=nn.Parameter(torch.randn(in_planes,in_planes,3,3)) # 共享权重,卷积核 3x3self.bn1=nn.BatchNorm2d(in_planes)self.bn2=nn.BatchNorm2d(in_planes)self.bn3=nn.BatchNorm2d(in_planes)self.relu1=nn.ReLU(inplace=True)self.relu2=nn.ReLU(inplace=True)self.relu3=nn.ReLU(inplace=True)def forward(self,x):residual=xx1=F.conv2d(x,self.share_weight, stride=1, padding=1,bias=None, dilation=1)x1=self.bn1(x1)x1=x1+residualx1=self.relu1(x1)x2=F.conv2d(x,self.share_weight, stride=1, padding=3,bias=None, dilation=3)x2=self.bn2(x2)x2=x2+residualx2=self.relu2(x2)x3=F.conv2d(x,self.share_weight,stride=1, padding=5,bias=None, dilation=5)x3=self.bn3(x3)x3=x3+residualx3=self.relu3(x3)y=torch.cat((x1, x2, x3), dim=1) # (n, 3*in_planes, h, w)b,c,h,w=y.size()y=y.view(b,3,c//3,h,w) # (n, 3, in_planes, h, w)y1=y.mean(dim=1,keepdim=True) # (n, 1, in_planes, h, w)y=y1.view(b,-1,h,w) # (n, in_planes, h, w)return y

调用

self.MR1=MRF(256)
self.MR2=MRF(256)
self.MR3=MRF(256)
self.MR4=MRF(256)
self.MR5=MRF(256)
self.MR6=MRF(256)

5 Experiments

ResNet50 + FPN

5.1 Datasets and Metrics

WIDER FACE and UFDD

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

metrics 为 AP

5.2 Ablation Study

(1)Number of Branches

在这里插入图片描述
3 个 Branch 计算量和精度权衡最好

(2)Weight Sharing.

在这里插入图片描述
RFP 中 multi-branch convolution 的权重 share 参数量减少很多,精度略微下降

(3)Branch Pooling.

在这里插入图片描述
训练的时候 3 branches,测试的时候选择不同的输出方式,输出数量,输出组合形式(BP,add,concat)

we drop out the Branch-1 and Branch-3 (d=1 and d=5 in Figure 4) in RFP and only keep the Branch-2 to output in the
inference phase.

作者测试时最终仅保留了 branch-2 作为输出

在这里插入图片描述

5.3 Comparison with State-of-the-Arts

(1)WIDER FACE
在这里插入图片描述

(2)UFDD
在这里插入图片描述

6 Conclusion(own)

  • 标题单词都搞错了,哈哈,pyramids

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/174138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

获取lambda 表达式类名和方法名

lambda表达式在序列化时系统会自动生成writeReplace方法&#xff0c;该方法返回SerializedLambda对象&#xff0c;包含了lambda表达式的信息&#xff0c;包括类名方法名。 例如&#xff1a; public interface FieldChecker<T, R> {default R checkField(SFunction<T…

Spring 中存储 Bean 的相关注解

Bean的存 IoC控制反转&#xff0c;就是将对象的控制权交给Spring的IOC容器&#xff0c;由IOC容器创建及管理对象。 也就是bean的存储 类注解:五大注解 Controller&#xff08;控制器存储&#xff09; Service&#xff08;服务存储&#xff09; Component&#xff08;组件存储…

filebeat报错dropping too large message of size

filebeat报错&#xff1a; dropping too large message of size 1714620. 原因&#xff1a; kafka对每一条消息的大小进行了限制。 解决 kafka端 修改config/server.properties&#xff0c;添加以下配置 max_message_bytes10000000 replica.fetch.max.bytes10000000修改…

深思:C与C++相互调用问题

背景 上周&#xff0c;偶然看到同事愁眉苦脸的样子&#xff0c;便善意咨询了下发生了什么。简单沟通下&#xff0c;才知道他遇到了一个工程编译的问题&#xff0c;一直无法编译通过&#xff0c;困扰了他快一天时间。出于个人的求知欲和知识的渴望&#xff0c;我便主动与他一同分…

Pyqt5 组件绑定函数传递参数

使用匿名函数进行参数的传递&#xff0c;可以传递多个参数&#xff0c;也可以只传递一个 self.upLoadNewBtn.clicked.connect(lambda: self.upload_dir("new", )) self.upLoadNewBtn.clicked.connect(lambda: self.upload_dir("new", ))# 选择文件夹 def…

【数据结构】堆的实现

目录 1. 前言2. 堆的实现2.1 初始化2.2 插入2.2.1 分析2.2.1.1 情况一2.2.1.2 情况二2.2.1.3 情况三 2.2.2 插入代码实现2.2.2.1 向上调整代码 2.3 删除2.3.1 分析2.3.2 删除代码实现2.3.2.1 向下调整代码 2.4 找根节点数据2.5 元素个数2.6 判空2.7 销毁 3. 源代码3.1 Heap.h3.…

许战海战略文库|主品牌升级为产业技术品牌,引领企业全球化发展

在当今高速发展的全球经济中&#xff0c;企业品牌已经成为其核心资产之一。这不仅仅是因为品牌可以为消费者带来识别度&#xff0c;更重要的是&#xff0c;它们可以为企业带来深厚的竞争壁垒。但对于许多企业来说&#xff0c;特别是技术密集型企业&#xff0c;仅仅依靠主品牌的…

如何让消费者接受品牌,口碑营销怎么做?

当新品牌进入小红书时&#xff0c;如何进行口碑营销是一个重要的问题。很多新品牌在刚刚进入小红书时&#xff0c;对于一些敏感时机把握的不准其实本质上&#xff0c;就是不明白什么阶段该做什么事。今天分享的就是如何让消费者接受品牌&#xff0c;口碑营销怎么做&#xff1f;…

电量计驱动代码

外部电量计驱动代码,直接上代码了,懒,不做细节分析。。。。。 /** Fuelgauge battery driver** This package is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License version 2 as* published by the Free Soft…

vue3使用高德地图获取经纬度

首先 安装依赖 cnpm i amap/amap-jsapi-loader --save <script setup> import { onMounted, reactive, ref } from vue import AMapLoader from amap/amap-jsapi-loaderconst map ref(null) const mapData reactive({map: {},keyword: ,selectedLocation: {},selecte…

python object类型

# object类是所有类的父类 # type是所有类的类型&#xff0c;也就是所有类都是由type实例化而来&#xff0c;包括type类和父类object # class 继承object 同时又type类实例化。其中type就是元类print(type的父类,type.__base__) class test:pass print(class的父类是&#xff1…

NX二次开发UF_CURVE_ask_spline_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_spline_data Defined in: uf_curve.h int UF_CURVE_ask_spline_data(tag_t spline_tag, UF_CURVE_spline_p_t spline_data ) overview 概述 Reads the spline data a…

Java核心知识点整理大全18-笔记

Java核心知识点整理大全-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全4-笔记-CSDN博客 Java核心知识点整理大全5-笔记-CSDN博客 Java核心知识点整理大全6…

抖音小店怎么做?新手应该怎么运营?实操经验分享!

我是电商珠珠 抖音小店的热度一天天在攀升&#xff0c;很多新手小白都会跑来问我&#xff0c;想做抖音小店具体要怎么做。 接下来&#xff0c;我从头到尾的跟大家讲一遍&#xff0c;注意重点。 第一&#xff0c;入驻 入驻的时候需要准备一张营业执照&#xff0c;对于新手来…

Map<Object>, List<Object>>返回满足条件的数据

Map<Object>, List<Object>>返回满足条件的数据 当一个表查询多次时&#xff0c;为了减少数据库的查询操作&#xff0c;可以使用stream流来进行条件筛选&#xff0c;获取所需要的数据。 例&#xff1a; Map<Long, List<PurchaseOrder>> orderMap…

Linux驱动开发——网络设备驱动(理论篇)

目录 一、前言 二、网络层次结构 三、网络设备驱动核心数据结构和函数 一、前言 网络设备驱动是 Linux 的第三大类驱动&#xff0c;也是我们学习的最后一类 Linux 驱动。这里我们首先简单学习一下网络协议层次结构&#xff0c;然后简单讨论 Linux 内核中网络实现的层次结构。…

接口测试工具(Jmeter)必学技巧

安装 使用JMeter的前提需要安装JDK&#xff0c;需要JDK1.7以上版本目前在用的是JMeter5.2版本&#xff0c;大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin&#xff0c;双击jmeter.bat启动运行 启动后默认为英文版本&#xff0c;可通过Options – Cho…

m3u8及其应用

m3u8与协程 HLS找m3u8AES加、解密实例 HLS 即HTTP Live Streaming&#xff0c;将流媒体切分为若干TS片段&#xff0c;通过一个M3U8列表文件将TS片段批量下载实时流式播放。 #EXTM3U:第一行tag标识。#EXT-X-VERSION:版本#EXT-X-TARGETDURATION:定义每个TS的【最大】duration&a…

【知网稳定检索】2024年应用经济学,管理科学与社会发展国际学术会议(AEMSS 2024)

2024年应用经济学&#xff0c;管理科学与社会发展国际学术会议&#xff08;AEMSS 2024&#xff09; 2024 International Conference on Applied Economics, Management Science and Social Development 2024年应用经济学&#xff0c;管理科学与社会发展国际学术会议&#xff…

C++ 协程

经典协程辅助入门代码&#xff1a; typedef cotask::task my_task_t; int main() { // create a task using factory function [with lambda expression] my_task_t::ptr_t task my_task_t::create([]() { //创建协程 std::cout ()->get_id() cotask::this_task::get…