AI视觉当下的创新源头是什么,该如何打造一流的视觉AI技术?

机器人生态圈 2022-09-09
5414 字丨阅读本文需 12 分钟

一、AI视觉技术原理是什么?

AI视觉技术(又称计算机视觉)是计算机科学的一个领域,它训练计算机复制人类的视觉系统。这使得数字设备(如人脸检测器和二维码扫描仪)能够像人类一样识别和处理图像和视频中的对象。

AI视觉技术(artificial intelligence computer vision)是研究如何让机器“看见”的科学,即利用摄像机和计算机代替人眼识别、跟踪和测量目标等机器视觉,并进一步做图形处理,使计算机处理的图像更适合人眼观察或传输到仪器进行检测。计算机视觉也可以看作是一门研究如何让人工系统从图像或多维数据中“感知”的科学。

机器视觉的基本原理是用机器代替人眼进行测量和判断。机器视觉系统通过图像采集设备将采集到的物体转换成图像信号,传输到专门的图像处理系统,获得采集到的物体的形态信息,根据像素分布、亮度、颜色等信息转换成数字信号;图像系统对这些信号进行各种运算,提取目标的特征,然后根据判别结果控制现场设备的动作。

二、如何打造一流的视觉AI技术

1. 构建计算机视觉系统的基本流程

对于一个视觉应用系统而言,需要先将应用系统划分为不同的子模块,比如人脸识别系统,就包括人脸检测、特征点定位、人脸识别等不同子模块。对于每一个子模块,都由输入输出定义、数据收集、数据标注,训练框架选择,算法实现,模型训练,模型选择,模型上线等不同步骤组成。

2. 构建视觉计算系统的关键因素

构建计算机视觉计算系统主要包含下面几个关键因素:

核心算法研发:即如何开发出更准确、更快、更多功能的算法;

自动化大规模训练框架:即如何支持更大规模集群,更加自动化地训练算法;

智能数据挖掘和标注:即如何做到高效的数据挖掘和低成本的标注;

基于硬件平台的计算优化:即如何选择硬件平台,以及在硬件平台上做性能优化。

(1)核心算法研发

算法研发是一个不断迭代、精心打磨的过程,工业界和学术界最大的区别是学术界希望创造更多的算法,追求更多的是新颖性和创造性,而工业界追求的是系统的功能、性能、稳定性指标,并不要求发明最新颖的算法,而是要依据业务需求和资源限制做出最好用的系统。在工业界进行算法改进,包括很多维度,如数据如何处理、数据规模和来源,参数设置、模型结构,还包括损失函数设计,模型加速算法等,每一个因素都可能对最终结果影响很大。还有非常重要的一点是,需要从系统角度去解决问题,比如设计新的系统处理流程,比如把问题定义为检测问题还是识别问题。

每一个智能系统都是由多个智能算法模型组成的,以我们针对智慧城市、智慧商业领域研发的智能视频理解系统而言,包括几百个模型。这个系统里面,从大的方面讲,包括物体检测、人脸识别、人体智能分析、车辆智能分析等几个大模块,具体到比如智能车辆分析这个子方向而言,则包括车牌识别、车型车款识别、车辆以图搜图(ReID)、车身颜色识别、标志物识别、未系安全带、开车打电话等很多子模型。

对于如此多的算法模型,如果每个模型都需要不断迭代,同时要支持不同硬件平台的不同版本,在研发人员和训练硬件资源受限条件下,如何持续打磨核心算法是一个很大的挑战。传统的算法开发模式,算法工程师往往提起数据标注任务,由数据标注员标注完成数据标注,但算法工程师需要关心如何开发标注工具、如何培训标注人员、如何转换数据格式、如何提纯标注完的数据,最后再手工方式在一台物理机上将模型训练出来。这种模式下,算法工程师有60%的时间都在处理和数据相关的工作,比如搜集数据、指导开发标注工具、清洗标注数据或者发起二次标注;还有20%的时间是在调参数,看训练日志,包括处理磁盘空间不足、GPU被别人占用等意外;其实只有大约15%左右的时间在实现算法,仅有5%的时间在思考算法。同时,这个模式的缺点是数据标注成本很高,算法工程师的时间利用率很低,同时由于没有统一协调,GPU或者空闲或者被大家抢占,GPU的利用率也很低。

更好的一种模式是为算法研发团队配备一个数据平台开发团队,专门负责算法团队所需要的数据以及训练平台。也就是说,算法团队仅仅需要提出数据的需求和要求,其它都由数据平台团队去完成。数据平台团队负责数据的收集、标注前处理、标注工具开发、标注后处理、训练和测试数据管理等工作,其目标是为算法团队用最高效低成本的方式提供高质量的训练数据。同时,为了提升训练效率,数据平台团队还需要负责打造统一的训练平台。这种模式下,算法工程师的工作20%花在沟通确定数据处理流程,同时由于有统一的训练平台,算法工程师只需要花费大约10%的时间在训练调参上。那么自然就会花费更多的时间在实现算法和思考算法上。这种模式下,不仅仅算法工程师的效率得到提升,而且数据标注成本在降低,数据增长速度在提升,GPU利用率也在提高。还有一点非常重要的是,智能数据处理平台在正常运行下,只需要标注人员进行标注,数据量就会不断增长,不依赖算法以及开发人员的投入,这是未来任何一个智能学习系统需要具备的特性。

(2) 自动化大规模训练框架

构建自动化训练管理平台的目的是为了提升人员产出效率,节省人力,提高训练资源的利用率。一方面对训练数据进行统一管理,每台机器都能访问,避免在机器间拷贝;第二,对训练代码和参数进行管理,实现代码、参数、环境自由在多台机器间拷贝,省去环境搭建的时间;第三,对计算资源和任务进行管理,省去工程师关注资源空闲的时间,同时,可以在没有空闲资源时任务排队,省去关注时间,同时提升资源利用效率。此外,为了避免算法人员看日志的时间花费,增加模型评估和选择,自动评估和选择模型。对算法人员而言,可以在网页新建任务,选择训练数据,确定代码和参数,就可以开始训练,同时可以设置几套参数进行训练,最终等待训练产出的最优模型即可。

现在已经有很多优秀的深度学习开源框架,比如tensorflow、mxnet、pytorch等。有一些创业公司,自己自行开发了一套自己的开源框架,但我个人认为其实没有太大的必要。一方面,私有的框架,很难保证比开源框架更加先进,开源框架吸收了世界上最先进的思想,有很多优秀的人会产生贡献,创业公司很难有这样的实力做得更好。此外,自己开发的框架,对于新入职员工而言有使用门槛,此外,由于很多好的算法都是在开源软件基础上做的,使用自己的框架也不利于进行技术交流。但是,是不是直接利用开源软件就够了呢?我想答案也是否定的。现在的开源框架,在大规模数据训练方面做得还不是很好,总是会有一些特别的任务是开源软件无法支持的。所以,基于现有开源软件,根据自己的任务做框架改进是一个对大多数公司而言都更加合理的选择。

比如对于人脸识别任务而言,最终是一个上亿类别的分类问题,如果直接采用现有框架,是无法完成这个任务的。采用softmax作为损失函数,在特征维度仅仅是128维时,最后一个权重矩阵的数据规模是几十G,远远超过了现在显卡的显存。我们必须实现一种新的框架来完成数亿类别的训练任务。我们采用了一种“数据并行+模型并行”的方法,先将数据分配到不同的GPU上,先进行前向预测计算得到经过卷积网络之后的特征,然后将不同卡上的特征进行汇聚。但权重矩阵在一台机器上是无法保存下的,因此,需要把权重矩阵分配到不同的机器上进行运算这个时候就用到模型并行思路。我们知道,在并行计算中,计算是比较容易通过并行解决的,但是,通信量往往会成为瓶颈。我们设计的这个数据并行加模型并行的方式,只需要把所有样本的特征在多机间做同步,数据量很少,所以可以得到很高的加速比。

(3) 智能数据挖掘和标注

我们大家都知道数据很重要,但如何低成本、高效地获取大量高质量数据其实是一件不那么容易的事情。最简单处理数据的方法就是收集数据直接人工标注,但直接标注的缺陷是效率很低,比如直接标注百万级别人脸数据,需要花费近百万费用,如果标注数亿数据,费用显然是无法承受的。一种常见思路是选择标注工作量小的有先验约束的数据源,如相册数据,每个人的相册基本上都是来自于家人或者朋友的数据,这样的数据,直接标注也不合理,比如隐私问题,比如人的标注准确率问题。

我们实现了一套人脸自动数据标注系统,包括如何从图片中检测、定位人脸,包括人脸区域割取、特征提取,包括人脸质量获取,以及基于人脸质量做过滤,包括做子集中的聚类,以及类间去重,以及训练人脸模型,同时,人脸模型还可以反馈重新进行人脸特征提取和聚类,不断迭代。当然,实际系统要更加复杂,有非常多的参数和细节逻辑,但是,这样的一套系统,使得人脸识别数据标注成为一个自动化的过程,基本上不需要人工再参与,节省了大量的标注人力。类似的案例还有很多,比如可以依据车牌号码进行车辆相关数据收集,可以只标注一辆车的属性就可以得到同一个车牌的多辆车的结果。总之,实践表明,在数据上花费的所有努力都是值得的,这已经成为技术驱动的创新型公司的核心竞争力之一。

数据平台团队,除了准备数据和开发训练平台外,还可以参与算法的训练和改进工作。很多算法,经过算法工程师的迭代之后,在算法方面已经相对确定,更多的是调参和数据相关工作。这一块是可以由数据平台工程师通过数据驱动的方式来改进的。比如,我们在一些任务中,就在算法工程师基本不需要参与的情况下,数据平台工程师通过高效挖掘困难数据并标注的方式可以使算法持续改善。

上述的智能数据处理和自动化训练平台系统,结合起来,在我们的内部被称为深瞳大脑项目。深瞳大脑的终极目标是希望将人工智能中人工的部门减少到最少,打造一套动态更新的“数据采集->标注->算法研发->模型训练->产品落地->数据产生”的闭环系统,最终仅仅在数据标注环节依赖人工,成为一套真正的基于自主学习的智能系统。

(4)基于硬件平台的计算优化

除了算法效果、算法功能外,还需要考虑预测速度以及承载硬件的成本。最底层是芯片等硬件平台的选择,之上是预测框架,再之上是sdk封装以及处理流程和分布式架构,再上层则是各种视觉应用。

这其中涉及很多工作,如硬件的选择,GPU、Arm、FPGA、DSP还有专门为深度学习设计的ASIC芯片。硬件平台对整个计算机视觉识别系统非常重要,为了做一个正确的平台选择,需要考虑主芯片的计算能力、成本,接口支持丰富程度,以及编解码、ISP,软件兼容性以及平台易用程度等。选定硬件平台之后,首先应该从算法角度考虑如何减少计算量。比较简单的是基于经典网络去改变总的层数以及每层特征通道数目。进一步,可以结合各种经典网络去设计自己的网络,比如在嵌入式平台上,可以参考Depth-Wise结构、Shuffle Net结构中的核心思路设计自己的新网络。还可以基于强化学习模型搜索更优的网络。此外,还有一个非常重要的思路,就是如何通过模型蒸馏的方法去使得一个小网络训练得到接近大网络的效果。除了算法层面外,还可以从异构计算层面利用各个平台特性进行优化,比如英伟达GPU平台可以优先考虑TensorRT以及CUDA指令进行优化。

三、AI视觉的创新源头,从仿脑到追光逐电

AI视觉当下的创新源头是什么?抓手有两个。

一个是生物源头。强大的视觉处理系统是生物的天然能力,计算机视觉的研究源头还是在生物。基于此,清楚认识生物视觉的基本原理是第一个要探寻的问题。

另一个是物理源头。人们能看到物体,是因为照射到物体上的光反射进观察者的眼睛中,之后通过神经元传递,让大脑感知到了物体本身。从物理设备角度看,视觉是对光信号的捕获、加工与处理。因此,回答物理世界、光信号、以及相机采集的图像视频三者之间关系是目前要追寻的另一个重要问题。

将上述两个视觉原理研究清楚,那么其他问题可能也就迎刃而解了。

在生物视觉层面,要理解整个视觉系统的机制,首先要建立起对每个细胞单元的理解。黄铁军谈到,人的眼睛里面大约有六七十种神经细胞,每种细胞及彼此间的连接都要研究清楚。

比如光信号进入视锥、视杆细胞后,细胞是如何把光信号转为电信号的?神经网络结构是如何连接的、每个连接上的信号是如何向下传递?最后需要将整个系统通过计算机重演出来。从2014年起,他们团队便开始研究了,目前已经做到了部分视觉细胞的精细建模。

视皮层约占大脑皮层五分之一,若能清楚演绎出从光信号进入眼睛开始一直到最后完成识别的信号加工过程,便可以说将生物视觉搞明白了。他的团队希望再用五年左右的时间把灵长类视网膜搞清楚,他相信,在全球科研人员的努力下,预计可以在2035年左右解决这些问题。

谈物理源头要从光谈起。光学要探讨相机是如何采集与表达光信号的。如果研究计算机视觉只是从图像视频数据集开始,便没有追寻到第一性原理。

光具有波动特性,又有粒子特性,即所谓的波粒二象性。光的波动性表现在每个光子本身,它们振动频率不同、能量不同,最后反映在光谱上的分布也就不同。

相机是通过捕获高速冲击过来的光子流,把它转成一幅图像或视频。光子在运行撞击相机传感器的物理过程中,本质是把高速运转的物理世界变成每秒几十赫兹的慢速过程。可以想象,当光子打到螺旋桨的扇叶上,然后反弹撞上镜头背后的感光元件,形成一张图片。

这里面会带来一些问题,一方面螺旋桨扇叶高速旋转是清清楚楚地发生着,另一方面传统相机以几十赫兹的速度是完全无法记录下整个过程。

虽然高速相机目前可以做到,但是成本高、体积大的特点仍然无法普及利用。其中的技术问题在于,即使相机能够每秒输出3万幅图像,背后的算法、存储能力、计算系统也难以实时处理,当前硬件设备成本高昂,这是第一个要解决的问题。

视觉信息表达一直以来都采用图像与视频,少有人思考还有什么更好的办法。背后的原因,可以追溯到发明相机的年代,本质是一种化学方法逻辑。目前人们表达信息的方式还停留在胶片时代,包括数码相机也是一样,比如打开快门,曝光数毫秒形成一幅图像。

其中的误区在于光从来都不是“整整齐齐排着队”,它是一个自然发生的随机过程,相机通过曝光获取图像的方式,最大的损失就是把丰富的动态过程变成单一的静态图像,科研人员再用算法通过比较不同图像的差别来估计运动过程,纯属浪费,但这就是目前计算机视觉的主流方式。

如何能够低成本实时记录动态过程。

当下,就是把光的整个运动过程记录下来。极端情况是把一个光子转成一个比特,常规器件做不到,就收集一组光子(例如1000个)转为1个比特,这样光强的时候比特流会密集,光弱的时候会相对稀疏,要想了解某时刻光强如何,可以用两个比特或两个脉冲之间的时间来计算,这就很好地刻画了光的物理过程。

也就是说,不同于传统相机,基于“视觉+雷达”模型的脉冲相机的每个像素独立,不需在特定时刻一起成像,自行记录光线变化,将光信号转换成0和1组成的数字比特流,所有像素的比特流按照空间排布组成的流阵列,准确刻画了传感器视窗采集到的一段时间内光线变化的物理过程。

放弃传统图像视频表达,回到表达光物理过程的本源,这就是叫做减法。基于此,在脉冲视觉的世界中没有图像,光变成脉冲流,图像视频等只是产物之一,脉冲流还可以直接输入脉冲神经网络,实现超高速机器视觉。

文章来源: 36氪,腾佑科技网,DataFunTalk

免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处本网。非本网作品均来自其他媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如您发现有任何侵权内容,请依照下方联系方式进行沟通,我们将第一时间进行处理。

0赞 好资讯,需要你的鼓励
来自:机器人生态圈
0

参与评论

登录后参与讨论 0/1000

为你推荐

加载中...