来源 | HaaS技术社区
物联网技术不断发展,已经从单纯地强调连接,更多地强调多场景的支持。出现了越来越多带有视觉能力的智能硬件,包括智能门锁,智能猫眼,86智能面板,带屏智能中控,网络摄像头等。
这些智能设备基本都会带有摄像头功能,作为“眼睛”。摄像头采集了图像数据后,会进行处理。处理流程可以抽象出视觉技术的数据处理流程首先是数据采集,然后是数据处理,最后是数据显示。
图像数据的采集
数据采集通过摄像头完成。摄像头的硬件主要包括ISP,sensor和镜头。Sensor负责采集图像,ISP通过3A算法完成图像的处理得到YUV格式的图像数据。得到原始的图像数据后,通过编码技术获得编码后的图像数据。视频流使用H.264和H.265进行编码,图片使用MJPEG进行编码。编码后的图像数据由于体积更小,便于数据存储和传输。编码过程可以通过软件完成,或者专用硬件完成。专门用于图像处理的ISP芯片通常都具有硬件编解码能力。带有硬件编解码能力能够获得更好地性能
图像压缩标准,可以分为视频编码和静态图像编码。编码技术是一种压缩技术,将原始格式的图像数据转换成另外一种格式,便于网络传输和存储。目前使用频率最高的视频编码技术是H.264和H.265,静态图像编码技术是MJPEG。
H.264和H.265是有ITU(国际电传视讯联盟)主导,用于网络视频传输的编码技术。主要用于实时视频通信领域。如今广泛使用的视频压缩标准包括H.264和H.265。H.265具有更灵活的编码机制(包括编码单元,预测单元和转换单位),相比于H.264支持更高的分辨率,更高的压缩率和更高质量的编码标准。同样质量的视频编码能够节省40%到50%的码流。
MJPEG是一种基于静态图像压缩技术JPEG发展的动态图像压缩技术。MJPEG的主要缺点是压缩率相比于H.264和H.265要低。MJPEG每一帧都是JPEG编码,不考虑视频流帧之间的变化,只对每一帧单独进行编码。这个特点使得MJPEG的压缩率低,同时使得它适合于静态图像数据的采集。
图像数据的处理
图像数据采集和编码完成后,主要会有两种处理,一种是使用流式媒体协议推送图像数据,另外一种是使用AI技术对数据进行深度学习和分析。
流媒体协议主要包括了RTSP,RTMP,还有P2P协议。这些协议将图像数据在智能硬件,手机和云端之间推送,实现图像数据的预览,云端存储等。
RTMP(Real Time Messaging Protocol)是由Adobe公司提出的私有流媒体协议,基于TCP协议实现的实时消息传输协议,主要用在了视频直播等场景。RTMP通常维护一个TCP连接,用于传输命令和数据。它的主要特点是时延低。目前由于RTMP延迟低,易用,并且和常用富媒体工具的结合,视频直播和CDN推拉流基本都是采用RTMP。
RTSP(Real Time Streaming Protocol)是一种流媒体协议。通常维护2-3个TCP连接,分别传输数据和命令。它主要定义了控制命令,包括了setup,play,pause,teardown等。数据传输直接依赖于TCP或者UDP,也有基于HTTP的RTSP over HTTP。由于RTSP并没有被Flash支持,在浏览器中使用需要安装插件,使用上不如RTMP方便。同时由于NAT的广泛使用,导致使用UDP传输的视频数据会被block。由于上述一些原因,虽然RTSP的实时性相比于RTMP要好一些,RTSP的流行程度并没有RTMP那么高。
P2P技术是点对点的穿透技术,可以实现摄像头和手机之间点到点的视频拉流,优势是节省服务器带宽,降低成本。实际部署网络中,无法实现具有IP地址之间直接通信的主要原因是大多数主机的IP地址都是在防火墙或者NAT之后,只有少部分主机能够直接接入Internet。所以需要网络穿透技术完成智能设备之间的直连。网络穿透技术主要有STUN(Simple Traversal of User Datagram Protocol Through Network Address Translation),TURN(Traversal Using Relays around NAT)和ICE(Interactive Connectivity Establishment)。目前,由于网络的复杂性,P2P的穿透率大约是50%。
AI人工智能,完成图像数据采集和传输后,图像数据的后向处理主要是图像识别等AI处理。视觉AI处理以卷积神经网络为核心,发展出来了各种模型。CNN 在图像分类和目标检测方面优势的表现,它已成为计算机视觉和视觉跟踪的主流深度学习模型。当智能设备自带硬件加速功能时,图像数据处理模型会在智能设备本地运行得到结果。当没有硬件加速,或者CPU/MCU处理速度不够支撑模型分析时,可以使用云端算法。
物联网多媒体技术框架
物联网领域很多芯片厂商都会在系统上定义一套自己的多媒体框架,到目前为止并没有一个统一的架构。使用非常广泛的多媒体框架是OpenMAX(Open Media Acceleration)。OpenMAX是跨平台可移植的多媒体框架,可以加速多媒体应用程序的开发。OpenMAX分为三层:
- 应用层(Application Layer),提供应用程序和多媒体框架之间的标准接口
- 集成层(Integration Layer),定义了多媒体框架层和各种多媒体组件之间的标准接口
- 开发层(Development Layer),提供软件和物理硬件和物理硬件之间的标准接口
主要提供的APIs包括视频,音频和静态图像。除了框架和标准化接口外,最主要的功能包括Buffer在音视频流过程中的管理。通过使用多媒体技术框架可以极大地加速开发的进度。
视觉技术应用及关键能力
物联网视觉技术主要用于IP Camera,智能门禁,猫眼,智能面板和带屏智能瘦终端等。其中的关键技术能力包括了视频云服务,可视对讲服务,及AI能力等。
视频云服务主要是在智能设备上实现音视频数据的传输,让用户可以实时进行音视频通话,或者拉取音视频数据码流。技术上可以抽象为三个通道,第一个是用于传输控制命令的信令通道,第二个是传输音视频的数据通道,第三个是数据传输的控制通道。典型的应用场景有摄像头采集视频码流后,在手机端预览实时画面;手机和智能手表之间实时音视频通话;智能楼宇对讲系统等。