浅谈边缘视频分析

概览概览
视频分析是指通过视频处理、推论和分析操作将视频流转化为洞察力,用于医疗保健、零售、娱乐和工业等商业领域,视频分析所使用的算法对输入视频流进行物体探测、分类、识别、计数和跟踪。
使用这一案例的特点是可互操作的集装箱化微服务,用于开发和部署使用建造的优化视频分析管道intel® dl streamer包件提供的预制集装箱图像使开发商能够用自己的深层学习模型和管道取代集装箱中使用的深层学习模型和管道。工业边缘观察(eii)用于在边缘设备上进行视频分析的软件堆叠 。
开发者可以通过使用预先制造的docker* 图像和简单地以众所周知的json格式配置视频分析管道来节省开发和部署时间。
选定配置 下载下载微观服务和下列软件。
配置 下载完成时间 :45分钟 45分钟
语言:python* 3
可用软件 :
边缘视频分析
deep learning streamer (intel® dl streamer) pipeline server
目标系统要求
下列处理器之一:
6th to 11th generation intel® core™ processors
1st to 3rd generation of intel® xeon® scalable processors
intel atom® processor with intel® streaming simd extensions 4.2 (intel® sse4.2)
至少8gb内存。
至少64gb硬盘。
互联网连接。
ubuntu* 20.04 lts kernel 5.4†
引用到openvino™ toolkit system requirements支持的 gpu 和 vpu 处理器。
† use kernel 5.8 for 11th generation intel® core™ processors.
如何运作
边缘视频分析
这是用于部署最佳视频分析分析管道的python* 微型服务,作为docker图像在包件中提供。intel® dl streamer用于推断的管道服务器。 docker 图像使用intel® dl streamer pipeline server as a library. the microservice can be started in one of two modes – edge insights industrial (eii) to deploy with eii software stack or edge video analytics (eva) to deploy independent of the eii stack.
edge video analytics (eva) mode: provides the same restful apis as intel® dl streamer pipeline server to discover, start, stop, customize,和monitor pipeline execution和supports mqtt和kafka message brokers for publishing the inference results. for the rest api definition, refer to the restfforforfor microsservices 微服务接口.
工业(eii)模式的边缘透视:支持管道执行的 eii 配置管理器,以及发布推论结果的 ei 信息管道,使其与工业的边缘透视软件堆叠。
图1:建筑图图
注意: 可以选择, 人们也可以从 docker 枢纽下载 docker 图像, 来运行独立版本的微服务。 这是断层视频分析微服务, 没有安装信息总线出版商和 gst- udfloader 元素等工业部件的边缘透视, 因此容器大小较小 。
图2 建筑图图 - 独立版本
微服务资源
在边缘视频分析微观服务中使用的以下配置文件、脚本和工具已列入边缘视频分析资源拉链文件:
docker- competable. yml 转换器用于边缘视频分析微服务 和 mqtt 经纪人的文件配置、创建和启动容器 。
管道和模型列表文件夹中包含“边缘视频分析微观服务嵌入器”图像中所包含的管道和示范定义文件。这些文件可以通过体积递增来修改和使用“边缘视频分析微观服务嵌入器”图像。
工具/模型下下加载器工具工具从openvinotoolkit/open_model_zoo.
约克基多文件夹中包含一个配置 mqtt 代理器的文件, 以查看推断结果 。
gst-udf-loader元素
gst-udf-loader gstreamer 插件支持 python 和 本地(c) udfs 的装载和执行。 udf 是用户定义的功能,使用户能够在 evam 定义的管道中添加任何预处理或后处理逻辑。
集装箱发动机和管弦
该软件包使用docker和docker compose进行自动集装箱管理。
docker集装箱框架是企业环境中广泛使用的集装箱框架,允许将各种应用及其依赖性包装在一起,作为自足单位运行。
docker compose是一个用于定义和运行多集装箱套件应用程序的工具。
开始
第1步:安装微观服务
选定配置 下载下载微服务,然后按以下步骤安装。
配置 下载
打开一个新的终端, 转到下载的文件夹并解zip 下载的软件包 :
unzip video_analytics.zip  
转到视频分析/目录 :
cd video_analytics  
更改可执行的边缘软件文件的权限 :
chmod 755 edgesoftware  
在下面运行安装微服务的命令 :
sudo ./edgesoftware install  
安装期间,您将被提示产品键。产品键包含在intel发来的邮件中,该邮件确认您的下载。
图3:产品键
when the installation is complete, you see the message “installation of package complete”和the installation status for each module.
图4 图4:安装完成
要校验安装, 请列出使用以下命令下载的 docker 图像 :
sudo docker images  
如果安装成功, 您将会看到类似 :
图5:安装成功​
注:
路径中将可用安装失败日志 :/var/log/esb-cli/video_analytics_何 地是下载的边缘视频分析微服务版本。
docker 枢纽可直接下载边缘视频分析微服务嵌入图像, 使用以下命令 :
docker pull intel/边缘 _ 视频_分析_微观服务:
安装独立版本
docker 枢纽可使用以下命令直接从 docker 枢纽下载独立版本的 边缘视频分析微服务 的 docker 图像 :
docker pull intel/边缘 _ 视频_分析_微观服务:-standalone  
步骤2:运行边缘视频分析
在此步骤中,您将运行边缘视频分析微服务,包括样品物体探测、物体分类、物体跟踪、面部检测、情感识别、动作识别和环境音频探测管道,这些已经包含在多克图像中。
添加文件权限 :
跳转到工作目录edge_video_analytics_resources带有命令 :
cd 视频分析/video_analytics_/edge_video_analytics_resources/  
添加文件权限以使用命令运行脚本 :
sudo chmod +x docker/run.shsudo chmod +x 工具/模型下下加载器/model_downloader.sh  
​下载模型 :
通过运行命令从工作目录中 open model zoo 下载所需的模型 :
sudo ./工具/模型下下加载器/model_downloader.sh --model-list models_list/models.list.yml  
模型列表可以通过打开models_list/models.list.yml 文件。
通过浏览模式目录, 检查下载是否成功 :
图6:模型目录
注:示范清单可以修改或更新。
运行微服务:
以命令启动应用程序 :sudo docker 合成
检查终端中的成功信息 。
图7 图7:成功信息
打开一个新的终端,检查集装箱是否使用以下命令运行:
sudo docker ps -–format 'table{{.image}}t{{.status}}t{{.names}}'  
命令输出应该显示两个 docker 容器边缘 _ 视频_分析_微观服务和日食- 日食- 日食具有咨商地位或具有up.
图8:集装箱运行中的集装箱
利用rest请求,获取集装箱内现有模型和管道清单:
打开一个新的终端 。
运行以下命令以获取微服务中可用的模型列表 :
curl --location -x get 'http://localhost:8080/models'  
运行以下命令以获取微服务中可用的管道列表。 管道以名称/ version tuple 显示。 名称反映动作, 版本提供此动作的更多细节 。
curl --location -x get 'http://localhost:8080/pipelines'
注:如果这些步骤由于代理问题而失败,则提及排除故障段 次 页 次
发送rest请求以运行物体探测管道:
通过替换创建 rest 请求在下面的曲线命令中,您系统的 ip 地址为 ip 。 (如果您在 prc 区域,请参考下面的第二个选项。 )
引用到自定义视频分析管道请求以理解 stp-rest 申请格式。
curl --location -x post 'http://localhost:8080/pipelines/object_detection/person_vehicle_bike' --header 'content-type: application/json' --data-raw '{ source: { uri: https://github.com/intel-iot-devkit/sample-videos/raw/master/person-bicycle-car-detection.mp4?raw=true, type: uri }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving }, frame: { type: rtsp, path: vasserving } }}'  
对于 prc 用户,请使用下面显示的链接替换在下面的卷轴命令中,使用您的系统的 ip 地址。
引用到自定义视频分析管道请求以理解 stp-rest 申请格式。
curl --location -x post 'http://localhost:8080/pipelines/object_detection/person_vehicle_bike' --header 'content-type: application/json' --data-raw '{ source: { uri: file:///home/pipeline-server/resources/classroom.mp4, type: uri }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving }, frame: { type: rtsp, path: vasserving } }}'
注:对于低于0.7.2的evam版本,在工作目录不同时,对uri使用以下文字:档案: /app/resources/lechroom.mp4
打开一个新的终端并运行修改的卷轴命令。 rest 请求将返回管道实例 id, 可用于查询管道状态 。
例如,就第一期而言,根据请求,管道(例如,a6d67224eacc11ec9f360242c0a8603)将归还,随后又以递增号返回请求。
检查结果:​
显示微服务日志的初始终端窗口现在显示新发送请求的日志, 包括管道实例、 状态和 rtsp 流链接。 管道状态将显示队列、 运行和完成 。
图9:核对结果
使用管道实例id发送 get 请求,检查输油管状况:
curl --location -x get 'http://localhost:8080/pipelines/object_detection/person_vehicle_bike//status'  
何 地是管道实例。
从get请求中收到的答复与以下各点相似:
{ avg_fps: 27.014388149183596, elapsed_time: 2.2934277057647705, id: a6d67224eacc11ec9f360242c0a86003, start_time: 1641468940.5196402, state: running}  
注:如果输油管线已经终止,那么国家将显示为completed.
打开 vlc 播放器中的输出 rtsp 流, 以查看替换后输入视频上的推推结果在您的系统 ip 地址的下列 url 中:rtsp:// :8554/vasserving
请注意, 管道应该在 running 状态下查看输出视频。 如果管道已经结束, 请使用卷曲命令重新开始, 然后查看视频 。
图10: 推断结果
发送 rest 请求的替代方法 :
rest请求也可以通过邮递员应用程序发送,使用与前几个步骤相同的卷曲命令。
要安装 postman 应用程序,请执行以下步骤:
转到邮差下载.
在想要的位置提取安装文件 。
提取后,双击应用程序,并用您现有的账户签名,或创建新账户签名。
正在运行独立版本
独立版本的边缘视频分析分析微服务与 eva 模式相似,不同之处在于它没有任何 eii 组件,因此只能以 eva 模式运行。结构结构图图,它是全容器图像的脱光版。需要以下步骤才能运行独立的微服务版本。
如果尚未完成, 请使用命令下载双向视频分析微服务独立版本的 docker 图像 :
$ docker pull intel/边缘 _ 视频_分析_微观服务:1.0.0-standalone  
为提升微服务,请使用以下命令:
$ docker run -itd --rm -p 8080:8080 -p 8554:8554 -e enable_rtsp=true -e rtsp_port=8554 -e enable_webrtc=true -e webrtc_signaling_server=ws://localhost:8443 -e run_mode=eva intel/边缘 _ 视频_分析_微观服务:1.0.0-standalone  
向输油管服务器发送 rest 请求以运行 对象_ 分类/ 车辆/ 属性管道。 以下 curl 命令为我们这样做 。 回复将包含管道例 id (例如: a6d67224eacc11ec11ec9f360242c0a8603) , 用于使用输油管- 服务器状态 api 查询管道状态 。
$ curl localhost:8080/pipelines/object_classification/vehicle_attributes -x post -h 'content-type: application/json' -d '{ source: {uri: https://github.com/intel-iot-devkit/sample-videos/blob/master/car-detection.mp4?raw=true,type: uri }, destination: {metadata: { type: file, path: /tmp/results.jsonl /tmp/results.jsonl /tmp/results.jsonl /tmp/results.jsonl, format: json-lines},frame: { type: rtsp, path: pipeline-server} }, parameters: {detection-device: cpu } }'  
微观服务处公布元元数据的推推到一个本地文件,可在以下网址查阅:/tmp/results.jsonl /tmp/results.jsonl /tmp/results.jsonl /tmp/results.jsonl处理后的框架还作为rtsp流提供,可在下列地点查阅:trtsp://localhost:8554/管道-服务器,并且可以使用 rtsp 查看器查看。
添加模型和定制管道
可使用可用的下载脚本下载更多模型here.
您可以查询pipeline server docs创建自定义管道,并使用边缘视频分析微服务。
假设其他模型和管道分别以${pwd}/模型和${pwd}/管道提供,则设定了以下环境变量。
$ export model_dir=$(pwd)/models$ export pipeline_dir=$(pwd)/pipelines  
为提升微服务,请使用以下命令:
$ docker run -itd --rm --privileged --device=/dev:/dev --device-cgroup-rule='c 189:* rmw' --device-cgroup-rule='c 209:* rmw' --group-add 109 -p 8080:8080 -p 8554:8554 -e enable_rtsp=true -e rtsp_port=8554 -e enable_webrtc=true -e webrtc_signaling_server=ws://localhost:8443 -e run_mode=eva -e detection_device=cpu -e classification_device=cpu -v ${model_dir}:/home/pipeline-server/models -v ${pipeline_dir}:/home/pipeline-server/pipelines intel/边缘 _ 视频_分析_微观服务:${tag}  
正在运行 igpu 上的推断
要启用对 igpu 推论的支持, 您将需要将额外的旗帜传递到 docker 运行命令上, 详情如下 。
$ docker run -itd --rm --privileged --device=/dev:/dev --device-cgroup-rule='c 189:* rmw' --device-cgroup-rule='c 209:* rmw' --group-add 109 -p 8080:8080 -p 8554:8554 -e enable_rtsp=true -e rtsp_port=8554 -e enable_webrtc=true -e webrtc_signaling_server=ws://localhost:8443 -e run_mode=eva intel/边缘 _ 视频_分析_微观服务:${tag}  
可选: 带视频分析测试模块进行测试
安装完成后,您可通过运行视频分析测试模块测试您的设置。
详情,请参见intel® edge software device qualification (intel® esdq) for video analytics.
教脚
教程1: 在 gpu 上运行物件探测管道
此教程将演示如何更改运行 gpu 上的推论的推论设备 。
您将再次运行相同的对象_ 检测管道, 但这次您将使用集成的 gpu 进行检测推理, 设置检测- 检测设备参数 。
完成所有步骤get started上文一节。
在目标设备上,检查以下命令的输出并获得设备组:
stat -c '%g' /dev/dri/render*  
在 docker-competect.yml 文件中添加设备组 :
group_add: - 109  
通过替换创建 rest 请求the 在下面的卷轴命令中,使用您的系统的 ip 地址。
请注意rest机体的参数部分。
curl --location -x post 'http://localhost:8080/pipelines/object_detection/person_vehicle_bike' --header 'content-type: application/json' --data-raw '{ source: { uri: https://github.com/intel-iot-devkit/sample-videos/raw/master/person-bicycle-car-detection.mp4?raw=true, type: uri }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving }, frame: { type: rtsp, path: vasserving } }, parameters: { detection-device: gpu }}'  
注:
gpu 电导内插在首次装入时动态构建 opencl 内核,导致产生推论结果前的延迟 ~ 30 秒。
additional configuration might be needed to run inference on gpu depending on the hw. refer configurations for intel® processor graphics (gpu) to download和install install_neo_ocl_driver.sh (system reboot might be needed).
打开一个新的终端并运行卷轴命令。 rest 请求将返回管道实例 id (例如, a6d67224eacc11ec9f360242c0a8603) , 可用于查询管道状态 。
校对结果运行边缘视频分析以上步骤。
教学图2:使用 usb 相机输入的 run 边缘视频分析分析微观服务
在此教程中, 您将把物体探测管道的输入源更改为 usb 相机 。
完成所有步骤get started上文一节。
在ubuntu上,通过执行以下命令,列出所有可用的视频设备:是/dev/vide*
创建 curl 请求, 以便使用视频设备作为源。 例如, 如果命令的输出为 / dev/ video0, 那么对 curl 命令源进行如下修改 :
curl --location -x post 'http://localhost:8080/pipelines/object_detection/person_vehicle_bike' --header 'content-type: application/json' --data-raw '{ source: { device: /dev/video0, type: webcam }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving }, frame: { type: rtsp, path: vasserving } }}'  
打开一个新的终端并运行卷轴命令。 rest 请求将返回管道实例 id (例如, a6d67224eacc11ec9f360242c0a8603) , 可用于查询管道状态 。
校对结果运行边缘视频分析以上步骤。
注意: 请确定设备源参数中使用了正确的设备节点 。
教程 3: 在边缘视频分析微服务中以新模式运行新管道
在此教程中, 您将创建一个基于 人- 检测管道的新管道, 它将使用 人- 检测- retail- 0013 模型。 管道和模式文件夹将被安装到边缘视频分析微服务上, 无需重建 docker 图像。 您可以遵循同样的步骤创建任何新的管道 。
完成所有步骤get started上文一节。
下载新模型。
要从开放型动物园下载新模型,请在模型中添加模型细节。 list. yml 显示于 edge_video_analytics_resources/models_list 路径中。
对于人-检测-零售-0013,在文件模型.list.yml的结尾处添加以下条目。
- model: person-detection-retail-0013 alias: object_detection version: person_detection precision: [fp16,fp32]  
然后,在一个新的终端中运行以下命令,下载模型。
cd 视频分析/video_analytics_/edge_video_analytics_resources/# 何 地 is the package version downloadedsudo ./工具/模型下下加载器/model_downloader.sh --model-list models_list/models.list.yml  
命令执行完成后,下载的模型人-探测仪应在模型/物体-探测目录下提供。
如果您没有使用来自开放型动物园的模型,请在模型目录中直接复制您的模型。
图11:下载新模型
创建新管道
您将在管道/ 目标/ 探测中创建一个新的管道。 既然您正在以现有人_ 车辆_ 自行车管道为基础, 请复制人_ 车辆_ 自行车文件夹, 将其重命名为人_ 探测, 然后更新管道.json , 以便使用新模式 。
在同一终端中( 从路径 edge_ video_analytics_resources) 执行命令 :
sudo cp -r pipelines/object_detection/person_vehicle_bike/ pipelines/object_detection/person_detection  
在新复制的管道/物体/探测/人/探测/管道.json中,编辑管道.json文件的模板和说明部分。 json使用以下线条,将示范路径指定为模型/物体/探测/人/探测,以便使用模型人-探测-零售-0013来探测物体。
将模板定义为 :
template: [uridecodebin name=source, ! gvadetect model={models[object_detection][person_detection][network]} name=detection, ! gvametaconvert name=metaconvert ! gvametapublish name=destination, ! appsink name=appsink ],  
说明的定义是:
description: person detection based on person-detection-retail-0013,  
请参见界定媒体分析管道了解输油管模板和界定自己的输油管。
使用添加了模型和管道的微型运行服务
以命令启动应用程序 :
sudo docker 合成  
此步骤会大量挂载模型和管道目录。 您可以在一个单独的终端中检查容器是否正在使用 sudo docker ps 命令运行 。
检查新的管道和模式
打开一个新终端并运行以下命令以获取可用的模型列表 :
curl --location -x get 'http://localhost:8080/models'  
运行以下命令以获取管道列表 。 管道以名称/ version tuple 显示。 名称反映动作, 版本提供动作的更多细节 。
curl --location -x get 'http://localhost:8080/pipelines'  
您应该看到列表中新添加的管道和模型 。
对象_ 检测/ 人_ 检测运行管道
打开一个新的终端并输入下面的曲线命令,用于下文给出的物件_ 检测/ 人_ 检测管道:
curl --location -x post 'http://localhost:8080/pipelines/object_detection/person_detection' --header 'content-type: application/json' --data-raw '{ source: { uri: https://github.com/intel-iot-devkit/sample-videos/raw/master/store-aisle-detection.mp4?raw=true, type: uri }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving }, frame: { type: rtsp, path: vasserving } }}'  
何 地 is the ip address of the system.
the above curl command returns the pipeline instance. use this pipeline instance to get the status by updating the in the below command:
curl --location --request get 'http://localhost:8080/pipelines/object_detection/person_detection//status'  
图12: 人员探测运行管道
微服务日志将显示,天体探测/人探测管道实例已经建立,管道状态已经改为running,并结束了。
图13:管道日志
教程 4: 安装边缘视频分析外壳图
注:此教程从第2022.1号释放起支持。
注:此教义假设您有一个宽网可用分组 。
在此教程中, 您将使用制导图在 宽网 群集中部署边缘视频分析微服务。 使用 drawnchart 组合图 。 用于样本部署的 guard 图表包 边缘视频分析微服务和 mqtt 经纪人。 要下载制导图, 请使用定制的下载选项 。
完成所有步骤get started guide. when the installation is complete, you see the message “installation of package complete”和the installation status for each module.
图14:成功安装
将模型、管道和资源文件夹复制到 /可选/英特尔/评价/库伯涅茨工人节点。
上述先决条件完成后,安装如下图表:helm install evam ./chart/
figure 15: chart installation
get the ip ip 地址 :
kubectl get pods -o wide  
figure 16: retrieving ip address
更新管道请求指令以触发管道。 替换evam_pod_ip, mqtt_pod_ip上面有 ip 地址 。
curl --location -x post 'http://:8080/pipelines/object_detection/person_vehicle_bike' --header 'content-type: application/json' --data-raw '{ source: { uri: file:///home/pipeline-server/resources/person-bicycle-car-detection.mp4, type: uri }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving } }}'  
注:使用 github url 支持代理服务器网络时, 视频文件使用 github url 可能无法工作 。 相反, 下载视频文件并添加到资源目录/可选/英特尔/评价立方公尺内立体体体积的路径。
获取 mqtt 订阅者的推断输出 :
docker run -it --entrypoint 约克基多_sub 日食- 日食- 日食:latest --topic vaserving -p 1883 -h  
figure 17: inference output
概述和下一步步骤
使用“边缘视频分析微服务” 学习如何进行视频分析。
学习更多
继续学习,见下列指南和软件资源:
github
docker image
helm charts (概览概览)
microservice endpoints
自定义视频分析管道请求
界定媒体分析管道
intel® edge software device qualification (intel® esdq) for video analytics
排除故障
确保您在完全安装期间有一个活跃的互联网连接。 如果您随时失去互联网连接, 安装可能会失败 。
如果安装在从 intel 注册处下载和提取图像时失败安装, 然后重新运行安装命令sudo ./edgesoftware install通过提供产品钥匙。
确保您正在使用一个新的 ubuntu* 安装。 早期软件, 特别是 docker 和 docker compose 可能会引起问题 。
在代理环境中,如果设定了单一用户代理(即. bashrc 键) 然后部分组件安装可能失败或安装挂挂挂。 请确定您已经设置了代理服务器/贝茨/环境.
如果您的系统在代理服务器网络中, 请在环境环境栏内docker- competable. yml 转换器文件。
http_proxy=http:///https_proxy=http:////no_proxy=localhost,127.0.0.1
输入代理代理服务器的详细信息docker- competable. yml 转换器显示如下:
如果缺少代理细节, 则无法获取运行管道所需的源视频文件, 并在容器内安装所需的包件 。
运行命令sudo - e docker 合成(参考步骤8(安装边缘视频分析微观服务)
在自定义模式下, 如果目标设备在代理服务器后面, helm cli 安装可能会失败。 要修正它, 请更新 apag 代理服务器的细节 。
sudo snap set system proxy.http=http:////sudo snap set system proxy.https=http:////  
如果集装箱显示有冲突错误,则停止/删除集装箱。
要删除边缘 _ 视频_分析_微观服务和mqtt_ 经纪人,使用以下任何一种备选办法:
执行下列命令:
sudo docker stop 边缘 _ 视频_分析_微观服务 mqtt_ 经纪人sudo docker rm 边缘 _ 视频_分析_微观服务 mqtt_ 经纪人  
或者运行sudo docker 合成向下从路径 :视频分析/video_analytics_/edge_video_analytics_resources
支助论坛支助论坛
if you're unable to resolve your issues, contact the 支助论坛支助论坛. 
概览概览
视频分析是指通过视频处理、推论和分析操作将视频流转化为洞察力,用于医疗保健、零售、娱乐和工业等商业领域,视频分析所使用的算法对输入视频流进行物体探测、分类、识别、计数和跟踪。
使用这一案例的特点是可互操作的集装箱化微服务,用于开发和部署使用建造的优化视频分析管道intel® dl streamer包件提供的预制集装箱图像使开发商能够用自己的深层学习模型和管道取代集装箱中使用的深层学习模型和管道。工业边缘观察(eii)用于在边缘设备上进行视频分析的软件堆叠 。
开发者可以通过使用预先制造的docker* 图像和简单地以众所周知的json格式配置视频分析管道来节省开发和部署时间。
选定配置 下载下载微观服务和下列软件。
配置 下载
完成时间 :45分钟 45分钟
语言:python* 3
可用软件 :
边缘视频分析
deep learning streamer (intel® dl streamer) pipeline server
目标系统要求
下列处理器之一:
6th to 11th generation intel® core™ processors
1st to 3rd generation of intel® xeon® scalable processors
intel atom® processor with intel® streaming simd extensions 4.2 (intel® sse4.2)
至少8gb内存。
至少64gb硬盘。
互联网连接。
ubuntu* 20.04 lts kernel 5.4†
引用到openvino™ toolkit system requirements支持的 gpu 和 vpu 处理器。
† use kernel 5.8 for 11th generation intel® core™ processors.
如何运作
边缘视频分析
这是用于部署最佳视频分析分析管道的python* 微型服务,作为docker图像在包件中提供。intel® dl streamer用于推断的管道服务器。 docker 图像使用intel® dl streamer pipeline server as a library. the microservice can be started in one of two modes – edge insights industrial (eii) to deploy with eii software stack or edge video analytics (eva) to deploy independent of the eii stack.
edge video analytics (eva) mode: provides the same restful apis as intel® dl streamer pipeline server to discover, start, stop, customize,和monitor pipeline execution和supports mqtt和kafka message brokers for publishing the inference results. for the rest api definition, refer to the restfforforfor microsservices 微服务接口.
工业(eii)模式的边缘透视:支持管道执行的 eii 配置管理器,以及发布推论结果的 ei 信息管道,使其与工业的边缘透视软件堆叠。
图1:建筑图图
注意: 可以选择, 人们也可以从 docker 枢纽下载 docker 图像, 来运行独立版本的微服务。 这是断层视频分析微服务, 没有安装信息总线出版商和 gst- udfloader 元素等工业部件的边缘透视, 因此容器大小较小 。
图2 建筑图图 - 独立版本
微服务资源
在边缘视频分析微观服务中使用的以下配置文件、脚本和工具已列入边缘视频分析资源拉链文件:
docker- competable. yml 转换器用于边缘视频分析微服务 和 mqtt 经纪人的文件配置、创建和启动容器 。
管道和模型列表文件夹中包含“边缘视频分析微观服务嵌入器”图像中所包含的管道和示范定义文件。这些文件可以通过体积递增来修改和使用“边缘视频分析微观服务嵌入器”图像。
工具/模型下下加载器工具工具从openvinotoolkit/open_model_zoo.
约克基多文件夹中包含一个配置 mqtt 代理器的文件, 以查看推断结果 。
gst-udf-loader元素
gst-udf-loader gstreamer 插件支持 python 和 本地(c) udfs 的装载和执行。 udf 是用户定义的功能,使用户能够在 evam 定义的管道中添加任何预处理或后处理逻辑。
集装箱发动机和管弦
该软件包使用docker和docker compose进行自动集装箱管理。
docker集装箱框架是企业环境中广泛使用的集装箱框架,允许将各种应用及其依赖性包装在一起,作为自足单位运行。
docker compose是一个用于定义和运行多集装箱套件应用程序的工具。
开始
第1步:安装微观服务
选定配置 下载下载微服务,然后按以下步骤安装。
配置 下载
打开一个新的终端, 转到下载的文件夹并解zip 下载的软件包 :
unzip video_analytics.zip  
转到视频分析/目录 :
cd video_analytics  
更改可执行的边缘软件文件的权限 :
chmod 755 edgesoftware  
在下面运行安装微服务的命令 :
sudo ./edgesoftware install  
安装期间,您将被提示产品键。产品键包含在intel发来的邮件中,该邮件确认您的下载。
图3:产品键
when the installation is complete, you see the message “installation of package complete”和the installation status for each module.
图4 图4:安装完成
要校验安装, 请列出使用以下命令下载的 docker 图像 :
sudo docker images  
如果安装成功, 您将会看到类似 :
图5:安装成功​
注:
路径中将可用安装失败日志 :/var/log/esb-cli/video_analytics_何 地是下载的边缘视频分析微服务版本。
docker 枢纽可直接下载边缘视频分析微服务嵌入图像, 使用以下命令 :
docker pull intel/边缘 _ 视频_分析_微观服务:
安装独立版本
docker 枢纽可使用以下命令直接从 docker 枢纽下载独立版本的 边缘视频分析微服务 的 docker 图像 :
docker pull intel/边缘 _ 视频_分析_微观服务:-standalone  
步骤2:运行边缘视频分析
在此步骤中,您将运行边缘视频分析微服务,包括样品物体探测、物体分类、物体跟踪、面部检测、情感识别、动作识别和环境音频探测管道,这些已经包含在多克图像中。
添加文件权限 :
跳转到工作目录edge_video_analytics_resources带有命令 :
cd 视频分析/video_analytics_/edge_video_analytics_resources/  
添加文件权限以使用命令运行脚本 :
sudo chmod +x docker/run.shsudo chmod +x 工具/模型下下加载器/model_downloader.sh  
​下载模型 :
通过运行命令从工作目录中 open model zoo 下载所需的模型 :
sudo ./工具/模型下下加载器/model_downloader.sh --model-list models_list/models.list.yml  
模型列表可以通过打开models_list/models.list.yml 文件。
通过浏览模式目录, 检查下载是否成功 :
图6:模型目录
注:示范清单可以修改或更新。
运行微服务:
以命令启动应用程序 :sudo docker 合成
检查终端中的成功信息 。
图7 图7:成功信息
打开一个新的终端,检查集装箱是否使用以下命令运行:
sudo docker ps -–format 'table{{.image}}t{{.status}}t{{.names}}'  
命令输出应该显示两个 docker 容器边缘 _ 视频_分析_微观服务和日食- 日食- 日食具有咨商地位或具有up.
图8:集装箱运行中的集装箱
利用rest请求,获取集装箱内现有模型和管道清单:
打开一个新的终端 。
运行以下命令以获取微服务中可用的模型列表 :
curl --location -x get 'http://localhost:8080/models'  
运行以下命令以获取微服务中可用的管道列表。 管道以名称/ version tuple 显示。 名称反映动作, 版本提供此动作的更多细节 。
curl --location -x get 'http://localhost:8080/pipelines'
注:如果这些步骤由于代理问题而失败,则提及排除故障段 次 页 次
发送rest请求以运行物体探测管道:
通过替换创建 rest 请求在下面的曲线命令中,您系统的 ip 地址为 ip 。 (如果您在 prc 区域,请参考下面的第二个选项。 )
引用到自定义视频分析管道请求以理解 stp-rest 申请格式。
curl --location -x post 'http://localhost:8080/pipelines/object_detection/person_vehicle_bike' --header 'content-type: application/json' --data-raw '{ source: { uri: https://github.com/intel-iot-devkit/sample-videos/raw/master/person-bicycle-car-detection.mp4?raw=true, type: uri }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving }, frame: { type: rtsp, path: vasserving } }}'  
对于 prc 用户,请使用下面显示的链接替换在下面的卷轴命令中,使用您的系统的 ip 地址。
引用到自定义视频分析管道请求以理解 stp-rest 申请格式。
curl --location -x post 'http://localhost:8080/pipelines/object_detection/person_vehicle_bike' --header 'content-type: application/json' --data-raw '{ source: { uri: file:///home/pipeline-server/resources/classroom.mp4, type: uri }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving }, frame: { type: rtsp, path: vasserving } }}'
注:对于低于0.7.2的evam版本,在工作目录不同时,对uri使用以下文字:档案: /app/resources/lechroom.mp4
打开一个新的终端并运行修改的卷轴命令。 rest 请求将返回管道实例 id, 可用于查询管道状态 。
例如,就第一期而言,根据请求,管道(例如,a6d67224eacc11ec9f360242c0a8603)将归还,随后又以递增号返回请求。
检查结果:​
显示微服务日志的初始终端窗口现在显示新发送请求的日志, 包括管道实例、 状态和 rtsp 流链接。 管道状态将显示队列、 运行和完成 。
图9:核对结果
使用管道实例id发送 get 请求,检查输油管状况:
curl --location -x get 'http://localhost:8080/pipelines/object_detection/person_vehicle_bike//status'  
何 地是管道实例。
从get请求中收到的答复与以下各点相似:
{ avg_fps: 27.014388149183596, elapsed_time: 2.2934277057647705, id: a6d67224eacc11ec9f360242c0a86003, start_time: 1641468940.5196402, state: running}  
注:如果输油管线已经终止,那么国家将显示为completed.
打开 vlc 播放器中的输出 rtsp 流, 以查看替换后输入视频上的推推结果在您的系统 ip 地址的下列 url 中:rtsp:// :8554/vasserving
请注意, 管道应该在 running 状态下查看输出视频。 如果管道已经结束, 请使用卷曲命令重新开始, 然后查看视频 。
图10: 推断结果
发送 rest 请求的替代方法 :
rest请求也可以通过邮递员应用程序发送,使用与前几个步骤相同的卷曲命令。
要安装 postman 应用程序,请执行以下步骤:
转到邮差下载.
在想要的位置提取安装文件 。
提取后,双击应用程序,并用您现有的账户签名,或创建新账户签名。
正在运行独立版本
独立版本的边缘视频分析分析微服务与 eva 模式相似,不同之处在于它没有任何 eii 组件,因此只能以 eva 模式运行。结构结构图图,它是全容器图像的脱光版。需要以下步骤才能运行独立的微服务版本。
如果尚未完成, 请使用命令下载双向视频分析微服务独立版本的 docker 图像 :
$ docker pull intel/边缘 _ 视频_分析_微观服务:1.0.0-standalone  
为提升微服务,请使用以下命令:
$ docker run -itd --rm -p 8080:8080 -p 8554:8554 -e enable_rtsp=true -e rtsp_port=8554 -e enable_webrtc=true -e webrtc_signaling_server=ws://localhost:8443 -e run_mode=eva intel/边缘 _ 视频_分析_微观服务:1.0.0-standalone  
向输油管服务器发送 rest 请求以运行 对象_ 分类/ 车辆/ 属性管道。 以下 curl 命令为我们这样做 。 回复将包含管道例 id (例如: a6d67224eacc11ec11ec9f360242c0a8603) , 用于使用输油管- 服务器状态 api 查询管道状态 。
$ curl localhost:8080/pipelines/object_classification/vehicle_attributes -x post -h 'content-type: application/json' -d '{ source: {uri: https://github.com/intel-iot-devkit/sample-videos/blob/master/car-detection.mp4?raw=true,type: uri }, destination: {metadata: { type: file, path: /tmp/results.jsonl /tmp/results.jsonl /tmp/results.jsonl /tmp/results.jsonl, format: json-lines},frame: { type: rtsp, path: pipeline-server} }, parameters: {detection-device: cpu } }'  
微观服务处公布元元数据的推推到一个本地文件,可在以下网址查阅:/tmp/results.jsonl /tmp/results.jsonl /tmp/results.jsonl /tmp/results.jsonl处理后的框架还作为rtsp流提供,可在下列地点查阅:trtsp://localhost:8554/管道-服务器,并且可以使用 rtsp 查看器查看。
添加模型和定制管道
可使用可用的下载脚本下载更多模型here.
您可以查询pipeline server docs创建自定义管道,并使用边缘视频分析微服务。
假设其他模型和管道分别以${pwd}/模型和${pwd}/管道提供,则设定了以下环境变量。
$ export model_dir=$(pwd)/models$ export pipeline_dir=$(pwd)/pipelines  
为提升微服务,请使用以下命令:
$ docker run -itd --rm --privileged --device=/dev:/dev --device-cgroup-rule='c 189:* rmw' --device-cgroup-rule='c 209:* rmw' --group-add 109 -p 8080:8080 -p 8554:8554 -e enable_rtsp=true -e rtsp_port=8554 -e enable_webrtc=true -e webrtc_signaling_server=ws://localhost:8443 -e run_mode=eva -e detection_device=cpu -e classification_device=cpu -v ${model_dir}:/home/pipeline-server/models -v ${pipeline_dir}:/home/pipeline-server/pipelines intel/边缘 _ 视频_分析_微观服务:${tag}  
正在运行 igpu 上的推断
要启用对 igpu 推论的支持, 您将需要将额外的旗帜传递到 docker 运行命令上, 详情如下 。
$ docker run -itd --rm --privileged --device=/dev:/dev --device-cgroup-rule='c 189:* rmw' --device-cgroup-rule='c 209:* rmw' --group-add 109 -p 8080:8080 -p 8554:8554 -e enable_rtsp=true -e rtsp_port=8554 -e enable_webrtc=true -e webrtc_signaling_server=ws://localhost:8443 -e run_mode=eva intel/边缘 _ 视频_分析_微观服务:${tag}  
可选: 带视频分析测试模块进行测试
安装完成后,您可通过运行视频分析测试模块测试您的设置。
详情,请参见intel® edge software device qualification (intel® esdq) for video analytics.
教脚
教程1: 在 gpu 上运行物件探测管道
此教程将演示如何更改运行 gpu 上的推论的推论设备 。
您将再次运行相同的对象_ 检测管道, 但这次您将使用集成的 gpu 进行检测推理, 设置检测- 检测设备参数 。
完成所有步骤get started上文一节。
在目标设备上,检查以下命令的输出并获得设备组:
stat -c '%g' /dev/dri/render*  
在 docker-competect.yml 文件中添加设备组 :
group_add: - 109  
通过替换创建 rest 请求the 在下面的卷轴命令中,使用您的系统的 ip 地址。
请注意rest机体的参数部分。
curl --location -x post 'http://localhost:8080/pipelines/object_detection/person_vehicle_bike' --header 'content-type: application/json' --data-raw '{ source: { uri: https://github.com/intel-iot-devkit/sample-videos/raw/master/person-bicycle-car-detection.mp4?raw=true, type: uri }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving }, frame: { type: rtsp, path: vasserving } }, parameters: { detection-device: gpu }}'  
注:
gpu 电导内插在首次装入时动态构建 opencl 内核,导致产生推论结果前的延迟 ~ 30 秒。
additional configuration might be needed to run inference on gpu depending on the hw. refer configurations for intel® processor graphics (gpu) to download和install install_neo_ocl_driver.sh (system reboot might be needed).
打开一个新的终端并运行卷轴命令。 rest 请求将返回管道实例 id (例如, a6d67224eacc11ec9f360242c0a8603) , 可用于查询管道状态 。
校对结果运行边缘视频分析以上步骤。
教学图2:使用 usb 相机输入的 run 边缘视频分析分析微观服务
在此教程中, 您将把物体探测管道的输入源更改为 usb 相机 。
完成所有步骤get started上文一节。
在ubuntu上,通过执行以下命令,列出所有可用的视频设备:是/dev/vide*
创建 curl 请求, 以便使用视频设备作为源。 例如, 如果命令的输出为 / dev/ video0, 那么对 curl 命令源进行如下修改 :
curl --location -x post 'http://localhost:8080/pipelines/object_detection/person_vehicle_bike' --header 'content-type: application/json' --data-raw '{ source: { device: /dev/video0, type: webcam }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving }, frame: { type: rtsp, path: vasserving } }}'  
打开一个新的终端并运行卷轴命令。 rest 请求将返回管道实例 id (例如, a6d67224eacc11ec9f360242c0a8603) , 可用于查询管道状态 。
校对结果运行边缘视频分析以上步骤。
注意: 请确定设备源参数中使用了正确的设备节点 。
教程 3: 在边缘视频分析微服务中以新模式运行新管道
在此教程中, 您将创建一个基于 人- 检测管道的新管道, 它将使用 人- 检测- retail- 0013 模型。 管道和模式文件夹将被安装到边缘视频分析微服务上, 无需重建 docker 图像。 您可以遵循同样的步骤创建任何新的管道 。
完成所有步骤get started上文一节。
下载新模型。
要从开放型动物园下载新模型,请在模型中添加模型细节。 list. yml 显示于 edge_video_analytics_resources/models_list 路径中。
对于人-检测-零售-0013,在文件模型.list.yml的结尾处添加以下条目。
- model: person-detection-retail-0013 alias: object_detection version: person_detection precision: [fp16,fp32]  
然后,在一个新的终端中运行以下命令,下载模型。
cd 视频分析/video_analytics_/edge_video_analytics_resources/# 何 地 is the package version downloadedsudo ./工具/模型下下加载器/model_downloader.sh --model-list models_list/models.list.yml  
命令执行完成后,下载的模型人-探测仪应在模型/物体-探测目录下提供。
如果您没有使用来自开放型动物园的模型,请在模型目录中直接复制您的模型。
图11:下载新模型
创建新管道
您将在管道/ 目标/ 探测中创建一个新的管道。 既然您正在以现有人_ 车辆_ 自行车管道为基础, 请复制人_ 车辆_ 自行车文件夹, 将其重命名为人_ 探测, 然后更新管道.json , 以便使用新模式 。
在同一终端中( 从路径 edge_ video_analytics_resources) 执行命令 :
sudo cp -r pipelines/object_detection/person_vehicle_bike/ pipelines/object_detection/person_detection  
在新复制的管道/物体/探测/人/探测/管道.json中,编辑管道.json文件的模板和说明部分。 json使用以下线条,将示范路径指定为模型/物体/探测/人/探测,以便使用模型人-探测-零售-0013来探测物体。
将模板定义为 :
template: [uridecodebin name=source, ! gvadetect model={models[object_detection][person_detection][network]} name=detection, ! gvametaconvert name=metaconvert ! gvametapublish name=destination, ! appsink name=appsink ],  
说明的定义是:
description: person detection based on person-detection-retail-0013,  
请参见界定媒体分析管道了解输油管模板和界定自己的输油管。
使用添加了模型和管道的微型运行服务
以命令启动应用程序 :
sudo docker 合成  
此步骤会大量挂载模型和管道目录。 您可以在一个单独的终端中检查容器是否正在使用 sudo docker ps 命令运行 。
检查新的管道和模式
打开一个新终端并运行以下命令以获取可用的模型列表 :
curl --location -x get 'http://localhost:8080/models'  
运行以下命令以获取管道列表 。 管道以名称/ version tuple 显示。 名称反映动作, 版本提供动作的更多细节 。
curl --location -x get 'http://localhost:8080/pipelines'  
您应该看到列表中新添加的管道和模型 。
对象_ 检测/ 人_ 检测运行管道
打开一个新的终端并输入下面的曲线命令,用于下文给出的物件_ 检测/ 人_ 检测管道:
curl --location -x post 'http://localhost:8080/pipelines/object_detection/person_detection' --header 'content-type: application/json' --data-raw '{ source: { uri: https://github.com/intel-iot-devkit/sample-videos/raw/master/store-aisle-detection.mp4?raw=true, type: uri }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving }, frame: { type: rtsp, path: vasserving } }}'  
何 地 is the ip address of the system.
the above curl command returns the pipeline instance. use this pipeline instance to get the status by updating the in the below command:
curl --location --request get 'http://localhost:8080/pipelines/object_detection/person_detection//status'  
图12: 人员探测运行管道
微服务日志将显示,天体探测/人探测管道实例已经建立,管道状态已经改为running,并结束了。
图13:管道日志
教程 4: 安装边缘视频分析外壳图
注:此教程从第2022.1号释放起支持。
注:此教义假设您有一个宽网可用分组 。
在此教程中, 您将使用制导图在 宽网 群集中部署边缘视频分析微服务。 使用 drawnchart 组合图 。 用于样本部署的 guard 图表包 边缘视频分析微服务和 mqtt 经纪人。 要下载制导图, 请使用定制的下载选项 。
完成所有步骤get started guide. when the installation is complete, you see the message “installation of package complete”和the installation status for each module.
图14:成功安装
将模型、管道和资源文件夹复制到 /可选/英特尔/评价/库伯涅茨工人节点。
上述先决条件完成后,安装如下图表:helm install evam ./chart/
figure 15: chart installation
get the ip ip 地址 :
kubectl get pods -o wide  
figure 16: retrieving ip address
更新管道请求指令以触发管道。 替换evam_pod_ip, mqtt_pod_ip上面有 ip 地址 。
curl --location -x post 'http://:8080/pipelines/object_detection/person_vehicle_bike' --header 'content-type: application/json' --data-raw '{ source: { uri: file:///home/pipeline-server/resources/person-bicycle-car-detection.mp4, type: uri }, destination: { metadata: { type: mqtt, host: :1883, topic: vaserving } }}'  
注:使用 github url 支持代理服务器网络时, 视频文件使用 github url 可能无法工作 。 相反, 下载视频文件并添加到资源目录/可选/英特尔/评价立方公尺内立体体体积的路径。
获取 mqtt 订阅者的推断输出 :
docker run -it --entrypoint 约克基多_sub 日食- 日食- 日食:latest --topic vaserving -p 1883 -h  
figure 17: inference output
概述和下一步步骤
使用“边缘视频分析微服务” 学习如何进行视频分析。
学习更多
继续学习,见下列指南和软件资源:
github
docker image
helm charts (概览概览)
microservice endpoints
自定义视频分析管道请求
界定媒体分析管道
intel® edge software device qualification (intel® esdq) for video analytics
排除故障
确保您在完全安装期间有一个活跃的互联网连接。 如果您随时失去互联网连接, 安装可能会失败 。
如果安装在从 intel 注册处下载和提取图像时失败安装, 然后重新运行安装命令sudo ./edgesoftware install通过提供产品钥匙。
确保您正在使用一个新的 ubuntu* 安装。 早期软件, 特别是 docker 和 docker compose 可能会引起问题 。
在代理环境中,如果设定了单一用户代理(即. bashrc 键) 然后部分组件安装可能失败或安装挂挂挂。 请确定您已经设置了代理服务器/贝茨/环境.
如果您的系统在代理服务器网络中, 请在环境环境栏内docker- competable. yml 转换器文件。
http_proxy=http:///https_proxy=http:////no_proxy=localhost,127.0.0.1
输入代理代理服务器的详细信息docker- competable. yml 转换器显示如下:
如果缺少代理细节, 则无法获取运行管道所需的源视频文件, 并在容器内安装所需的包件 。
运行命令sudo - e docker 合成(参考步骤8(安装边缘视频分析微观服务)
在自定义模式下, 如果目标设备在代理服务器后面, helm cli 安装可能会失败。 要修正它, 请更新 apag 代理服务器的细节 。
sudo snap set system proxy.http=http:////sudo snap set system proxy.https=http:////  
如果集装箱显示有冲突错误,则停止/删除集装箱。
要删除边缘 _ 视频_分析_微观服务和mqtt_ 经纪人,使用以下任何一种备选办法:
执行下列命令:
sudo docker stop 边缘 _ 视频_分析_微观服务 mqtt_ 经纪人sudo docker rm 边缘 _ 视频_分析_微观服务 mqtt_ 经纪人  
或者运行sudo docker 合成向下从路径 :视频分析/video_analytics_/edge_video_analytics_resources
支助论坛支助论坛
if you're unable to resolve your issues, contact the 支助论坛支助论坛. 


Tractica:2018年全球物流机器人销售额达83亿美元
选择晶振考虑的因素有哪些
基于A8735的超低功耗闪光灯充电方案
三星推出一款限量版Galaxy S10+,Galaxy A8s新粉嫩配色发布
双重绝缘是什么意思_双重绝缘结构
浅谈边缘视频分析
PLC的级别划分标准是怎样的?
半双工传输应用需要注意什么?
干货分享 | HPM6700系列硬件设计指南 (上)
离线语音版养老中心中控
嵌入式项目中的软件数据兼容性
Cadence如何建立PCB?Cadence建立PCB步骤详解
新的6GHz Wi-Fi技术或将为全球经济带来助推作用
如何制作一个简易的磁力秤?
苹果官方应用:iPhone设备状态一目了然 售后更方便!
怎样才能将人工智能和教育深度融合
SIMATIC S7-1500 PLC存储区移动指令与交换指令简述
MCS-51与 AD7543的应用
苹果7日本上市时间不变 iPhone7日本价格比大陆便宜623元
虹润NHR-3300系列三相综合电量表的技术原理及应用分析