一、初识人工智能及视觉应用
1.1 课程介绍
- 课程目标:了解人工智能和OpenVINO的工具套件,为AI应用选择最佳的Intel平台,并使用Intel产品构建AI应用
- 课程内容:
- 初级课程:从零开始讲解所有AI的应备知识、相关技术、Intel为每种应用场景推荐的平台和软件工具
- 中级课程:深入了解OpenVINO的工具套件,讲解演示OpenVINO,练习所有的可用的工具
- 高级课程:介绍使用Intel平台和工具,在系统层面构建实际可扩展的AI产品
1.2 初级课程安排
总共分为10节课程,内容如下:
- 介绍需要人工智能的原因和需要哪些技术
- 介绍计算机视觉和AI
- 讲解现在的电脑如何高效地执行AI
- 演示通过Intel OpenVINO工具套件能够完成的多项工作
- 概述设计AI应用的完整流程
- 初级课程回顾
介绍了确定像素颜色的RGB表示,图像由许多像素构成,视频由许多图像构成,并讨论对图像进行模糊、锐化、边缘检测和特征提取等操作
使用Intel集成显卡加速视频编解码,利用Media-SDK调用Intel快速视频同步技术加速视频处理
介绍了人工智能算法、面向视觉应用的神经网络、实时执行神经网络的复杂性,并介绍了OpenVINO的推理引擎加速视频推理
介绍了OpenVINO套件支持视频分析、推理、计算及视觉视频处理的功能
OpenVINO工具套件
1应用构建流程
找到合适的模型(Model):使用一个基于深度学习的模型来执行分类、检测、分割等任务
推理之前的准备(Prepare Inference):模型通常是在云环境中训练,采用的是浮点格式,可支持模型格式转换
性能指标评测(Benchmark):使用多项优化技术和多种数据格式对多个模型进行基准测试
选择系统(Select System):选择能够满足性能要求的平台
查看编解码密度:选择合适硬件需要考虑设备可以支持多少个摄像头,从设备硬件角度考虑编解码的能力
模拟整个流程(Full Pipeline):完整考虑解码、编码和推理等任务的整体运行,使用STREAMER模拟完整的工作负载
构建AI应用(AI Application):构建软件,或使用OpenVINO 将视频分析流程和推理整合到现有应用中
模型获取流程
通过某个途径购买或下载模型或自行训练
从OpenVINO Model-Zoo中下载模型:有40多种模型,可用于检测、分类、分割、重新识别、2D、3D、音频处理等,可以访问Model-Zoo存储库下载模型
使用模型下载器:可以下载许多公开模型和所有Model-Zoo模型,指定所需的模型、具体精度(包括FP32、FP16、INT8)
模型优化器及推理流程
模型优化器(Model Optimizer):跨平台的命令行工具,支持训练和部署环境之间的转换,执行静态模型分析并自动调整深度学习模型
IR文件:模型优化器生成网络的中间表示,包括xml文件(网络拓扑)和bin文件(经过训练的数据文件,包含权重和偏差)
推理引擎(Inference Engine):支持IR格式模型,使用相同的模型在多种设备上运行推理
处理流程:可采用离线方式,使用模型优化器将模型转成IR文件;有了IR文件,就可以反复进行推理
OpenVINO和工具套件的基本使用流程
OpenVINO是Intel基于自身现有的硬件平台开发的一种可以加快高性能计算机视觉和深度学习视觉应用开发速度的工具套件
OpenVINO主要包括DLDT(模型优化器、推理引擎、推理引擎样本、工具)、开放预训练模型(DL Streamer、OpenCV、OpenCL、OpenVX)
应用构建流程:模型准备、推理之前准备、性能指标评测、系统选择、编解码能力、模拟完整流程、构建AI应用
获取深度学习模型:自行训练、从OpenVINO Model-Zoo下载模型、模型下载器
人脸识别实验(性别和年龄检测)
图像分类(使用SeqeezeNet1.1和ResNet-50模型)
OpenVINO套件简述
OpenVINO套件,开放视觉推理和神经网络优化的工具集,全称Open Visual inference and neural netwaork Optimization,是一整套面向AI应用的Intel解决方案,本课程内容主要对组件进行概括性介绍,演示运行相关组件;它是一款免费软件,提供大量的开源资源,包括应用示例和场景演示等。
OpenVINO受欢迎的原因
简单性:支持批处理异步执行功能
性能:可将推理速度提高两倍。并将内存消耗降低五倍
可移植性:可以快速将原有代码移植到新设备上,实现产品的快速升级
全面性:支持完整设计流程
OpenVINO简介:支持多个Intel架构基础平台,使用OpenCV处理计算机视觉,使用Media-SDK进行视频编解码与处理,使用DLDT进行推理
基于OpenVINO资源构建AI产品流程:模型准备(Model)、准备推理(Perpare Inference)、性能指标评测(Benchmark)、系统选择(Select System)、编解码能力(Decode Density)、完整流程(Full Pipeline)、AI应用(AI Application)
二,什么是计算机视觉?如何使用计算机来处理视频?
2.1 视频与图像
视频中的大数据:每天全球会有5亿人观看1部网络视频,80%的流量被视频占据,视频中包含了大量的数据,视频由连续的图像构成,只要这些图像的移动速度足够快,会让我们产生物体连续运动的错觉
图像的表示:每个图像由像素构成,每个像素都由一个值表示。在灰度图中,每个像素由0~255表示,255表示白色,0表示黑色。在彩色图像中,像素由三个个基本色RBG值组合而成
2.2 图像处理
模糊:把每个像素的值,替换为周围8个像素的平均值,得到更模糊的图像
锐化:反向扩大像素点与周围像素点的差异,得到更锐利的图像。继续进行锐化,图像将仅保留像素值的显著差异,只能看到图像中物体的边缘,可用于检测图像的角、边缘、线等
2.3 OpenCV简介
简述:OpenCV是一款面向计算机视觉的开源库,最常用的工具库,使用多种编程语言(C、C++、Python)编写,可在Intel硬件上加速,使用Intel芯片上特定的加速单元,加快视觉程序的运行速度,并兼容多种操作系统和平台,具有计算机视觉所需的大多数功能
基本功能:图像的旋转、缩放、调整、过滤,查找边缘等操作
高级功能:面部检测、特征识别等
2.4 总结
视频占互联网流量的80%
视频是一系列连续的图像,这些图像的移动速度足够快,让我们的眼睛看到了平滑连续的视觉效果
图像是多个像素组成的阵列,每个像素都有强度级或由RGB共同组成
可以操控像素来模糊、锐化图像或执行其他任务
可以检测图像中的特征,查找图像中的边缘、线、角,并由此查找真实图像
OpenCV是一款用于加速计算机视觉的Intel软件,是视觉领域最常用的库,并可以轻松地在Intel硬件上加速
OpenCV已包含在OpenVINO中
三. 如何加速视频处理进程
3.1 视频的数据量
1帧包括1920*1080个像素点,
每个像素由RGB组成,约占3bytes,1帧图像的大小为6.2MB
假设每秒25帧,每秒需要155MB的数据存储,1分钟的视频需要存储9.3GB的数据
使用视频压缩技术,如YouTube视频,1分钟仅需要71.9MB的数据
3.2 视频压缩技术
空间冗余:例如图像中的天空区域,所有像素都是相同的颜色,只需要存储所有像素的平均值,可应用于整个天空区域
时间冗余:图像局部区域是一样的,但在屏幕中的位置不断变化,可以仅存储第一张图像的区域像素值,后面几张图像可以重复使用
帧值处理:假设有一个新帧图像,记作I帧,在两个I帧之间存在P帧,记录两帧之间的差异,数据量通常只有I帧的1/2;在I帧和P帧之间是B帧,B帧是帧与帧之间的插值,数据只有I帧的1/4,它们之间的变化可以自动生成
3.3 编解码器与视频加速处理
使用编解码器,对视频进行压缩和解压缩,目前常用的编解码器有h.264或AVC,h.265或HEVC,通常需要3倍的资源进行解码
视频文件:是一个可以容纳其他文件的文件容器,例如mp4文件包括带显示的视频流h.264、带播放的视频mp3、元数据等
视频处理任务:存储在大型的缓冲区中,并逐帧进行处理,对两帧进行对比,查看发生的变化
硬件:Intel CPU能够处理编解码任务,使用Intel Quick Sync Video Technology,快速视频同步技术;Intel核心显卡包括两大核心模块,EU和QSVT,EU用于处理图像视频渲染,QSVT包括加速视频处理、解码、编码等等,集成GPU可以在睿频模式下运行,
软件:驱动程序在集成GPU的上层,在驱动程序之上是VAAPI-Libva,上层封装了Media-SDK,提供C++/Python语言的API接口,可使用OpenCV、FFMPEG、Gstreamer直接访问该API,OpenVINO包含了Media-SDK
3.4 总结
视频流传输是一项繁重的任务,数据量庞大
视频压缩利用图像和不同帧的冗余性,通过较少的数据表示相同数据的信息
介绍编解码器、视频容器文件等内容
通过软件在CPU上执行视频处理,但Intel集成GPU也能提供专业硬件单元用于视频处理
Media-SDK可以利用Intel快速视频同步技术进行视频处理
可以通过OpenCV、FFMPEG、Gstreamer使用Media-SDK
Media-SDK是OpenVINO的一部分
四. 如何给视觉应用中的神经网络加速
4.1 视觉图像识别的应用
特征:通过图像锐化,得到图像边缘特征,观察特定像素的排列,这些角、线、圆等组成元素称为特征
猫的检测:检测对象是否有4条腿、尾巴、颜色、大小等,将所有输入特征放入函数中,如果组合正确,就可以判断是猫
4.2 神经网络模型构建
前向操作,进行分类,图像和网络相乘,计算误差
反向操作,更改神经网络的权重,将结果错误率降到最低
反复上述操作,获取特定权重的神经网络,进行迭代训练
4.3 模型类别
在图像识别、语音识别领域,使用很多模型进行处理,比如:
分类模型:图像包含特定对象的概率
检测模型:检测图像中目标物体的边界框
分割模型:对图像中的物体进行分类,并判断是否为特定对象
4.4 DLDT简介
DLDT:深度学习部署套件(Deep Learning Deployment Toolkit)是属于OpenVINO的核心组件,包含构建AI的解决方案、可随时使用的示例、程序和模型下载器等
运行方式:
使用预训练模型(可支持TensorFlow、Caffe、Mxnet、ONNX)
使用模型优化器转换成中间表示成IR(更改权重格式、优化拓扑)
使用推理引擎读取IR文件,推理引擎的代码可重复使用,只需要进行非常小的修改,可以在Intel多种硬件上进行推理
4.5 总结
基于深度学习的神经网络是一种各种视觉相关任务的可靠方法
为了获得可以正常运行的网络模型,在训练流程中处理了大量的数据
推理是网络的正向路径,输出结果,计算误差,并执行反向路径,更新权重
深度学习模型可用于分类、检测、分割和其他任务
Intel平台可执行神经网络,并提供卓越的性能
DLDT是一款用于加速深度学习推理的Intel软件工具,是OpenVINO的组成部分