AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

腾讯优图开源这三年

  • 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:1213638

评论

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

十大排序算法--希尔排序

Ayue、

排序算法 8月日更

JVM

ltc

JVM

我两年的坚持,值了!

程序员鱼皮

Java JavaScript 腾讯 职场 大前端

【LeetCode】有效三角形的个数Java题解

Albert

算法 LeetCode 8月日更

手撕环形队列系列三:多生产者并行写入

实力程序员

程序员 数据结构 C语言 编程开发 环形队列

容器云平台和Kubernetes之间不得不说的那些事

用友BIP

Kubernetes 容器

面试官:展开说说,Spring中Bean对象是如何通过注解注入的?

小傅哥

spring 小傅哥 注解注入

手撸二叉树之二叉搜索树的最近公共祖先

HelloWorld杰少

数据结构与算法 8月日更

积极重夺制造霸主地位,英特尔不玩“纳米游戏”了

E科讯

混合基础设施下,服务网格(Service Mesh)如何对应用进行统一管理

韩陆

LeetCode题解:173. 二叉搜索树迭代器,栈,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

【Flutter 专题】78 图解 Android Native 集成 FlutterBoost 小尝试 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

华为云UGO:醒醒!你的异构数据库迁移难题有救了

华为云开发者联盟

数据库 迁移 华为云 异构数据库 UGO

软件架构模式之微服务架构

架构精进之路

架构 微服务 8月日更

手把手教你怎么导入Go语言第三方库「让我们一起Golang」

Regan Yue

后端 Go 语言 8月日更

springcloud 微服务日志写入kafka

Rubble

kafka Spring Cloud 8月日更

架构实战营毕业设计

eoeoeo

架构实战营

这些智能合约漏洞,可能会影响你的账户安全!

华为云开发者联盟

区块链 智能合约 安全 形式化验证 华为区块链服务

【Git技术专题】如何使用git中的tag进行版本开发控制?

码界西柚

git 8月日更

企业需要拥有自己特色的DevOps

用友BIP

Docker 容器 DevOps 微服务

上K8s,研发团队如何从容一点?

行云创新

容器 k8s

Java代码中,如何监控Mysql的binlog?

码农参上

Binlog 实战

24岁,月薪35k!全靠这份阿里P5-P9知识核心手册+10W字面试题总结

Java架构追梦

Java 阿里巴巴 架构 面试

netty系列之:netty中的ByteBuf详解

程序那些事

Java Netty nio 程序那些事

CodeDay#8:支付宝都在用的容器技术了解一下

蚂蚁集团移动开发平台 mPaaS

小程序 支付宝小程序 支付宝 移动开发 mPaaS

SLB 负载均衡实践

若尘

负载均衡 阿里云 弹性负载均衡 8月日更

用微服务架构方式交付云服务产品

用友BIP

容器 微服务 专属云

ToastUtil实用封装

Changing Lin

8月日更

如何在渲染之前等待 Axios 数据?

吴脑的键客

大前端 React axios

经验之谈:程序员应该如何学好大数据技术

博文视点Broadview

百度第25季黑客马拉松再秀“技术基因”,累计产生创意超7000个

科技热闻

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