写点什么

腾讯优图开源这三年

  • 2020-12-18
  • 本文字数:4234 字

    阅读完需:约 14 分钟

腾讯优图开源这三年

从 2017 年优图实验室开源 ncnn 至今,腾讯优图逐步拥抱开源。


腾讯优图拥抱开源历程


腾讯优图实验室成立于 2012 年,是腾讯公司旗下顶级人工智能实验室,发展至今已有 8 个年头,从最开始专心精进视觉 AI,到确定“基础研究 + 产业落地”双轨前进路线,再到积极拥抱开源开放。腾讯优图一直都聚焦计算机视觉,在人脸识别、图像识别、OCR 等领域开展技术研发和落地。


在算法研究方面,腾讯优图的研究成果多次在人工智能国际权威竞赛中创造世界纪录,到现在拥有 800 余项 AI 相关专利。在学术研究方面,优图公开发表的论文涵盖 ICCV,ECCV、CVPR,AAAI 等各类顶级会议,仅 2020 年即被国际 CV 顶级会议 CVPR 接收了 17 篇论文。


有人说,优图实验室有一股“学院气息”,这是因为它与国内外几十所顶级高校都合作紧密,但除了基础研究,产业落地也是优图发展的重要战略。2018 年,当腾讯优图锚定了“基础研究 + 产业落地”双轨前进的路线后,腾讯优图实验室也正式升级为腾讯计算机视觉研发中心,开始更深层次拥抱产业、拥抱场景。在行业应用及产业落地上,腾讯优图在 CV 领域的一系列技术解决方案已经深入到包括零售、教育、金融、工业、泛企等在内的多个行业。


而谈到开源,其实优图正式开源的时间并不算长,正式走向开源道路是在 2017 年,伴随腾讯内部开源策略的倡导,腾讯爆发式输出了 20 个自主开源的优秀项目,其中就包含腾讯优图的开源作品:神经网络推理框架 ncnn,此后,腾讯优图又陆续上线了算法类的一系列开源项目,如人脸检测算法 DSFD(Dual Shot Face Detector)、动作检测算法 DBG、通用目标检测算法 OSD(OneStageDet)、图像超分 SuperResolution-RealSR、人脸关键点算法 FHR(Fractional Heatmap Regression ) 、人脸属性算法 FAN 。今年 6 月份,腾讯优图实验室又开源了神经网络推理框架 TNN。


从开源的项目类别来讲,腾讯优图的项目可以大致分为两类:工程框架类和算法研究类。工程框架类如深度学习框架 ncnn 和 TNN,算法研究类项目包含人脸检测、目标检测、动作检测、图像超分等领域在内的算法和各类工具等。其中,腾讯优图最“火”的三个开源项目是:NCNN、DSFD、TNN,分别在 GitHub 上收获了 10.4k、2.4k、2.2k 的 Star 数。


2018 年,自腾讯技术委员会、腾讯开源管理办公室成立后,在腾讯全公司推进开源协同策略,推动优质开源协同项目对外开源的同时,腾讯开源战略链条正在不断完善。今年年初,腾讯高级执行副总裁汤道生首次公开阐述开源对于腾讯的意义,“开源不再是开发者的个人热情,它已成为许多技术驱动型产业背后重要的创新推动力。腾讯将进一步拥抱开源,与广大开发者一起创造正向价值”,而腾讯优图身在其中,积极践行和拥抱开源策略。


项目开源背后的故事


深度学习框架 ncnn、TNN 背后的“大佬”


ncnn 是针对移动平台优化的高性能神经网络推理框架,从设计之初,就在手机上的部署和使用深思熟虑,它没有任何第三方库依赖,不依赖 BLAS/NNPACK 等计算框架,是跨平台的,支持 Android、iOS 等。它支持大部分常用的 CNN 网络如 Classical CNN、Practical CNN、Light-weight CNN、Face Detection、Segmentation 等。ncnn 的许多应用方向都在图像方面,如人像自动美颜,照片风格化,超分辨率,物体识别等等。



业界对 ncnn 有很高的褒奖,它几乎开启了国内深度学习框架开源的“热潮”,而在开源背后,必须要提的一个人就是 ncnn 开源负责人 nihui,他奠定了 ncnn 的所有架构设计和发展规划,目前 GitHub 上维护工作有近 80% 都是他一个人在做。


2017 年,人工智能在国内发展势头正热,深度学习框架可以说是很多公司的核心竞争力,ncnn 可以直接做到开源,既体现了一种前瞻性,也可以说是优图在进行提前布局。但更多的,ncnn 开源的初衷其实起源于负责人对这个项目的爱,nihui 说“那个时候感觉开源才能促进整个业界的发展,希望 ncnn 能在开源社区有一些影响力。可以理解为一个热爱写代码的工程师,希望把自己写的代码分享给更多的人用。”这里还有一个小故事,ncnn 的 logo 图标是 nihui 自己画的,嵌入了 ncnn 四个字母,所以说他真正是这个开源项目的“设计师”。


ncnn 的特别在于它不是腾讯内部团队在主导运营的,而是以社区为主,可以说它是一个纯粹的社区项目。目前,ncnn 有专门的 5000 人 QQ 群,nihui 提到,ncnn 社区的开发者每天在群里十分活跃,不仅讨论技术,还讨论生活。目前,ncnn 在 GitHub 上至今已收获 10.4k Star 和 2.6k Fork,对这个开源项目的维护和代码更新是 nihui 的日常工作,他也希望能有更多的开发者加入到社区进行贡献,多提改进意见。


如果说 2017 年开源的 ncnn 是从 0 到 1,那么 2020 年开源 的 TNN 则是站在巨人的肩膀上,从 1 到 N。TNN 以前在腾讯优图内部叫 Rapidnet,承担内部业务落地的责任,TNN 开源是在 Rapidnet 和 NCNN 框架基础之上,一步一步发展而来。


与 ncnn 不同,TNN 是在腾讯开源协同的大背景下推出的,腾讯内部有专业全职的工程师进行开源和社区维护。可以说,腾讯优图所有合作业务团队,包括手机 QQ、微视、智能硬件等部门目前都有不同程度的框架应用。从 6 月开源至今,TNN 经过一个大版本更新,结合腾讯优图、光影、光流团队在算法上的优势推出个性化的相机流 Demo 示例,提升用户吸引力。后续 TNN 将继续拓展适配更多的 AI 硬件平台,不只专注于移动端而是在后端功能上也进行补齐。

人脸配准–优图


头发分割–光影


人体关键点–光流


说到 TNN 的命名由来,负责人姚达(大家叫他“达叔”)表示:“T”这个字母会让开发者感觉有“Tencent”的意思,但其实它也包含“Tiny”的含义,TNN 框架是小而易用的,面向移动端高性能,轻量级的推理框架。TNN 开源后,达叔的身影经常出现在各种各样的开发者大会上,去为 TNN 站台和使用推广。市场同事笑话他,没想到一个在办公室里敲代码的工程师,也开始了解什么叫展台和站台了。


优图算法开源,让研究者站在巨人肩膀上


在计算机视觉领域,算法研究者们经常会自发地讨论:优图又刷新了哪些国际权威榜单,优图的哪些论文又被 CVPR、ECCV、ICCV 等顶会录用了。“学术界的研究方向在不断更新,优图也要保持自身算法的先进性。”优图算法研究员李剑表示。


算法应用类开源项目是腾讯优图开源的重要方向之一,人脸检测 FaceDetection-DSFD、通用目标检测 ObjectDetection-OneStageDet、图像超分 SuperResolution-RealSR 是目前比较火的算法类开源项目。


2019 年,腾讯优图开源了人脸检测算法 DSFD,该算法相关论文已经被计算机视觉顶级会议 CVPR 2019 接收,在当时刷新了人脸检测数据集 WIDER FACE 和 FDDB 新纪录,截止目前在 GitHub 上的 Star 累计有 2.4k。整个项目实现是建立在 PyTorch 上的,项目不依赖特殊库,只需要 Python 3.6 和 CuDNN 等即可。下图展示了 DSFD 人脸检测的效果,它们在不同尺度、姿态、遮挡、模糊、装扮和光照等条件下有很不错的表现,蓝色的检测框表示检测置信度超过了 0.8。


去年,优图还开源了目标检测框架 OSD,OSD 是一种工具型的通用目标检测算法,基于 PyTorch 复现了学术界和工业界最常用的目标检测算法 Yolo,目前优图已在此仓库中实现了 Yolov2 和 Yolov3。另外,它还有训练速度快、多种可供选择的主干网络等特性。截至目前在 GitHub 上的 Star 累计有 1.8k。基于 OSD,算法从业人员可以在业务数据上快速训练出想要的检测模型。


另外,今年优图还提出一种新的图像超分辨率算法 RealSR 并开源。超分辨率是指将低质量压缩图片恢复成高分辨率图片的过程。在移动互联网时代,大量真实的图像数据由于存储和传输的需要,图片质量会被压缩,而为了使用户获得更加高质量的视觉体验,图像超分辨率算法应运而生。


RealSR 算法在 CVPR-NTIRE-2020 真实图像超分比赛中以明显优势获得双赛道冠军。它的核心并不是提出一个模型来解决一个问题,而是提出了一种优化训练数据的方法,与已有的超分辨率方法相比,RealSR 的创新主要体现在三个方面:第一、RealSR 采用了自主设计的新型图片退化方法,通过分析真实图片中的模糊和噪声,模拟真实图片的退化过程;第二、不需要成对的训练数据,利用无标记的数据即可进行训练。第三、可以处理低分辨率图像中的模糊噪声问题,得到更加清晰干净的高分辨结果。


对比结果:('Impressionism' is our team.)


除此之外,还有动作检测算法:ActionDetection-DBG、人脸关键点算法:FaceAlignment-FHR 、人脸属性算法 FaceAttribute-FAN 均已在 GitHub 上开源,这些算法也都被计算机视觉顶级会议录用,其中 DBG 算法还获得了 2019 年 ActivityNet 动作提名这一赛道的冠军。


优图算法的开源,不仅是扩大优图实验室本身研究的影响力,更可以帮助其他研究者提升效率,站在优图已有的研究基础,节省研究成本。


腾讯优图,开源面向未来


移动互联网的发展告诉我们,基础设施型平台是战略级别的竞争。以安卓和 iOS 生态为例,想要进一步激活商业价值,就要将绝大多数的 AI 研究人员、用户都吸引到自己的开源环境上。如何让开发者、研究者意识到,当涉及深度网络学习和计算机视觉算法相关内容,就能想到腾讯优图,开源是最直接的方式,在最接近用户的地方让代码说话。但是想要更多人能参与到优图开源项目的贡献中,还需要不断地引领。如从单个开源项目到上下游联动,比如工程和算法结合、和上游训练结合,以及和腾讯内部开发平台相结合,都是开源负责人们对开源生态的思考。


ncnn 是从 0 到 1,TNN 则是从 1 到 N,面向未来,TNN 的发展目标将是 “N” 的不断扩大。而优图的算法类项目,后续也会陆续开源目标跟踪、人群密度估计,行人重识别等相关算法。我们也十分期待优图实验室未来在开源生态中大放异彩。


预告:Techo 2020 开发者大会来了


12 月 19 日 -20 日,2020 Techo Park 开发者大会将于北京 751D·Park 与大家见面,30 多场技术论坛交流 ,200 多位海内外专家精彩专题演讲,主要围绕包括云基础设施、云原生、AI、开源、音视频与通信等技术,共同探索全球云计算前沿技术发展趋势、技术创新和实践。

附录:腾讯优图开源项目代码地址

ncnn:https://github.com/Tencent/ncnn

TNN:https://github.com/Tencent/TNN

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

OSD:https://github.com/Tencent/ObjectDetection-OneStageDet

RealSR:https://github.com/Tencent/Real-SR

DBG:https://github.com/Tencent/ActionDetection-DBG

FaceAttribute-FAN:https://github.com/TencentYoutuResearch/FaceAttribute-FAN

FHR:https://github.com/TencentYoutuResearch/FaceAlignment-FHR

2020-12-18 17:1213436

评论

发布
暂无评论
发现更多内容

LabVIEW虚拟数字示波器

不脱发的程序猿

数据采集 LabVIEW 虚拟示波器 信号发生VI

经典递归 - 青蛙跳台阶问题

芒果酱

递归 C语言 5月月更

LabVIEW使用移位寄存器计算平均值

不脱发的程序猿

LabVIEW 移位寄存器计算平均值 移位寄存器

LabVIEW操作鼠标滚轮放大/缩小图像

不脱发的程序猿

图像处理 LabVIEW 鼠标滚轮来放大和缩小图片

怎样让智能电视更加智能

Geek_99967b

小程序 小程序容器 智能电视

刷新三项世界纪录!浪潮云ICP ARM架构获SPEC Cloud测试全球第一名

云计算

全栈、云原生的数据分析时代已来,我们如何抓住机会?

亚马逊云科技 (Amazon Web Services)

数据分析 云原生 全栈

云原生数据库的下一次变革发生在哪里?

亚马逊云科技 (Amazon Web Services)

数据库 云原生

【高并发】优化加锁方式时竟然死锁了!!

冰河

并发编程 多线程 高并发 协程 异步编程

JVM进阶(十九)——Class文件常量池

No Silver Bullet

JVM class 5月月更

多个平台显示IP地址:如何看待互联网实名制

石头IT视角

Docker下RabbitMQ四部曲之一:极速体验(单机和集群)

程序员欣宸

Java RabbitMQ 5月月更

什么是小程序运行时框架?

Geek_99967b

native 小程序容器 小程序开发

Linux环境显式使用动态库

Loken

音视频 5月月更

开源生态|打造活力开源社区,共建开源新生态!

Orillusion

开源 WebGL 元宇宙 Metaverse webgpu

企业上云,安全合规如何进阶 ——一文拆解亚马逊云科技云安全理念与实践

亚马逊云科技 (Amazon Web Services)

云安全 亚马逊云

打码打码Python爬虫,某省建筑市场请求地址参数分析,手慢无爬虫

梦想橡皮擦

5月月更

JavaScript获取元素的宽高

空城机

JavaScript 5月月更

Go Web 编程入门:中间件

宇宙之一粟

中间件 Go web 5月月更

Kubernetes Gateway API - 服务网络的演进

Flomesh

Kubernetes Gateway ingress

云端的 ABAP Restful 服务开发以及通过 abapGit 传输到其他系统的详细步骤

汪子熙

git SAP abap 5月月更 abapgit

Java Core「5」自定义注解编程

Samson

学习笔记 5月月更 Java core

DNS解析过程

工程师日月

5月月更

Flutter的特别之处

Geek_99967b

flutter 小程序开发

面试突击51:为什么单例一定要加 volatile?

王磊

Java 面试

搜狐全员遭诈骗,暴露哪些问题?

Authing

身份云 信息 统一身份认证 mfa

Seektiger DAO的共识增长计划,锁仓STI长线价值投资

股市老人

DataPipeline完成B+轮1.2亿元人民币融资,定义基于DataOps理念的下一代数据基础设施

DataPipeline数见科技

IM即时通讯为企业业务移动化带来了怎样的便利?

WorkPlus

LabVIEW实现Modbus通信

不脱发的程序猿

LabVIEW Modbus 串口通信 VISA 工业通信

Netty实战-实现内网穿透(一)

风斩断晚霞

Java Go Netty 内网穿透

腾讯优图开源这三年_AI&大模型_王利莹_InfoQ精选文章