edgex(14):使用intel的evam微服务跑通demo-app应用,可以对摄像头的数据进行streampipline进行流处理,微服务底层使用openvino组件库,可以识别自行车行人(代码片

freewebsys freewebsys     2022-12-04     285

关键词:

目录

前言


相关EdgeX Foundry 全部分类:
https://blog.csdn.net/freewebsys/category_9437788.html

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/127456918

未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

1,关于EVAM


是Intel 开发的组件库 Edge Video Analytics Microservice,边缘端的视频分析微服务。
官方网站:
https://www.intel.com/content/www/us/en/developer/articles/technical/video-analytics-service.html
github地址:
https://github.com/intel/edge-video-analytics-microservice
Docker Hub 地址:
https://hub.docker.com/r/intel/edge_video_analytics_microservice

版本区别:
0.7.2 Aligned with Intel® Deep Learning Streamer Pipeline Server 2022.1.1 release.
0.7.0 Initial release using Intel® Distribution of OpenVINO™ Toolkit 2021.4.2
当然使用 个 2022 版本的。

架构图,底层是OpenVINO的引擎,然后是Intel的深度学习框架,上面是Pipline和模型,然后是Streamer Pipeline 服务。在上面就是应用层。

2,配置EVAM的docker-compose服务


之前已经研究过一遍使用源码的方式自己编译docker镜像然后跑起来。
也可以成功:
https://blog.csdn.net/freewebsys/article/details/126230258?spm=1001.2014.3001.5501
就是构建速度慢,下载好多东西。这次直接使用镜像做服务:

docker-compose.yml

networks:
  edgex-network:
    driver: bridge
services:

  broker:
    image: eclipse-mosquitto
    hostname: mqtt
    container_name: mqtt-broker
    volumes:
      - ./mosquitto_conf:/mosquitto/config
    ports:
      - "1883:1883"
      - "59001:9001"
    networks:
      - edgex-network
  video-analytics-microservice:
    image: intel/edge_video_analytics_microservice:0.7.2
    hostname: edgex-video-analytics-microservice
    container_name: edgex-video-analytics-microservice
    privileged: true
    tty: true
    entrypoint: ["./run.sh"]
    ports:
      - '8080:8080'
      - '8554:8554'
    networks:
      - edgex-network
    environment:
      - ENABLE_RTSP=true
      - RTSP_PORT=8554
      - ENABLE_WEBRTC=true
      - WEBRTC_SIGNALING_SERVER=ws://localhost:59001
      - RUN_MODE=EVA
      # Default Detection and Classification Device
      - DETECTION_DEVICE=CPU
      - CLASSIFICATION_DEVICE=CPU
      - WRITABLE_INSECURESECRETS_CAMERACREDENTIALS_SECRETS_USERNAME=admin
      - WRITABLE_INSECURESECRETS_CAMERACREDENTIALS_SECRETS_PASSWORD=yhy363tp
    device_cgroup_rules:
    # Default run - device-cgroup-rule='c 189:* rmw'
    # NCS2 run - device-cgroup-rule='c 209:* rmw'
    # Selective rules can be applied for deployment
    - 'c 189:* rmw'
    - 'c 209:* rmw'
    devices:
    # Following devices under /dev filesystem will be needed based on usecase
    # dri - GPU
    # ion - VPU
    # USB camera devices
    # Selective mount can be done for deployment as mounting whole /dev is not recommended
    - "/dev:/dev"

version: '3.7'

在当前目录创建 mosquitto_conf/mosquitto.conf
需要再配置下 broker 的端口:开启 websocket服务

#
# Copyright (C) 2022 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0

allow_anonymous true
listener 1883

log_type error
log_type warning
log_type notice
log_type information
log_type subscribe
log_type unsubscribe
log_type websockets

listener 9001
protocol websockets

然后就可以启动服务了

docker-compose up -d

4,创建摄像头应用,启动web服务,端口 59750


首先下载 edgex examples 项目

$ git clone https://github.com/edgexfoundry/edgex-examples.git
# 切换到 camera management 项目
$ cd edgex-examples/application-services/custom/camera-management/

配置摄像头凭证文件。输入账号密码。

$ vi res/configuration.toml 

# 设置账号密码
    # TODO: Enter your camera's credentials here.
    # NOTE: currently this solution is limited to supporting only 1 username/password combination
    #       for ALL cameras. In the future when then device-onvif-camera service is able to provide
    #       us with pre-authenticated uris, this can be removed.
    [Writable.InsecureSecrets.CameraCredentials]
    path = "CameraCredentials"
      [Writable.InsecureSecrets.CameraCredentials.Secrets]
      username = "admin"
      password = "password"

需要golang 环境:
https://golang.google.cn/doc/install

首先删除之前的老版本的文件,然后在解压缩到/usr/local目录下面:需要root权限

$ sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.19.2.linux-amd64.tar.gz

$ vi $HOME/.bashrc
增加环境变量
# add golang
export PATH=$PATH:/data/local/go/bin
# 增加代理,下载提速
export GO111MODULE=on
export GOPROXY=https://goproxy.cn

测试
$ go version
go version go1.19.2 linux/amd64

安装工具和依赖:

# 需要安装工具 pkg-config
$ sudo apt install pkg-config
# 安装 zeromq 依赖开发工具包:
$ sudo apt-get install libzmq3-dev

执行构建,没有任何问题代表构建成功!

$ make build-app 
go mod tidy
CGO_ENABLED=1 go build -ldflags "-X github.com/edgexfoundry/app-functions-sdk-go/v2/internal.SDKVersion=v2.2.0 -X github.com/edgexfoundry/app-functions-sdk-go/v2/internal.ApplicationVersion=0.0.0" -o app-camera-management
$ make run-app 
EDGEX_SECURITY_SECRET_STORE=false ./app-camera-management
.....
level=INFO ts=2022-10-19T08:31:46.13384954Z app=app-camera-management source=service.go:202 msg="StoreAndForward disabled. Not running retry loop."
level=INFO ts=2022-10-19T08:31:46.133856645Z app=app-camera-management source=service.go:205 msg="Camera Management Application Service has started"
level=INFO ts=2022-10-19T08:31:46.133863725Z app=app-camera-management source=server.go:162 msg="Starting HTTP Web Server on address 0.0.0.0:59750"

4,启动成功进入web界面


http://localhost:59750

特别需要注意的是这个分辨率。
2304x1296 H264 @ 25 fps
640x480 H264 @ 25 fps
选择下面的640 分辨率,否则太高了,会报错,Picture size 0x0 is invalid
不能查看摄像的实时处理结果了

Input #0, rtsp, from 'rtsp://localhost:8554/Camera001':
  Metadata:
    title           : Session streamed with GStreamer
    comment         : rtsp-server
  Duration: N/A, start: 0.000000, bitrate: N/A
  Stream #0:0: Video: mjpeg (Baseline), none(bt470bg/unknown/unknown), 90k tbr, 90k tbn, 90k tbc
[mjpeg @ 0x7f5e4000b480] [IMGUTILS @ 0x7f5e3bffdcd0] Picture size 0x0 is invalid
    Last message repeated 18 times
[mjpeg @ 0x7f5e4000b480] [IMGUTILS @ 0x7f5e3bffdcd0] Picture size 0x0 is invalid

实时查看流结果地址。就是带框框的视频流。

# 需要安装 ffmpeg # 
sudo apt install ffmpeg
ffplay -rtsp_transport tcp rtsp://localhost:8554/Camera001

在工位,没有车辆行人的视频,用截图代替了。

3,总结


使用Intel的 EVAM 微服务,创建OpenVINO的目标检测跟踪服务,并成功接受到相关坐标数据。
这个官方例子还是非常的丰富的。稍作修改下就可以应用到项目当中了,已经把相关的目标检测模型都放到 OpenVINO 中,
封装成一个docker 服务器启动了。整个流程也通过配置下就可以了。
非常的方便、简单、高效的边缘演示服务!

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/127456918

博主地址是:https://blog.csdn.net/freewebsys

edgex(15):在edgex环境下配置ekuiper规则引擎服务,配置规则处理device-virtual发送的数据,并转发给http服务(代码片段)

目录前言1,关于ekuiper规则引擎2,使用EdgeX进行相关开发。3,在edgex管理端上面进行操作:4,或者升级到最新的ui:2.2.0也可以解决问题5,主要是利用redis的topic订阅发布消息6,编写beego的http服务接收数... 查看详情

edgex:使用最新的edgex2.0干啥,硬件是一方面,重要的另外一方面是软件的匹配,也要做好相关的开发,新的apiv2接口学习,实现设备的注册服务的注册

目录前言1,关于edgex2.02,使用2.0httpapi注册3,swaggerHTTPAPI4,总结前言相关EdgeXFoundry全部分类:https://blog.csdn.net/freewebsys/category_9437788.html本文的原文连接是:https://blog.csdn.net/freeweb 查看详情

edgex:使用最新的edgex2.0干啥,硬件是一方面,重要的另外一方面是软件的匹配,也要做好相关的开发,新的apiv2接口学习,实现设备的注册服务的注册(代码片段)

目录前言1,关于edgex2.02,使用2.0httpapi注册3,swaggerHTTPAPI4,总结前言相关EdgeXFoundry全部分类:https://blog.csdn.net/freewebsys/category_9437788.html本文的原文连接是:https://blog.csdn.net/freeweb 查看详情

edgex(10):xubuntu-22linux系统安装edgex2.1相关服务,服务都比较小,下载启动速度快。(代码片段)

目录前言1,关于EdgeX2.12,安装docker和docker-compse环境2,使用docker-compose启动edgex2.1版本2,启动之后访问consule服务,访问EdgeX后台界面4,总结前言相关EdgeXFoundry全部分类:https://blog.csdn.net/fre 查看详情

edgex(10):xubuntu-22linux系统安装edgex2.1相关服务,服务都比较小,下载启动速度快。(代码片段)

目录前言1,关于EdgeX2.12,安装docker和docker-compse环境2,使用docker-compose启动edgex2.1版本2,启动之后访问consule服务,访问EdgeX后台界面4,总结前言相关EdgeXFoundry全部分类:https://blog.csdn.net/fre 查看详情

edgex(10):xubuntu-22linux系统安装edgex2.1相关服务,服务都比较小,下载启动速度快。(代码片段)

目录前言1,关于EdgeX2.12,安装docker和docker-compse环境2,使用docker-compose启动edgex2.1版本2,启动之后访问consule服务,访问EdgeX后台界面4,总结前言相关EdgeXFoundry全部分类:https://blog.csdn.net/fre 查看详情

3.14go微服务实战(微服务理论)---微服务中的分布式事务管理

... 用来管理事务的方法或者原则有很多种,如下: 1.避免使用跨服务的事务; 2.两部提交法,分别是XA标准和REST-AT标准; 3.最终一致性和补偿方案 14.2.1 避免跨微服务的事务 14.2.2 基于XA协议的两阶段提交协议 14.2. 查看详情

edgex(12):摄像头使用device-onvif-camera服务接入edgex,参考官方视频,需要稍微操作下就可以接入成功,然后通过参数就可以获得tp-link摄像头的rtsp地址。(代码片段

...可以测试接口了,支持Get、Set有些接口有问题5,使用总结前言相关EdgeXFoundry全部分类:https://blo 查看详情

edgex(13):edgex官方的摄像头demo-app,接入摄像头可以控制摄像头的上下左右方向,创建openvino的目标检测跟踪服务,并成功接受到相关坐标数据,可以直接做边缘计算了。(代码片段)

目录前言1,关于EdgeX的demo-app例子2,使用:makeinstall-edge-video-analytics安装操作3,使用makerun-edge-video-analytics启动镜像,开启端口80804,创建摄像头-应用,这个才是处理配置的界面,端口597505&#x 查看详情

分段错误,分配数组 - 使用 Intel v14

】分段错误,分配数组-使用Intelv14【英文标题】:Segmentationfault,assigningarrays-withIntelv14【发布时间】:2016-02-2208:24:36【问题描述】:我正在尝试编译和运行本应使用英特尔编译器版本11成功编译和运行的代码。但是我有版本14,如... 查看详情

edgex:使用最新的edgex2.0在ubuntu上进行部署,替换私服地址nexus3.edgexfoundry.org成docker官方地址,解决下载问题。有了新ui界面(代码片段)

目录前言1,关于EdgeX2.02,安装docker和docker-compose3,安装使用文档4,发现一个问题,新的yml使用了nexus3.edgexfoundry.org私服地址,网速特别慢切换成docker官方地址5,新系统uihttp://127.0.0.1:4000/#/dashboar 查看详情

springcloud微服务需要service层吗

...olOpSMQ提取码:jd2wcloud-service配套视频|cloud-service.zip|15.3zipkin使用和修改收集比率.avi|15.2zipkin配置.avi|15.1zipkin下载安装运行.avi|14.4|14.3|14.2|14.1测试介绍.avi|13.5登录重构-支持短信登录.avi|13.4用户绑定手机号.avi|13.3校验短信验证码.avi|13.... 查看详情

edgex网关接入thingsboard物联网平台-初探

...:9082/物联网MQTT网关API参考为了将设备遥测发布到ThingsBoard服务器节点,请将PUBLISH消息发送到以下主题:信息:其中设备A和设备B是您的设备名称,温度和湿度是遥测键,ts是以毫秒为单位的unix时间戳。 查看详情

使用 Express.js 和 docker 理解微服务

】使用Express.js和docker理解微服务【英文标题】:UnderstandingmicroservicesusingExpress.jsanddocker【发布时间】:2018-09-1118:24:14【问题描述】:我是node.js和docker以及微服务架构的新手。我试图了解微服务架构实际上是什么,理论上我确实... 查看详情

布道微服务_14常见的五种负载均衡算法实现及其应用场景

...询算法最少活跃连接算法一致性hash算法负载均衡算法的使用场景算法缺陷自适应最优选择算法小结思考题Pre假设订阅了一个别人的服务,从注册中心查询得到了这个服务的可用节点列表,而这个列表里包含了几十个节点,这个... 查看详情

安全微服务环境的最小设置

...vironment【发布时间】:2018-12-1409:14:04【问题描述】:我想使用Gradle、SpringBoot2、Zuul、JWT、带有REST-Api和自制身份验证服务器的微服务设置SSO微服务环境。当身份验证服务器、网关和微服务充当OAuth客户端和资源服务器时,它们的... 查看详情

两个微服务之间的通信

...票据实体。它们有自己的端点,并与网关连接在一起(我使用的是jhipster微服务架构)。bill-ms应该访问产品列表。我想知道如何在这两个ms之间进行通信。我想到了三种方法:从b 查看详情

通过多个微服务进行 JWT 授权

...A的数据,但微服务A需要来自微服务B的数据。设置我正在使用Auth0来发布和处理身份验证和授权。我设置了两个微服务。用户在前端登录,需要加载基于租户的计费信息。微服务A是一种 查看详情