人脸检测——UnitBox

2023-10-29

本次介绍一篇来自旷视科技的人脸检测文章:

《2016 ACM MM UnitBox: An Advanced Object Detection Network》.

代码应该是不会放出来了,但好在实现比较简单。(插播一句,论文里面说速度可以达到12fps,我有点慌,大家看看科学不)

—————————— 分割线 ——————————

Introduction

目标检测可以视作两个任务:目标定位 + 视觉识别。

基于深度学习的目标检测大致又可以分为三个部分:

(1)Region Proposal

这一步主要是为了寻找人脸候选区域,常见的方法有Selective Search、 EdgeBoxes 和stages of cascade detectors。这一步往往是算法的瓶颈所在,与性能和速度关联紧密。

(2)Recognition and Categorization

这一步就是为了对窗口进行分类,二分类(人脸非人脸),或者多分类(多目标检测)。

(3)Bounding Box Regression

进一步调整检测框,使之更加精准。(可以看做由粗到细的refine过程)

对比两种方法:
Faster R-CNN: 使用region proposal network(RPN)来预测框,但是由于anchor box的尺寸和长宽比都是预先设定的,因此很难处理大的形状变化,特别是小的目标。

Densebox: 直接预测当前点与ground truth的四条边的距离,并且使用L2 Loss。但是为了检测不同尺度的目标,Densebox使用了图像金字塔,所以计算量很大。

上述两种方法都使用了L2_Loss,这也就意味着把四个坐标当成了独立变量,这显然是与实际不符的,这也是为什么框不准的原因。

因此

为了方便灵活灵活地处理各种角度的目标,作者提出了一种新的IOU_Loss,将四个回归值当做一个整体来处理,不仅提高了准确率而且加速了收敛。

—————————— 分割线 ——————————

IOU Loss Layer

这部分就进入正题了,首先说明一下,预测的四个值并不是人脸框的坐标,而是坐标差值,如下图:

IOU LOSS

从上图出发,我们来认识几点:

L2 Loss Layer

L2 Loss可以看做是欧氏距离,很明显这里面四个坐标是被当做独立变量来优化的。这可能导致下面的问题:

IOU LOSS

左边的人脸框明显比右边的要准一点,但是脸太大,则导致loss最终反而比右边的大,然后我们就去惩罚这个loss,结果最后检测器对小人脸效果就不好了。

IOU Loss Layer:Forward

IOU Loss的定义在第一张图里面其实已经给出来了,这里给出计算一整个人脸的Loss的流程图:

IOU Loss Forward

补充说明:

(1)UnitBox是一个端到端的网络,即输出和输入尺寸一致(后面会讲),因此上面是在循环计算每一个像素的loss;

(2)在输出四个坐标的前一层是一个ReLU层,以此来保证四个预测距离都是正值;

(3)\(IOU \in [0,1]\),因此可以直接忽略bounding box的尺度问题。因此UnitBox可以在多尺度上训练而直接在但尺度上测试。

IOU Loss Layer:Backward

这一部分正常求导即可,有兴趣可以自己导一下,或者参看原文。这里直接给出最后的导数定义:

IOU Loss Forward

由上式可以看出,IOU Loss的目的就是使重叠区域越大越好。

—————————— 分割线 ——————————

UnitBox Network

网络结构如下图:

IOU Loss Forward

使用VGG-16模型finetune,只不过去掉了全连接层,然后又搞成了带有两个分支的全卷积网络:一个分支是pixel级别的bounding box差值坐标,一个是分类得分。

显然输入应该有3个:原始图片,分类得分图(来描述一个像素是否落入ground truth),包围框误差坐标图(来描述与ground truth四条边的距离)

上图中的虚线表示线性插值和crop操作,以保证输出和输入大小一致。

分类得分使用的是sigmoid交叉熵loss,该loss既可以和IOU Loss分开训练也可以联合训练。

如何最终定位人脸:
选定一定阈值,用一个椭圆在分类得分图上框出一个人脸,,然后选择中心坐标,找到其对应的bounding box。

—————————— 分割线 ——————————

Experiments

使用汤晓鸥的WiderFace数据集,这个数据集比较难。

结论:收敛更快,对尺度更鲁棒。

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

人脸检测——UnitBox 的相关文章

  • 【CubeMX配置STM32驱动MPU6050】

    CubeMX配置STM32驱动MPU6050 包含DMP 并且在0 96寸OLED上显示 一 使用CubeMX进行相关配置 1 配置OLED的IIC接口 OLED的具体使用方法我就不细说了 我前面的文章里面有讲OLED的 如果有需要可以去看
  • Sql server 期末知识点复习

    数据库基础概念 提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 数据库复习知识 数据库基本概念 一 第一章概念知识复习 二 数据库创建 数据库及数据库对象 数据库基本概念 一 第一章概念知识复习 1 数据库 数据库 DB
  • 旋转的加载动画 css3,CSS3 Loaders

    css webkit keyframes rotate 0 webkit transform rotate 0deg transform rotate 0deg 50 webkit transform rotate 180deg trans
  • Java学习:使用MyBatis Plus的分页插件和QueryWrapper结合自定义mapper xml实现多表关联查询

    Vo 用来返回给前端展示列表的数据实体 Data public class CourseVo implements Serializable private static final long serialVersionUID 1L pri
  • 双目视觉原理(万字总结,包含Halcon代码)

    双目视觉原理 1 双目视觉的视差与深度 1 1 总览 2 视差原理 2 双目相机的坐标系 2 1 针孔相机的模型 2 2 四大坐标系 1 像素坐标系 单位 像素 pixel 2 图像坐标系 单位 mm 3 相机坐标系 单位 mm 4 世界坐
  • NUC980开源项目35-系统自动挂载驱动

    上面是我的微信和QQ群 欢迎新朋友的加入 在上一节的基础上 创建makefile和kconfig makefile LED Core obj CONFIG RUNLED runled o obj CONFIG CANLED canled o
  • 解决The valid characters are defined in RFC 7230 and RFC 3986

    解决方法 一 更换低版本的Tomcat 我选的方案 二 参考 https blog csdn net qq 32365919 article details 82055800
  • GD32F103,ADC采样端口对电压的影响问题,未解决!!!(已解决!!!)

    设计采集卡 使用了ADC1 ADC2 ADC3 发现ADC采样的通道电压不对 模拟量输入端未0V 输出采用LM358跟随 在ADC采集过程中 发现LM358的输出电压并不为0V 而是为0 2V 开始以为线路短路或是LM358的问题 后来停止
  • spring实战笔记

    Environment中获取配置 方式一 直接getProperties获取String bootstrapServers env getProperty hello kafka bootstrap servers 方式二 将属性直接绑定到
  • 二、Python基本语法

    二 基本语法 一 说明 二 内容 1 注释 2 变量 3 数据类型 4 列表和字典 5 输入和输出 6 字符串操作 7 运算符 8 条件语句 9 循环语句 10 函数 11 匿名函数 12 类和对象 13 模块和包 14 异常处理 15 文
  • Windows下配置cygwin/cmake

    对于那些低配置的电脑 要在windows做一些简单的coding work 安装一个VS实在有些转不开 所以我首先想到了通过cygwin cmake配置一个简单的开发环境 对于我那台老旧的IBM T43完全没问题 1 安装cygwin 首先
  • 新Android病毒出现 自动下载且无法卸载

    不久前XcodeGhost的事情令大家还未平复 现在又有针对Android平台的新病毒被曝光 国家计算机病毒应急处理中心监测发现 一种新的感染安卓手机的病毒a expense GhostPush a出现 该病毒可自动下载安装其他APP 而且
  • windows安装VMware虚拟机(附带CentOS7部署)

    软件下载 链接 https pan baidu com s 1Vw2Bilf9uf EYR6 MR86aA pwd d2qr 提取码 d2qr VMware安装 通你上述链接下载VMware安装包 没有特别选项 选安装位置无脑下一步安装 安
  • linux工具之sar

    sar System Activity Reporter 系统活动情况报告 是目前 Linux 上最为全面的系统性能分析工具之一 可以从多方面对系统的活动进行报告 包括 文件的读写情况 系统调用的使用情况 磁盘 I O CPU 效率 内存使
  • python写入文件的几种方式_python文本文件读写的3种方法

    第一种方法 file1 open test txt file2 open output txt w while True line file1 readline 这里可以进行逻辑处理 file2 write line s if not li
  • 华为硬件工程师社招机考题库_华为校招_硬件技术工程师机考试题及答案

    1 判断题 DRAM 上电时存储单元的内容是全 0 而 Flash 上电时存储单元的内容是全 1 4 分 A 正确 B 错误 FLASH 可保存 2 判断题 眼图可以用来分析高速信号的码间 干扰 抖动 噪声和衰减 4 分 A 正确 B 错误
  • VUE element-ui之table表格横向展示(表尾汇总)

    产品需求 在正常表格下方进行一系列汇总 如 合计等 分析之后发现需要拼接一个或多个横向排列的表格 实现步骤 模板部分
  • 合并二叉排序树

    描述 先序建立两棵二叉排序树 采用二叉链表结构存储 将这两棵二叉排序树合并成一棵新的二叉排序树 并按照中序序列输出合并后的二叉排序树 输入 输入两行先序遍历的整型数据 并以此分别建立两棵二叉排序树 其中整型数据必须为大于等于零的整数 如输入
  • Moba游戏帧同步的技术原理与重点难点

    一 帧同步的技术原理 帧同步是通过在数据传输过程中插入同步字节或同步信号来保证数据的同步 它主要通过以下几个步骤实现 对啦 这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白 也有一些正在从事游戏开发的技术大佬 欢迎你来交流学习

随机推荐

  • <逆波兰表达式求值>

    描述 给你一个字符串数组 tokens 表示一个根据 逆波兰表示法表示的算术表达式 请你计算该表达式 返回一个表示表达式值的整数 注意 有效的算符为 和 每个操作数 运算对象 都可以是一个整数或者另一个表达式 两个整数之间的除法总是 向零截
  • Linux装jdk并配置环境详细步骤

    Linux装jdk并配置环境详细步骤 1 创建文件使用命令mkdir usr local jdk 2 通过xshell传上来的文件都在 root目录下通过命令ls可以查看然后需要移动文件移动文件位置mv jdk 8u161 linux x6
  • Java——接口与实现类

    目录 接口 实现接口 常用接口 java util Comparator Arrays sort Object arr Comparator c 常用接口 java lang Comparable Arrays sort Object ar
  • Appuploader 常见错误及解决方法

    问题解决秘籍 1 遇到问题 第一个请登录苹果开发者官网 检查一遍账号是否有权限 是否被停用 是否过期 是否有协议需要同意 并且在右上角切换账号后检查所有关联的账号是否工作正常 apple账号的邮箱也是个重要的地方 当有ipa上传 账号有发生
  • 搭建SpringCloud项目,并实现自动化部署

    在当今云计算时代 微服务架构已经成为企业开发的常见选择 而SpringCloud作为Java领域中最为流行的微服务框架之一 其提供的各种组件能够帮助开发者快速搭建微服务应用 本文将介绍如何搭建SpringCloud项目 并实现自动化部署 一
  • sessionStorage和localStorage的区别

    今天就来说一下sessionStorage和localStorage的区别以及使用 sessionStorage 内存 sessionStorage大约能存储5M左右 生命周期 浏览器窗口关闭就自动销毁 属性方法 存储数据 sessionS
  • qt使用QTreeWidget实现一个树结构显示数据

    效果图 include
  • MYSQL解决 The total number of locks exceeds the lock table size 问题

    当我们对Mysql 中的表进行大批量的分组 查询 创建的时候经常会出现这个问题 他翻译过来大概是这个意思 总数已经超过锁定表的大小 一般出现这个原因会有两种可能 1 MySQL的临时表过小也就是tmp table size tmp tabl
  • 4、QT中的网络编程

    一 Linux中的网络编程 1 子网和公网的概念 子网网络 局域网 只能进行内网的通信 公网网络 因特网 服务器等可以进行远程的通信 2 网络分层模型 4层模型 应用层 传输层 网络层 物理层 应用层 用户自定义的网络数据传输协议 ssh
  • Kotlin中继承、类型转换、Any超类、object关键字详解

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到教程 一 继承 类型转换 Any超类 继承 Kotlin中类默认都是封闭的 要让某个类开放继承 必须使用open关键字修饰它 open cla
  • 解决idea一直Indexing的问题

    解决idea一直Indexing的问题 参考文章 1 解决idea一直Indexing的问题 2 https www cnblogs com boshen hzb p 9012445 html 备忘一下
  • 见微知著:从企业售后技术支持看云计算发展

    售后业务中的细微变化 作为阿里云企业容器技术支持的一员 每天会面对全球各地企业级客户提出的关于容器的各种问题 通过这几年的技术支持的经历 逐步发现容器问题客户的一些惯性 哪些是重度用户 哪些是轻度客户 这些客户大概分布在什么行业等等 在渐渐
  • 数字图像处理——图像的点运算

    图像的点运算 一 灰度直方图 imhist 二 灰度线性变换 imadjust 三 灰度非线性变换 1 灰度对数变换 log 2 灰度幂次变换 3 灰度指数变换 exp 四 灰度阈值变换 im2bw 五 灰度拉伸 六 灰度均衡 histeq
  • Windows下安装EISeg交互式分割标注软件

    EISeg 下载 配置环境 启动 下载模型 GitHub地址 Gitee码云地址 我的资源里面也有 下载 进入GitHub开源地址 点击图示位置下载zip文件 码云同理 配置环境 然后把这个放入你自定义的文件目录下 最好是英文路径 然后进入
  • vue使用医学影像cornerstone展示dcm文件

  • React 中 keys 的作用是什么?

    React 中 keys 的作用是什么 Keys 是 React 用于追踪哪些列表中元素被修改 被添加或者被移除的辅助标识 在开发过程中 我们需要保证某个元素的 key 在其同级元素中具有唯一性 在React Diff 算法中 React
  • git-推送分支

    origin为远程仓库名 命令 git push origin local branch remote branch 备注 此命令中 local branch必须为你本地存在的分支 remote branch为远程分支 如果remote b
  • 为什么要反复讲EasyAVFilter这个东西,真能替代ffmpeg吗?

    最近我写了不少关于EasyAVfilter的东西 有rtsp转mp4 MP4转HLS rtsp转rtmp 就简简单单几行代码 就能解决很多技术上的问题 而且就算是音视频开发的小白 也可以用EasyAVfilter开发出一个音视频后端出来 他
  • lambda表达式(详)

    函数式编程思想概括 在数学中 函数就是有输入量 输出量的一套计算方案 也就是 拿数据做操作 面向对象思想强调 必须通过对象的形式来做事情 函数式思想则尽量忽略面向对象的复杂语法 强调做什么 而不是以什么形式去做 而我们要学习的L ambda
  • 人脸检测——UnitBox

    本次介绍一篇来自旷视科技的人脸检测文章 2016 ACM MM UnitBox An Advanced Object Detection Network 代码应该是不会放出来了 但好在实现比较简单 插播一句 论文里面说速度可以达到12fps