10月26号,了解如何7天上架一个语聊房应用 了解详情
写点什么

CVaaS 计算机视觉即服务 ——从算法, 应用到服务的技术演变

2017 年 6 月 06 日

本文是大数据杂谈 5 月 4 日社群分享内容整理。

我先自我介绍一下,我叫罗韵,是深圳极视角科技有限公司联合创始人,我们公司是一家做人工智能和计算机视觉应用的创业公司,我们平台目前服务各个细分领域,其中包括零售行业、工业、智能家居、餐饮、安防等,提供图像处理和视频分析的服务。作为一家创业公司,极视角荣登"2016 中国人工智能创业公司 Top50"以及入选"2017 国内最值得关注的 AI 视觉创业项目 Top20"。当前我们正在做的事情就是希望让计算机视觉变成一种可以服务于各行各业的服务平台——极市平台 cvmart.net。

今天给大家介绍内容包括四个部分(如上图),其中是一环扣一环步步递进的,从两个算法 (并非原创算法) 切入,我们看一个算法如何被应用,然后基于各种应用的需求,算法又如何转化成为一个服务去服务更多的社会需要。

(点击放大图像)

我的分享总体来说会更偏应用性,因为我们主要就是做 CV 应用。

1. 计算机视觉的算法应用案例

1.1 图片内容识别

首先,给大家介绍一个很常见而非常有应用前景的算法应用案例:识别一个图片或者画面、视频里面可能有什么东西?例如如图:

(点击放大图像)

要实现这样识别算法,当前我们可以结合深度学习的目标检测算法,例如有 R-CNN,SPP-Net,Fast R-CNN,Faster R-CNN,以及在 PASCAL VOC、MS COCO、ILSVRC 数据集上取得领先的基于 Faster R-CNN 的 ResNet 等。

以上的方法都可以归纳为一个基本都流程:proposal 候选框 + 分类器,只是有的候选框从原图就定位了,而有的 bounding box 候选框则是通过 feature map 来定位。而这样的流程在运行速度上会存在着比较大的局限。当然,大家也在不断的往更快的速度去优化。

而我们今天先不讨论上述的方法,而是讨论两个运行速度更快的目标检测模型。

第一个是,YOLO(You Only Look Once),YOLO 是一个可以一次性预测多个 Box 位置和类别的卷积神经网络,能够实现端到端的目标检测和识别,其最大的优势就是速度快。目标检测的本质其实也是回归,因此一个实现回归功能的 CNN 并不需要复杂的设计过程。

YOLO 没有选择滑窗或提取 proposal 的方式训练网络,而是直接选用整图训练模型。这样做的好处在于可以更好的区分目标和背景区域,相比之下,采用 proposal(选定候选集) 训练方式的 Fast-R-CNN 常常把背景区域误检为特定目标。

(点击放大图像)

YOLO 的设计理念遵循端到端训练和实时检测。YOLO 将输入图像划分为 S*S 个网络,如果一个物体的中心落在某网格 (cell) 内,则相应网格负责检测该物体。

在训练和测试时,每个网络预测 B 个候选区域,每个候选区域对应 5 个预测参数,分别是候选区域 (bounding box) 的中心点坐标 (x,y), 宽高 (w,h) 和置信度评分。

这里的置信度评分:

(Pr(Object)*IOU(pred|truth))

综合反映基于当前模型候选区域内存在目标的可能性 Pr(Object) 和候选区域 (bounding box) 预测目标位置的准确性 IOU(pred|truth)。

如果候选区域内不存在物体,则 Pr(Object)=0。如果存在物体,则根据预测的候选区域 (bounding box) 和真实的区域 (bounding box) 计算 IOU,同时会预测存在物体的情况下该物体属于某一类的后验概率 Pr(Class_i|Object)。

假定一共有 C 类物体,那么每一个网格只预测一次 C 类物体的条件类概率 Pr(Class_i|Object), i=1,2,…,C; 每一个网格预测 B 个候选区域 (bounding box) 的位置。即这 B 个候选区域 (bounding box) 共享一套条件类概率 Pr(Class_i|Object), i=1,2,…,C。

基于计算得到的 Pr(Class_i|Object),在测试时可以计算某个候选区域 (bounding box) 类相关置信度:

(点击放大图像)

如果将输入图像划分为 7*7 网格(S=7),每个网格预测 2 个 bounding box (B=2),有 20 类待检测的目标(C=20),则相当于最终预测一个长度为 S*S*(B*5+C)=7*7*30 的向量,从而完成检测和识别任务。

第二个同样是目标检测的算法,SSD(Single Shot MultiBox Dectector)。这是另一个基于深度学习的物体检测模型,他的特点主要是检测的速度在能保证精度下保持非常快的速度,除此之外,该物体检测算法在大目标的检测下有比较好的效果。

(点击放大图像)

而我们发现,往往我们的照片中,大目标比比皆是。SSD 比原先最快的 YOLO: You Only Look Once 方法,还要快,还要精确。保证速度的同时,其结果的 mAP 可与使用 region proposals 技术的方法(如 Faster R-CNN)相媲美。

SSD 方法的核心就是预测物体,以及其归属类别的得分;同时,在 feature map 上使用小的卷积核,去预测一系列候选区域的位置。

SSD 为了得到高精度的检测结果,在不同层次的 feature maps 上去 预测物体类别和物体位置。

SSD 这些改进设计,能够在当输入分辨率较低的图像时,保证检测的精度。同时,这个整体端到端的设计,训练也变得简单。在检测速度、检测精度之间取得较好的平衡。

1.2. 电子相册

然而,以上的仅仅是一个照片内容识别的算法,还没有真正的成为到了一个解决实际问题的应用,接下来,我们将讲解的就是利用这样的识别技术,我们进一步可以解决的问题就是:

在印刷行业或者快照行业,会陆续推出一项产品——电子相册。

而电子相册从技术层面主要是要解决两个问题,1. 照片裁剪,2. 相框的匹配。

(点击放大图像)

而当前,这些工作都是人工去完成,随着日益增长的电子图片的需求量,制作电子相册的人力成本越来越大,而这个时候,利用之前所述的内容识别算法,我们可以帮助电脑自动实现图片的裁剪,因为自动裁剪最大的担忧可能是担心把照片内的人裁剪掉了。

另一方面,我们进而可以结合图片场景分类和人脸识别等算法技术,使用标签匹配方法去自动匹配与照片本身更搭配的相框。

2. 利用计算机视觉技术实现行业升级

如上,我们就以快照印刷行业的电子相册作为一个行业应用的例子,但其实还有很多行业内容其他的应用例子不胜枚举。

算法本身我们可以做出很多技术,例如使用物体检测我们可以实现内容识别、除此之外我们还实现场景分类、人脸的识别、颜色的分类、人物表情等等。

而技术项目的组合,可以帮助我们是去实现更多行业内的目前人工完成的工作,例如实现自动裁剪、通过根据图片的内容、场景的分类、人脸信息等,匹配出合适的相框作为推荐,根据不同颜色的印刷材料做不同的印刷批次排序等等。

于是,一个简单的印刷快照行业的升级,我们可以归纳为如图:

(点击放大图像)

而由图中,我们可以看到,技术和应用本质上是完全可以分开做横向拓展的,于是我们可以看到同样的技术可以用在不同的行业,也可以有很多不同行业特定的算法技术,如图:

(点击放大图像)

3. CVaaS 计算机视觉即服务的理念介绍

CVaaS 是我概括出来的一个词语,第一次介绍给大家,意思就是计算机视觉算法即服务的意思,在过往,我们可能听说过,IaaS(Infrastructure as a Service),PaaS(Platform as a Service),SaaS(Software as a Service), 大家都把不同层次的标准化模块变成一种服务在提供。

而 CVaaS 就是 Computer Vision as a Service, 我们把 CV 的部分标准化成为了一种服务,而每一个行业可以在这里找到自己行业需要的和图像处理、视频处理、计算机视觉相关的算法服务,然后他们可以整合这些算法服务成为他们需要的应用。

(点击放大图像)

而 CV 算法更接近于一种平台运行的服务,提供运算性能的横向拓展,提供运算的底层开发环境,甚至乎直接提供可开发测试的 sandbox, 所以,CVaaS 也是 PaaS 的一种。

各行各业都有他需要的和 AI 取代的工作,从而提升行业的效率,正如李开复老师说的,50% 的工作会被 AI 取代,而评判的标准就是“五秒钟准则”。

“五秒钟准则”:一项本来由人从事的工作,如果人可以在 5 秒钟以内对工作中需要思考和决策的问题做出相应的决定,那么这项工作就非常大的可能被人工智能技术全部或部分取代。

而 CVaaS 的目的,就是让各行各业可以以最快的形式和方式完成这要的一些工作的转变。

例如,在零售行业,我们选择可以选择人脸识别做 VIP 识别,选择行人识别做客流统计,选择性别、年龄识别做顾客分类或者顾客肖像。

在安防行业,我们选择动作 (打架) 识别、行人跟踪、姿态识别等做安全的防范和预警。

再例如,在房地产领域做场景图片的分类 (例如哪些图片是卧室,客厅,厨房),优质 (封面) 图片的挑选;印刷行业根据图片的内容做自动裁剪;等等。

(点击放大图像)

4. CVaaS 平台的设计

极市 CVaaS 平台主要面向三个群体,具有算法服务开发能力的开发者,需要使用算法服务的行业用户以及海量和我们对接的硬件厂商。对于开发者,平台设计基于 Gitlab 的代码 (SDK) 管理,版本管理,Gitlab 是目前比较流行的开源类 Github 代码管理平台。

开发者可以提交自己认为满意的版本,对于不想提供源码的,可以提供 SDK 即可。对自己的算法的数据输入端,使用平台提供的输入 SDK 对接,可以对自己的算法进行场景使用和介绍做详细的描述,就想我们去 APP Store 提交一个 APP 一样。

此外,开发者拥有自己的管理后台,每天可以查询到自己的算法被使用和应用的情况,以及最新的收入。

我们也知道,对于 CV 或者 AI 类算法,最重要的莫过于数据集,所以,在平台设计中,我们增加了海量测试数据的模块,可以提供给不同应用的开发者测试集。

而每一个算法服务的运行,则基于 docker 的隔离运行,docker 用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通过加密和端口转发,更加安全。

基于海量硬件与我们系统的无缝链接,每一个在平台上的算法应用,即可面向近百万摄像机用户的使用可能。

5. 总结与展望

所有平台的设计最终都是为了服务社会和个人,而 AI 作为当前的与社会紧密相同的技术,我们希望使得更多不同的行业用更轻松简单的方法与技术相结合,而我们这些懂技术的人,也可以有更多的方式去贡献我们的能力,这个就是我们极视角和我们的产品“极市”的初衷。

答疑环节

Q1: “我是一位机器学习爱好者,对机器学习平台比较感兴趣,也希望能够参与开源社区,看到您是 Tensorflow Contributor 感觉很厉害,请问我应该如何努力才能也成为 Tensorflow Contributor。”

罗韵:开源社区其实有非常多非常优秀的项目,一开始如果能力不够,可以从看别人的代码开始,如果渐渐能读懂别人的代码,一般成熟的开源项目都有开发计划的,而且是公开的,有些功能是专门公开给社区去实现的,那就可以自己去实现,还有一种情况就是你发现了项目本身存在的问题或者 bug,然后你去完善好。

Q2: “请师从港科大哪位大牛呀?是杨强教授吗?”

罗韵:是的。

Q3:“对工作一段时间的软件工程专硕来说,如何申请名校深度学习的 PHD?没有论文,本硕名校,BAT 工作背景。”

罗韵:首先先确定你是有耐心和恒心愿意去读 PhD,毕竟也是好几年光阴,其次就是我觉得还是个人需要有自己的一点点小成果或者做出一点可以打动导师的东西,最后就是,工作中的积累也是很有用的,个人愚见,这个问题因人而异的。

Q4: “如何在嵌入式平台,比如 ARM Cortex A73 四核平台上部署机器视觉,应用到图像识别分类?”

罗韵:这个问题有点太泛了,具体还要看图像识别分类,做的是什么分类,分多少类,整体的项目程序的复杂度等,一般如果部署成功了,很多时候也要看具体场景的要求,例如场景要求实时,但是速度上就是无法支持,这个也是其中一些难点所在。

Q5:“对美女讲师提到的 CVaas 蛮好奇的~ 请问这个有什么优势吗”

罗韵:优势有几个方面,第一,作为一个 CVaaS 其实就是一个连接技术与需求的桥梁,所以,我们首先已经拥有了大量的场景的硬件(摄像头)作为用户,所以,在这里的所有 Service 都不基本不用担心是否有人使用的问题,只要是好的 CV Service,都有对应的潜在用户。

第二,你的运算能力方面和运维都有我们整个平台作为支持,开发者可以更加关注算法的研发。

第三,我们目前应该是拥有着最大量的一线数据可以做算法测试。

Q6:“想知道你们新零售的解决方案”

罗韵:这个,今天没有说到,但是这个确实是我们公司的其中一个产品,新零售的解决方案,主要解决三个核心问题,全自动采集数据 + 构建数据分析框架 + 业务驱动的数据分析。

Q7:“请问什么样的算法可以放到你们平台呢?你们平台的模式是什么样的”

罗韵:作为开发者,不用太担心什么算法可以放到我们平台,我们底层会对算法做自动测试与审核,审核通过了,自然就是被使用的。

Q9:“对于成为 contributor 一题,请罗老师给女生,特别是零基础却要半路转行到此领域的不年轻的女生一点指导建议或者鼓励。谢谢。”

罗韵:嗯!加油!可以从写项目文档开始其实,很多入门的开源社区的新手都是先从帮项目写文档开始的,当然,写之前就意味着你要先慢慢理解每一个 sample/demo。

Q10:“您公司开发的产品,智能客流系统,有没有已经成功的运营实例,效果怎么样”

罗韵:我们官网上展示出来的客户名单,国内外的知名零售连锁品牌都有是我们客户,太多,我这里就不一一罗列,运营效果,我觉得还是市场说的算,目前我们的客户增长率就是最好的证明。

Q11:“在终端相册应用中,您怎么看待图像语义理解 Vs. 物体检测 & 分类给用户搜索带来的体验的差异化?”

罗韵:两个技术没有冲突,其实都是可以应用的,物体检测主要是用于对图像做自动裁剪比较多,图像语义理解更多的是为了还要做搜索或者推荐,如果是以搜索为主要任务的话,做检测后加上语义理解会更好。

作者介绍

罗韵,极视角科技联合创始人,香港科技大学人工智能 PhD candidate,TensorFlow contributor。实现过基于云端的计算机视觉分析系统和企业早期计算机视觉的算法研发。接触过接近百种人工智能算法的应用,覆盖行业包括零售、交通、安防、公共资源、环境、金融、医疗、娱乐等,对 AI 算法的应用化场景了解丰富,目标是让未来的 AI 产品可以和 APP Store 里面的应用一样丰富。著有知乎专栏人工智能应用系列( https://zhuanlan.zhihu.com/ai4application)。


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017 年 6 月 06 日 17:451054

评论

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

BTQQ挖矿/比特全球/BT全球系统APP开发简介

工程师必知的代码重构指南

百度开发者中心

代码重构

分布式图计算引擎

tanekf

分布式计算 图计算

覆盖80%以上Java性能调优场景,三年开发经验以下慎入

Java架构师迁哥

双碳打开新机遇 华为互联网数据中心基础设施筑起“绿色基石”

科技热闻

看CarbonData如何用四招助力Apache Spark

华为云开发者社区

spark Apache Spark ACID CarbonData 分布式集群计算框架

Ipfs矿机收入如何?IPFS矿机一天收益多少?

区块链 数字货币 IPFS

前几年写的自己团队管理内容,如果你想做研发管理,可以看一下

安宇|Way

管理 考核 团队 文化 价值观

蜜蜂圈软件开发|蜜蜂圈APP系统开发

☕️【Java技术之旅】【ConcurrentHashMap】深入浅出核心源码分析(JDK1.8版本)

李浩宇/Alex

Java 源码分析 ConcurrentHashMap 6月日更

Redis入门七:分布式锁

打工人!

redis 分布式锁 redis分布式锁

CloudQuery 使用教程之 No.3 数据查询(中)

CloudQuery社区

云计算 dba 开发运维 数据库管控工具 国产数据控

「腾讯面试题」兔子试毒

Java架构师迁哥

中国大学MOOC Android 客户端开发提效之页面信息

有道技术团队

android 服务端 客户端

阿凡达公链AC系统APP开发

火艺极速版短视频系统APP开发搭建

大佬讲【暴力破解】漏洞的原理、利用和防范

网络安全学海

网络安全 安全 信息安全 漏洞 漏洞修复

Tubacle挖矿系统APP开发搭建

缘起短视频APP系统开发介绍

Redis入门六:集群

打工人!

redis 缓存穿透 缓存击穿 缓存雪崩 redis集群

MongoDB磁盘清理那些事儿

循环智能

mongodb 集群 主从 GridFS 磁盘清理

构筑高质量的数据中心基础设施,华为助力创造互联网全新体验

科技热闻

积分商城设计思考

林一

幂等性 设计实践 重试 积分商城

Bi Token质押挖矿软件系统开发方案

INS视频怎么保存 (2021最新图文教程)

资源君

方法 经验分享 教程 资源分享 Instagram

腾云视界APP开发|腾云视界软件系统开发

百度关于微前端架构EMP的探索:落地生产可用的微前端架构

百度开发者中心

百度 前端

你不知道的 Linux 使用技巧

学神来啦

DOLLAR CAT/Dcat币挖矿系统开发

革故鼎新:企业数字化转型繁荣互联网生态建设,驱动ICT设施升级

科技热闻

企业资产数据大屏,打破固有管理思维僵局,杜绝资产无效流失

一只数据鲸鱼

数据可视化 资产管理 金融资产 金融大屏

CVaaS计算机视觉即服务 ——从算法,应用到服务的技术演变-InfoQ