计算机视觉-图像推理| 因特尔`OpenVINO`学习笔记
Demo基于python的轻盈脚本demo (可在的github中得到)我在虚拟机中创建了一个`Ubuntu`打算用Linux系统来完成计算机视觉的任务, 顺便复习一下两个星期前学的脚本使用. 虚拟机名称是`openvino22.04`, 密码是`xc`.如目标检测注意命令行中, -i 后面标记的是视频流的输出源位置, -i cam表示摄像头输入;-d 后面配置推理的参数读入的模型文件是.xml格
文章目录
Tag: 视频处理, 计算机视觉, 人工智能
OpenVINO
: Open Visual inference & Nerural network Optimization
官方工具套件包括:
免费开源版本软件下载,使用/ 学习资料,演示示例,具体实例. 但不包括云计算服务.
教学视频网址
推荐使用linux
操作系统.
一. 初级
计算机视觉需求
人类是视觉动物, 目前网络流量的80%来源于视频, 本系列主要针对计算机视觉.
技术对象: 目前图像处理的基本单元是 像素
, 其由灰度值/RGB
混合而成.
1.1 大致原理与流程
因为视频就是连续的一张张图片, 并以足够快的速度切换这些图片 (x帧=x张/秒), 所以其占用的数据量非常大.
对于
1080p
25帧的视频:
- 1 pixel = 3 bytes(R,G,B)
- 1 frame = 1920*1080 pixels * 3 bytes =
6.2MB
- 1 second =
6.2MB
* 25 =155MB
- 1 minute =
9.3G
所以我们需要对庞大的数据进行处理(压缩).
数据解压缩:
我们可以利用视频中的**冗余 **(空间冗余和时间冗余) 来压缩视频数据.
[例] 时间压缩算法, 将原本相似的视频划分成不同种类的帧:
I帧为起始帧(储存全部像素值信息), P为中间帧, 为四分之等分处的帧
I帧- 1/4压缩且自动生成(插值)的B帧 - 1/2数据压缩的P帧 - B帧 - I帧
设定解压缩规则的是编码解码器
而视频文件(如mp4
)是则类似于一个容器包含了视频流,音频流以及相关信息流。
集成好的硬件视频编解码器
(显卡) 可以加速数据编解码过程.
我们可以通过软件 (如IntelOneVPL
) 在cpu
上执行视频处理.
基本图像处理方法
模糊: 图像的平滑处理: 每个像素值=周围8个像素的平均值.
锐化: 反向扩大每个像素点与它周围8个像素点的差异.
高强度的锐化, 将会得到表现强烈的物体边缘. 接着便可进行角, 圆角, 边线的检查.
查找目标/特征检测方法
我们可以去获取目标的一些特征如: 角, 边缘, 线, 圆形…
举例:
-
小猫检测器: 特征检测器: 两个耳朵, 四条腿, 外加尾巴, 颜色, 大小…
将所有输入特征放到一个函数中, 如果组合是正确的, 那么我们就找到了小猫.
[例] 特征检测算法: 将上述特征作为参数组成一个简单的函数, 如线性关系, 然后使用 sum(特征*权重)
更复杂的函数关系->引入神经网络
-
神经网络
模拟大脑, 将大量神经元按照特定规则组成神经网络. 神经元被分为很多层, 因此被称为深度学习.
数据流在其上主要有两个加工方向:
正向推理: 新图像->计算->得到分类结果. 的过程称为推理.(openvino
の重点)
反向修正: 将大量图像与神经网络函数相乘, 得到结果, 不断反向修正权重
以减小误差, 称为训练.
视频分析流程内部逻辑
解码decode — 预处理pre-processing — 推理interface — 后处理post-processing — 编码encode
即:
a. 解压缩视频 OneVPL
/OpenCL
b. 预处理(锐化, 亮度调整, 缩小图像,抽帧) OneVPL
c. 使用深度学习模型来运行推理(分类, 检测, “跟踪”) OpenvinoRuntime
d. 后处理, 加工原始图像
e. 压缩视频, 以便发送或存储 OneVPL
/OpenCL
opencv
:一款面向计算机视觉功能的开源库 (目前最常用的), 使用c++,
py
等编写. 可调用Intel芯片上的特定加速单元来加快视觉程序的运行速度. 兼容多种操作系统.具有读取/写入图像 + 基本图像处理功能 (旋转, 缩放, 调整, 过滤, 查找边缘…) + 高级处理功能(面部检测…)
*Opencv
基本可以处理上述所有, 但推理部分有时要靠Runtime, 他俩协同使用可以很快速地在完成图像处理后,直接进行AI推理.
1.2 具体开发概述
Demo
基于python的轻盈脚本demo (可在openvino toolkit
的github
中得到)
- 如目标检测
注意
命令行中, -i 后面标记的是视频流的输出源位置, -i cam表示摄像头输入; -d 后面配置推理的参数
读入的模型文件是.xml格式的, openvino支持多通道, 多路视频同时输出, 同时解码和推理.
推理设备可以采用cpu, gpu, npu, fpga
最终运行速度与模型本身, 计算机性能有关.
实际详细开发
选择系统(最重要): 兼容各种环境, 轻易部署安装, 远程维护/更新/控制
-
异构计算系统: 联合cpu/gpu/fpag/ai计算
gpu: 进行3d渲染
npu: 进行AI加速
cpu: 执行其余所有任务
寻找模型一个深度学习模型来执行分析任务
a. Collect: 从openvino的github仓库中获取预训练模型
b. Training: 从零开始收集数据, 训练模型, 这需要大量的计算资源, 一般在gpu集群中进行训练.
整个模型通常需要提前训练(在云环境中训练)好, 然后对模型进行推理
接着进行性能指标评测(每秒进行多少次推理)
使用多种优化技术和数据格式对推理进行优化
使用软件把现有的分析处理流程和推理整合到现有应用中.
*AI应用系统通过支持尽可能多的摄像头,尽可能多的视频流,来降低系统的整体成本
1-1 番外: 图像生成模型原理
根据用户给的prompt提示词, 生成相应的图像内容.
如, 基于Stable Diffusion的图像生成: 把一张噪声图片缓慢变成目标图片.
训练: 在原数据上缓慢添加、扩散随机噪声; 推理: 去除噪声并重构样本数据.
1-2 番外: 文本生成模型原理
如, 基于Transformer 结构的文本序列生成模型, 它基于注意力机制, 能够更好地理解单词的上下文.
更多推荐
所有评论(0)