近日,知名开源社区Github上有个名为DSFD(Dual Shot Face Detector)的算法引起了业内关注,它正是来自于腾讯优图。目前,该算法已经被计算机视觉顶级会议CVPR 2019接收,并且在2018年10月刷新了两个权威的人脸检测数据集WIDER FACE和FDDB上的新纪录。

Github开源地址:

https://github.com/TencentYoutuResearch/FaceDetection-DSFD

论文公开地址:https://arxiv.org/abs/1810.10220

“三点创新”打造人脸检测领域最值得参考的代码

人脸检测算法是在图像上,检测出人脸的位置(通常以矩形框形式输出),是人脸配准、人脸属性识别、人脸核身、人脸检索等技术的基础。优图此次提出的DSFD人脸检测算法,主要有3点创新:

(1)设计了一种新的“特征增强”模块(FEM:Feature Enhance Module)

FEM在采用Top-Down层间信息融合的同时,在同一“感受野”内做了更多的enhancement。因此在network width and depth上学习到了更有效的context和semantic信息。

(2)提出了“分层锚点渐进”式的代价函数监督(PAL:Progressive Anchor Loss)

模型采用2个层级(hierarchy),基于第一层(low-level)和第二层(high-level)的差异性,适配了不同尺寸的anchor。在训练过程中,PAL对整个模型形成了更有效的监督。

(3)设计了一种“改进的锚点匹配策略”(Improved Anchor Matching Strategy)

One-stage detector由于在输出层分配有密集的anchor,anchor与face匹配的好坏直接影响训练效果,优图的研究员们在data augmentation过程中充分考虑了不同大小的face和各个anchor的关系,提出了一种新的数据扩增方法。

(算法整体流程图)

效果提升,来自优图不断的研究

随着近几年人工智能技术的发展,国内外不少机构、企业都在进行人脸检测的相关研究。腾讯优图的研究员们发现,虽然之前的人脸检测算法大都采用深度学习模型,并在特征学习的过程中也有采用特征金字塔网络(Feature Pyramid Network),但在面对遮挡、暗光、大姿态、小脸等复杂场景时,仍容易出现误检或漏检的情况。因此在FPN基础上,腾讯优图团队采用了3种不同级联方式的空洞卷积(Dilated Convolution),设计了特征增强模块FEM,充分学习到了不同感受野下的人脸特征。

(复杂场景下的人脸检测效果展示)

然而,在新算法探索的过程中,并不是一帆风顺的。这个项目从去年7月中旬启动,进行到第三周,检测效果已经在top5了,但优图的研究员们清楚,到这里还远远不够。在接下来的两个多月里,想要提升效果却越来越难。就好像爬山,前面爬得很快,越到后面,对耐力和决心的要求就越高,腾讯优图高级研究员Casey回忆道:“那段时间,我和其他几位同事实验了很多方案,很多时候是多个方案同时跑,甚至有些方案跑了4-5天后,发现失败了,又得做新的尝试。”失败后,几个研究员就近在工位旁边的玻璃房里,一起分析原因,开始摸索下一套试跑方案。在3个多月的反复“试跑-推翻-试跑”中,最后终于跑出一套大家都满意的算法。不负所望,该算法论文也已被CVPR2019接收。

走出实验室,为业务创造价值;

代码开源,与同行共同探讨

算法从实验室走出来,不是立马就能直接套用到业务里。事实上,论文里的模型通常比较大,导致实时性不好。在使用时,需结合实际应用情况压缩、裁剪,整体模型会做一定的调整。目前,腾讯优图的人脸检测技术已在安防、金融、社交、交通、零售等多个应用场景落地,并在手机QQ、微众银行、天天P图等多个公司内外部产品上进行应用验证。以安防领域为例,腾讯优图天眼智能安防平台以警务、安防需求为导向,是优图团队面向稽查布控、刑侦办案、社会安防等多场景推出智能化海量人脸检索解决方案。

(腾讯优图天眼智能安防平台)

2017年,腾讯对外开源节奏开始加快,主要覆盖AI、云计算、腾讯游戏、腾讯安全、小程序等相关领域。而腾讯优图的计算机视觉技术的开源更是其中重要的一环。2017年7月,腾讯优图首个AI开源项目NCNN已经正式开源,这是一个为移动端极致优化的高性能神经网络前向的计算框架,是业内首个为移动端优化的开源神经网络推断库。2018年,NCNN宣布正式加入ONNX,截止目前,NCNN的Github star数已接近6000。随着计算机视觉技术的不断开源, AI开发者能更快实现从研究到模型的落地部署,也能更方便地在不同框架间切换,为每项任务选取最优的开发工具。相信随着越来越多的AI机构、企业和个人的算法开源,将驱动整个AI研究更快发展和落地。

欢迎关注磐创博客资源汇总站:http://docs.panchuang.net/

欢迎关注PyTorch官方中文教程站:http://pytorch.panchuang.net/

重磅!刷新两项世界纪录的腾讯优图人脸检测算法DSFD开源了!的更多相关文章

  1. caffe_实战之两个简单的例子(物体分类和人脸检测)

    一.物体分类: 这里使用的是caffe官网中自带的例子,我这里主要是对代码的解释~ 首先导入一些必要的库: import caffe import numpy as np import matplot ...

  2. 东方超环(EAST)世界纪录

    2017年7月3日夜晚,国家大科学装置——世界上第一个全超导托卡马克(EAST)东方超环再传捷报:实现了稳定的101.2秒稳态长脉冲高约束等离子体运行,创造了新的世界纪录.这标志着EAST成为了世界上 ...

  3. [APIO2018]铁人两项 --- 圆方树

     [APIO2018] 铁人两项 题目大意: 给定一张图,问有多少三元组(a,b,c)(a,b,c 互不相等)满足存在一条点不重复的以a为起点,经过b,终点为c的路径 如果你不会圆方树 ------- ...

  4. 世界视频编码器大赛结果揭晓,腾讯V265编码器勇夺两项第一

    2019年10月22日,由莫斯科国立大学(Moscow State University)举办的MSU世界视频编码器大赛成绩揭晓, 腾讯内部开源协同的V265编码器再创佳绩,一举拿下PSNR(峰值信噪 ...

  5. 人工机器:NDC-谷歌机器翻译破世界纪录,仅用Attention模型,无需CNN和RNN

    终于找到ML日报的微信链接,抄之...................................... 请拜访原文链接:[谷歌机器翻译破世界纪录]仅用Attention模型,无需CNN和RNN. ...

  6. 阿里巴巴AI夺肝结节诊断两项世界冠军,至今无人超越

    在澳门用人工智能预测流感趋势后,阿里巴巴还在继续探索如何用科技保障人类健康,这一次是更准确地测量肝结节. 12月28日消息,在全球LiTS(Liver Tumor Segmentation Chall ...

  7. 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项。

    在用asp.net MVC3 的MusicStore时候 Edit某个数据项时提示下面的错误: 存储区更新.插入或删除语句影响到了意外的行数(0).实体在加载后可能被修改或删除.刷新 ObjectSt ...

  8. Word Flow:创造吉尼斯世界纪录的触屏文本输入的全新体验——微软Windows Phone 8.1系统倾情巨献

    Flow:创造吉尼斯世界纪录的触屏文本输入的全新体验--微软Windows Phone 8.1系统倾情巨献" title="Word Flow:创造吉尼斯世界纪录的触屏文本输入的全 ...

  9. Java程序员的两项通用能力

    工作这几年来,经历了很多.从小白到中级(手机里有一款叫中国象棋的游戏,里面给对弈中电脑水平分为小白.菜鸟.新手.入门.初级.中级.高级.大师.特级大师,编程我暂且按照这样来区分). 学校教给我的是从小 ...

随机推荐

  1. codeblocks升级c++17版本

    用了大半年的codeblocks,今天居然发现我还不会配置MINGW版本,现在C++已经更新到c++20了,而我还在用c++11,所以今天记录一下怎么更新c++版本吧. 其实步骤没有我们想象的那么困难 ...

  2. Java版飞机订票系统

    关注微信公众号:Worldhello 回复 飞机订票系统 可获得系统源代码并可加群讨论交流 数据结构课程设计题目:          [飞机订票系统]            通过此系统可以实现如下功能 ...

  3. hadoop地址配置、内存配置、守护进程设置、环境设置

    1.1  hadoop配置 hadoop配置文件在安装包的etc/hadoop目录下,但是为了方便升级,配置不被覆盖一般放在其他地方,并用环境变量HADOOP_CONF_DIR指定目录. 1.1.1  ...

  4. swoole(2)swoole进程结构

    一:进程基本概念 系统中正在运行的一个程序,程序一旦运行就是进程 一个进程可以拥有多个线程 核心内容分为两部分:内存(进程创建时从系统分配的,它所创建的变量都会存储在这一块内存中).上下文环境 二:s ...

  5. python数组和字符串互相转换

    字符串转数组 str = '1,2,3' arr = str.split(',') 数组转字符串 arr = ['a','b'] str = ','.join(arr) arr = [1,2,3] s ...

  6. 前端每日实战:113# 视频演示如何用纯 CSS 创作一个赛车 loader

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/mGdXGJ 可交互视频 此视频是可 ...

  7. 利用wps创建有目录的PDF/word

    为什么要创建: 在阅读一些行业规范或者很长的文件,像是项目管理方案时,非常麻烦,定位需要重新返回目录去.--->所以我想能不能创建一个带目录的PDF,可以点击直接跳转,那就方便多了. 如何创建: ...

  8. ubuntu1804自带的vim和vi都是用什么版本?

    之前搜索vim一些命令时,经常看到有人说ubuntu自带的vim是是vim.tiny的,功能不全. 什么需要先卸载,再重装,真的是这样吗? 我查了一下,vim的版本号 vim --version vi ...

  9. Community Cloud零基础学习(四)Builder创建自定义的布局

    前几篇讲了Community Cloud权限配置等信息,但是没有太讲过 Community如何进行配置layout,本篇主要描述使用Builder去进行符合需求的Community Layout的构建 ...

  10. linux 读取 USB HID鼠标坐标和点击 在 LCD上显示

    首先要,编译内核时启用了 USB HID 设备.启用了 鼠标 . 在开发板上插入usb 时会有如下提示. 可以看到,多了一个 mouse0 和 eventX 打出来的是我的 联想鼠标. 1, 在 终端 ...