过去两个月团队一直在忙着将基于后端分析的技术方案移植到前端设备,由于都是英伟达的硬件平台,迁移过程还算顺利。下面分享一下什么是后端分析、什么是前端分析、什么又是边缘分析,当然叫后端计算、前端计算、边缘计算也行。下面这个动图就是我们采用前端分析方案的效果,具体硬件是Jetson Xavier NX 嵌入式板子,算法用的是YoloV4 FP16,一路高清视频实时分析完全没问题,勉强可以做到2路。
后端分析
后端分析中的“后端”,其实跟我们Web/App开发过程中提到的前端/后端差不多,意思就是在后台服务器上做数据分析。如果数据是视频,那么就是先把视频接入到后台服务器(可能是一个视频管理平台),然后再从该服务器上取视频数据进行分析,比如做一些视频结构化的处理。
前端分析
前端分析中的“前端”,跟后端是对应的,不需要先把数据搞到后台服务器上,数据在哪里被采集的就可以在哪里被分析,如果采集数据的是视频摄像机,那么分析的过程直接在摄像机内部完成即可,然后将分析结果上传到中心服务器(分析结果可能是json格式)。注意这里跟后端分析有一个非常明显的区别就是,原始需要被分析的数据(这里的视频)不用先上传到后台。
边缘分析
那么什么是边缘分析呢?其实边缘分析介于后端分析和前端分析之间。后端分析需要将原始数据上传到后台服务器,前端分析中原始数据在采集的地方就可以被分析,而边缘分析要求先将一个小范围的待分析数据传到一个局部中心(可以是一个小型嵌入式服务器,但是规模比后端分析中的服务器小得多),然后再在该局部中心做数据分析,局部中心分析完后再将结果上传到更上层的中心平台。
优劣势
1、后端分析:
后台分析算力可以集中管理,灵活调配,直接从已有后台服务器取数据,数据的来源对于算法来讲相对透明,技术也相对成熟。缺点是原始数据可能上传不及时,比如视频数据,先要上传到后台服务器再做分析,这样延时更大、需要更多的带宽;另外,后台算力比较集中、功耗大,对机房管理/电耗要求比较高。
2、前端分析:
前端分析基本采用嵌入式方案,一个板子/芯片处理单个数据来源,比如视频数据,一个嵌入式的板子/芯片基本只对一路摄像机负责,被分析的视频数据无需长距离传输,采集时马上就可以被算法分析,相对来讲比较及时。缺点也很明显,不是每个数据采集终端默认都带有算法分析功能,大部分时候需要更换原有数据采集设备(比如传统监控摄像机),使其具备智能分析功能(比如智能摄像机),一般设备工作环境还比较恶劣,设备稳定性要受得住考验。
3、边缘分析:
边缘分析中和了后端分析和前端分析的优缺点,可以相对缓解后端分析中数据传输的延时问题、对机房硬性要求高的问题,同时也能相对缓解前端分析中需要替换数据采集终端的问题。
三种分析模式各有所长,具体场景可以采用不同的技术方案。
后面一段时间,团队开始研究华为昇腾310平台技术方案,跟英伟达类似,他们也提供一站式解决方案,从前端分析、边缘分析到后端分析,都有对应的型号硬件和软件配套来使用。目前这种国际形势之下,尽快适配华为平台方案还是非常有必要的。看官方资料介绍,性价比还是比较高的,但是具体还是需要实践一下,比如官方提到一张Atlas300的AI加速卡(包含4个昇腾310芯片,售价1.5w左右,跟Tesla T4差不多)可以做到64路高清视频实时分析,但是据我们侧面了解,这个数据并不是特别可靠,因为并没有交代视频分析基于的算法模型,如果只是非常简单的图像分类模型或者基于简单backbone的目标检测模型,即使能做到64路,实际工程上意义也不大。当然,这块卡的编解码性能还不错,经过测试,一块Atlas 300的卡做50路1080P以上高清解码、D1编码还是非常稳定的。等有结果了再给大家分享华为技术方案。