腾讯优图开源这三年

从 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 是针对移动平台优化的高性能神经网络推理框架,从设计之初,就在手机上的部署和使用深思熟虑,它没有任何第三方库依赖,不依赖 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” 的不断扩大。而优图的算法类项目,后续也会陆续开源目标跟踪、人群密度估计,行人重识别等相关算法。我们也十分期待优图实验室未来在开源生态中大放异彩。

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

腾讯优图开源项目地址

ncnn://github.com/Tencent/ncnn

TNN://github.com/Tencent/TNN

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

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

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

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

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

FAN:

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

点击「 阅读原文 」,可以了解更多优图开源项目。