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 toolkitgithub中得到)

  • 如目标检测

注意

命令行中, -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 结构的文本序列生成模型, 它基于注意力机制, 能够更好地理解单词的上下文.

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐