Intel带你初识视觉识别--OpenVINO

前言:本文内容为英特尔计算机视觉课程,介绍OpenVINO工具,课程分为初中高级,初级课程从AI的基本概念开始,介绍人工智能与视觉应用的相关知识及应用场景。整个课程包含了视频的处理,深度学习的相关知识,人工智能应用的推理加速,以及英特尔OpenVINO工具套件的Demo演示。本课程适合了解计算机视觉应用的核心概念和开发工具套件的学员,完成学习可以获得相关证书。

✨学习地址:https://vxr.h5.xeknow.com/s/3Eg4J8


 一、初识人工智能及视觉应用

1.1 课程介绍

  • 课程目标:了解人工智能和OpenVINO的工具套件,为AI应用选择最佳的Intel平台,并使用Intel产品构建AI应用
  • 课程内容:
    1. 初级课程:从零开始讲解所有AI的应备知识、相关技术、Intel为每种应用场景推荐的平台和软件工具
    2. 中级课程:深入了解OpenVINO的工具套件,讲解演示OpenVINO,练习所有的可用的工具
    3. 高级课程:介绍使用Intel平台和工具,在系统层面构建实际可扩展的AI产品

1.2 初级课程安排

  总共分为10节课程,内容如下:

  • 介绍需要人工智能的原因和需要哪些技术
  • 介绍计算机视觉和AI
  • 讲解现在的电脑如何高效地执行AI
  • 演示通过Intel OpenVINO工具套件能够完成的多项工作
  • 概述设计AI应用的完整流程
  • 初级课程回顾

    1. 介绍了确定像素颜色的RGB表示,图像由许多像素构成,视频由许多图像构成,并讨论对图像进行模糊、锐化、边缘检测和特征提取等操作
    2. 使用Intel集成显卡加速视频编解码,利用Media-SDK调用Intel快速视频同步技术加速视频处理
    3. 介绍了人工智能算法、面向视觉应用的神经网络、实时执行神经网络的复杂性,并介绍了OpenVINO的推理引擎加速视频推理
    4. 介绍了OpenVINO套件支持视频分析、推理、计算及视觉视频处理的功能

OpenVINO工具套件

Intel带你初识视觉识别--OpenVINO_第1张图片

1 应用构建流程

  1. 找到合适的模型(Model):使用一个基于深度学习的模型来执行分类、检测、分割等任务
  2. 推理之前的准备(Prepare Inference):模型通常是在云环境中训练,采用的是浮点格式,可支持模型格式转换
  3. 性能指标评测(Benchmark):使用多项优化技术和多种数据格式对多个模型进行基准测试
  4. 选择系统(Select System):选择能够满足性能要求的平台
  5. 查看编解码密度:选择合适硬件需要考虑设备可以支持多少个摄像头,从设备硬件角度考虑编解码的能力
  6. 模拟整个流程(Full Pipeline):完整考虑解码、编码和推理等任务的整体运行,使用STREAMER模拟完整的工作负载
  7. 构建AI应用(AI Application):构建软件,或使用OpenVINO 将视频分析流程和推理整合到现有应用中

2 模型获取流程

  1. 通过某个途径购买或下载模型或自行训练
  2. 从OpenVINO Model-Zoo中下载模型:有40多种模型,可用于检测、分类、分割、重新识别、2D、3D、音频处理等,可以访问Model-Zoo存储库下载模型
  3. 使用模型下载器:可以下载许多公开模型和所有Model-Zoo模型,指定所需的模型、具体精度(包括FP32、FP16、INT8)

3 模型优化器及推理流程

Intel带你初识视觉识别--OpenVINO_第2张图片

  • 模型优化器(Model Optimizer):跨平台的命令行工具,支持训练和部署环境之间的转换,执行静态模型分析并自动调整深度学习模型
  • IR文件:模型优化器生成网络的中间表示,包括xml文件(网络拓扑)和bin文件(经过训练的数据文件,包含权重和偏差)
  • 推理引擎(Inference Engine):支持IR格式模型,使用相同的模型在多种设备上运行推理
  • 处理流程:可采用离线方式,使用模型优化器将模型转成IR文件;有了IR文件,就可以反复进行推理

OpenVINO和工具套件的基本使用流程:

  1. OpenVINO是Intel基于自身现有的硬件平台开发的一种可以加快高性能计算机视觉和深度学习视觉应用开发速度的工具套件
  2. OpenVINO主要包括DLDT(模型优化器、推理引擎、推理引擎样本、工具)、开放预训练模型(DL Streamer、OpenCV、OpenCL、OpenVX)
  3. 应用构建流程:模型准备、推理之前准备、性能指标评测、系统选择、编解码能力、模拟完整流程、构建AI应用
  4. 获取深度学习模型:自行训练、从OpenVINO Model-Zoo下载模型、模型下载器
  5. 人脸识别实验(性别和年龄检测)
  6. 图像分类(使用SeqeezeNet1.1和ResNet-50模型)

OpenVINO套件简述

  OpenVINO套件,开放视觉推理和神经网络优化的工具集,全称Open Visual inference and neural netwaork Optimization,是一整套面向AI应用的Intel解决方案,本课程内容主要对组件进行概括性介绍,演示运行相关组件;它是一款免费软件,提供大量的开源资源,包括应用示例和场景演示等。

  • OpenVINO受欢迎的原因

    1. 简单性:支持批处理异步执行功能
    2. 性能:可将推理速度提高两倍。并将内存消耗降低五倍
    3. 可移植性:可以快速将原有代码移植到新设备上,实现产品的快速升级
    4. 全面性:支持完整设计流程
  • OpenVINO简介:支持多个Intel架构基础平台,使用OpenCV处理计算机视觉,使用Media-SDK进行视频编解码与处理,使用DLDT进行推理

  • 基于OpenVINO资源构建AI产品流程:模型准备(Model)、准备推理(Perpare Inference)、性能指标评测(Benchmark)、系统选择(Select System)、编解码能力(Decode Density)、完整流程(Full Pipeline)、AI应用(AI Application)

2 什么是计算机视觉?如何使用计算机来处理视频?

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 如何加速视频处理进程

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 如何给视觉应用中的神经网络加速

4.1 视觉图像识别的应用

  • 特征:通过图像锐化,得到图像边缘特征,观察特定像素的排列,这些角、线、圆等组成元素称为特征
  • 猫的检测:检测对象是否有4条腿、尾巴、颜色、大小等,将所有输入特征放入函数中,如果组合正确,就可以判断是猫

4.2 神经网络模型构建

  • 前向操作,进行分类,图像和网络相乘,计算误差
  • 反向操作,更改神经网络的权重,将结果错误率降到最低
  • 反复上述操作,获取特定权重的神经网络,进行迭代训练

4.3 模型类别

在图像识别、语音识别领域,使用很多模型进行处理,比如:

  • 分类模型:图像包含特定对象的概率
  • 检测模型:检测图像中目标物体的边界框
  • 分割模型:对图像中的物体进行分类,并判断是否为特定对象

4.4 DLDT简介

  • DLDT:深度学习部署套件(Deep Learning Deployment Toolkit)是属于OpenVINO的核心组件,包含构建AI的解决方案、可随时使用的示例、程序和模型下载器等
  • 运行方式:
    1. 使用预训练模型(可支持TensorFlow、Caffe、Mxnet、ONNX)
    2. 使用模型优化器转换成中间表示成IR(更改权重格式、优化拓扑)
    3. 使用推理引擎读取IR文件,推理引擎的代码可重复使用,只需要进行非常小的修改,可以在Intel多种硬件上进行推理

4.5 总结

  • 基于深度学习的神经网络是一种各种视觉相关任务的可靠方法
  • 为了获得可以正常运行的网络模型,在训练流程中处理了大量的数据
  • 推理是网络的正向路径,输出结果,计算误差,并执行反向路径,更新权重
  • 深度学习模型可用于分类、检测、分割和其他任务
  • Intel平台可执行神经网络,并提供卓越的性能
  • DLDT是一款用于加速深度学习推理的Intel软件工具,是OpenVINO的组成部分

5 视频分析处理的完整流程

5.1 视频分析流程

  1. 解码:解码多个视频流,每个视频流具有不同的分辨率和格式
  2. 预处理:通过锐化、亮度调整、可缩小图像、裁剪图像中感兴趣的区域,选择跳过帧或尝试推理所有帧等操作
  3. 推理:使用深度学习模型进行推理,如进行对象检测、分类对象
  4. 发送处理:可在被检测对象周围绘制边界框
  5. 编码:压缩视频,用于发送或存储视频

5.2 各种组件在流程中的应用

  • Media-SDK,用于处理编解码和预处理
  • DLDT,基于深度学习的推理加速
  • OpenCV,基本上能完成整个流程

5.3 OpenVINO的架构

Intel带你初识视觉识别--OpenVINO_第3张图片

  • 支持多个Intel架构基础平台
  • 使用OpenCV处理计算机视觉
  • 使用Media-SDK进行视频编解码与处理
  • 使用DLDT进行推理

5.4 总结

  • 视频分析:视频处理、计算机视觉和AI推理
  • 视频分析流程是多种视觉应用最常用的工具负载
  • 视频分析流程包括多项操作,但是消耗资源最大的操作在每一帧上都需要执行
  • OpenVINO具有构建视频分析流程和AI应用的所需要的软件工具
  • OpenVINO支持多个Intel平台和多种操作系统,免费开放使用,拥有所有必要的工具

6 OpenVINO的示例演示

  • 交互式人脸检测:netron查看模型,通过一个摄像头获取人脸,使用脸部检测模型,年龄和性别检测模型、头部检测模型、表情检测模型、特征检测模型等
  • 多通道人脸检测:通过视频流进行人脸检测
  • 重新识别和跟踪:人员检测模型,绘制每个人的跟踪路线
  • 道路分割:将每辆汽车进行分割,并显示标签

7 如何使用英特尔OpenVINO工具实现从数据采集到AI产品诞生(上)

7.1 构建AI应用流程

Intel带你初识视觉识别--OpenVINO_第4张图片

  • 描述开发人员从选择正确模型到构成系统的整个阶段
  • 系统选择(Select System):选择合适的系统后,产品可以轻松的扩展,并能够在任何银行或超市环境中安装使用,可在一个系统中部署不同的设备,比如CPU、GPU、FPGA和AI加速器)
    1. CPU:OpenVINO代码是可以移植的,针对CPU编程,之后可以轻松将程序移植到其他设备,支持ATOM、CORE、XEON等系列
    2. GPU:渲染3D图形、加速推理和视频处理(编解码),支持IRIS、Discreate Graphics等系列
    3. FPGA:支持Arria10 HDDL-F
    4. AI加速器:支持MOVIDIUS、NERVANA等智能硬件,提升8~10倍加速
  • 寻找模型(Model):基于深度学习的模型执行分割、检测、分类任务等
  • 准备推理(Perpare Inference):模型通常在云环境训练,可能在较小的设备上运行,模型通常采用浮点格式,可能需要转换数据格式
  • 性能指标评测(Benchmark):用于了解模型性能,比如每秒可以执行的推理次数,可以使用多种优化技术和多种数据格式,最终选择满足性能要求的平台
  • 解码能力(Decode Density):应支持尽可能多的摄像头或者视频流,从而降低每个摄像头的成本
  • 完整流程(Full Pipeline):了解从推理、性能指标评测、编解码能力的多个流程
  • AI应用(AI Application):将分析处理流程和推理整合到现有的应用中

7.2 总结

  • OpenVINO提供了构建AI应用的所有工具:获取一个深度学习模型,对视频分析流程中的所有指标进行性能评测,最后构建一个AI应用
  • Intel有多种平台可供选择,包括CPU、集成GPU、基于Movidius的VPU和FPGA
  • OpenVINO支持异构系统

如何使用英特尔OpenVINO工具实现从数据采集到AI产品诞生(下)

8.1 获取模型(Model)

  • 模型下载器(Model Downloader)
  • 训练(Train)模型:收集数据(Collect)、清洗数据(Prepare)、图像标注(Annotate,可以使用计算机视觉标注工具)、训练(Training)
  • Model Zoo:预训练模型(Pre-Trained models),训练扩展(Training extensions)支持基于自定义数据或提供的检查点进行模型训练

8.2 准备推理(Perpare Inference)

  • 模型优化器(Model Optimizer):将多种类型的模型(Model)转换为IR格式的模型,将其映射到正确的库函数或内核(Map),可以使用水平或垂直融合、归一化、规范化各种技术优化模型(Optimize),支持添加或删除一个或多个神经网络层(Customize),最终得到一个优化过的精简模型

8.3 性能指标评测(Benchmark)

  • 提供指标评测器(Benchmark App),可显示延迟、吞吐量等信息
  • Dev Cloud:类似于大型的沙盒,支持所有Intel芯片,提供所有的软件,远程连接设备,对工作负载进行性能测试
  • 性能计算器(Performance Counters):OpenVINO已内置,可以运行网络,查找每一层的统计数据
  • WorkBench:提供直观的图形界面,支持性能测试的展示

8.4 解码能力(Decode Density)

  • 提供监控集成显卡利用率的工具
  • 提供快速入门示例

8.5 完整流程(Full Pipeline)

  • OpenVINO GStreamer Video Analystics(GVA)插件:包括OpenVINO Inference Elements和GStreamer Elements,用于构建视频处理流程的平台,提供分类、检测、识别、跟踪和可视化等流程

8.6 AI应用(AI Application)

  • 提供40个C++/Python演示示例
  • 提供高级操作,例如多路视频分析、跟踪对象
  • 提供简短代码片段,可以直接放入应用中

3.8 总结

  • OpenVINO是一款用于构建视频分析流程的综合分析套件
  • 可以在整个流程中使用相应的工具、程序和资源:获得深度学习模型、针对推理准备模型、执行性能指标评测、查看编解码能力、模拟完整的软件产品流程、构建AI应用

9 课程回顾

  • 第1节课:介绍了AI将改变我们生活的方方面面,视觉应用将带来机遇和商业潜力
  • 第2节课:视频是互联网最常见的传输数据类型,讨论了像素,并了解大量的像素构建了图片,大量的图片构成了视频;可通过过滤图像、模糊、锐化、边缘检测的特征提取等操作,介绍了使用OpenCV能加速视觉计算处理
  • 第3节课:介绍了视频压缩、冗余及视频压缩的工作原理,使用Intel集成显卡加速压缩,通过Media-SDK使用Intel快速视频同步技术加速视频处理
  • 第4节课:介绍了人工智能算法、面向视觉应用的神经网络,并讨论了实时执行神经网络的复杂性,主要介绍了使用模拟化优化器和推理引擎加速视频推理
  • 第5节课:介绍了视频分析流程,构建AI应用的所需步骤和落地要求,并介绍了OpenVINO的整体架构
  • 第6节课:提供了DEMO演示,主要展示了交互式人脸检测、多路人脸检测、重新识别和跟踪、道路分割等示例
  • 第7节课:介绍了Intel提供的异构平台,并介绍了各种硬件产品,包括CPU、GPU、FPGA和AI加速器等,学习OpenVINO构建完整AI应用流程
  • 第8节课:详细讲解了整个流程,并介绍了可供开发人员使用的工具、程序和资源。

本文参考:我的组队学习

你可能感兴趣的:(深度学习,人工智能,计算机视觉,机器学习,openvino)