# sample-videoanalysiscar **Repository Path**: chenxin11111/sample-videoanalysiscar ## Basic Information - **Project Name**: sample-videoanalysiscar - **Description**: 开发者将本Application部署至Atlas 200 DK或者AI加速云服务器上实现对本地mp4文件或者RTSP视频流进行解码,对视频帧中的车辆并对其属性进行预测,生成结构化信息发送至Server端进行保存、展示的功能 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: 1.3x.0.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2022-03-11 - **Last Updated**: 2022-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 中文|[English](Readme_EN.md) **该案例仅仅用于学习,打通流程,不对效果负责,不支持商用。** # 车辆检测 开发者将本Application部署至Atlas 200 DK上实现对本地mp4文件或者RTSP视频流进行解码,对视频帧中的车辆及其属性进行预测,生成结构化信息发送至Server端进行保存、展示的功能。 当前分支中的应用适配**1.32.0.0及以上**版本的[DDK&RunTime](https://ascend.huawei.com/resources)。 ## 前提条件 部署此Sample前,需要准备好以下环境: - 已完成Mind Studio的安装。 - 已完成Atlas 200 DK开发者板与Mind Studio的连接,交叉编译器的安装,SD卡的制作及基本信息的配置等。 ## 部署 可以选择如下快速部署或者常规方法部署,二选一即可: 1. 快速部署,请参考: [https://gitee.com/Atlas200DK/faster-deploy](https://gitee.com/Atlas200DK/faster-deploy) 。 >![](public_sys-resources/icon-note.gif) **说明:** >- 该快速部署脚本可以快速部署多个案例,请选择videoanalysiscar案例部署即可。 >- 该快速部署脚本自动完成了代码下载、模型转换、环境变量配置等流程,如果需要了解详细的部署过程请选择常规部署方式。转 **:[2. 常规部署](#zh-cn_topic_0228461806_li3208251440)** 2. 常规部署,请参考: [https://gitee.com/Atlas200DK/sample-README/tree/master/sample-videoanalysiscar](https://gitee.com/Atlas200DK/sample-README/tree/master/sample-videoanalysiscar) 。 >![](public_sys-resources/icon-note.gif) **说明:** >- 该部署方式,需要手动完成代码下载、模型转换、环境变量配置等过程。完成后,会对其中的过程更加了解。 ## 编译 1. 打开对应的工程。 以Mind Studio安装用户在命令行中进入安装包解压后的“MindStudio-ubuntu/bin”目录,如:$HOME/MindStudio-ubuntu/bin。执行如下命令启动Mind Studio **./MindStudio.sh** 启动成功后,打开**sample-videoanalysiscar**工程,如[图1](#zh-cn_topic_0228461806_zh-cn_topic_0203223303_fig721144422212)所示。 **图 1** 打开sample-videoanalysisperson工程 ![](figures/打开工程项目-车辆检测.png) 2. 在src/param\_configure.conf文件中配置相关工程信息。 **图 2** 配置文件路径 ![](figures/videocar_src.png) 该配置文件默认配置内容如下: ``` remote_host=192.168.1.2 presenter_view_app_name=video video_path_of_host=/home/HwHiAiUser/car.mp4 rtsp_video_stream= ``` - remote\_host:配置为Atlas 200 DK开发者板的IP地址。 - presenter\_view\_app\_name: 用户自定义的在PresenterServer界面展示的View Name,此View Name需要在Presenter Server展示界面唯一,只能为大小写字母、数字、“\_”的组合,位数3\~20。 - video\_path\_of\_host:配置为HOST侧的视频文件的绝对路径。 - rtsp\_video\_stream:配置为RTSP视频流的URL。 视频文件配置示例如下: ``` remote_host=192.168.1.2 presenter_view_app_name=video video_path_of_host=/home/HwHiAiUser/car.mp4 rtsp_video_stream= ``` Rtsp视频流配置示例如下: ``` remote_host=192.168.1.2 presenter_view_app_name=video video_path_of_host= rtsp_video_stream=rtsp://192.168.2.37:554/cam/realmonitor?channel=1&subtype=0 ``` >![](public_sys-resources/icon-note.gif) **说明:** >- 参数remote\_host和presenter\_view\_app\_name必须全部填写,否则无法通过build。 >- 注意所填参数不用使用“”。 >- 参数video\_path\_of\_host和rtsp\_video\_stream必须至少填写一项。 >- 当前RTSP视频流只支持rtsp://ip:port/path格式,如果需要使用其它格式的url,需要把video\_decode.cpp中的IsValidRtsp函数去除,或者直接返回true,跳过正则表达式匹配。 >- 本样例中提供的RTSP流地址不可以直接使用。如果需要使用RTSP,请在本地使用live555或其它方式制作RTSP视频流,并且可以在VLC中播放。然后将本地制作好的RTSP视频流的URL填入配置文件的相应参数中,即可运行。 >- 当前已经按照配置示例配置默认值,请按照配置情况自行修改。 3. 执行deploy脚本, 进行配置参数调整及第三方库下载编译 打开Mind Studio工具的Terminal,此时默认在代码主目录下,执行如下命令在后台指执行deploy脚本,进行环境部署。如[图 执行deploy脚本](#zh-cn_topic_0228461806_zh-cn_topic_0203223303_fig4889032182315)所示。 **图 3** 执行deploy脚本 ![](figures/执行deploy脚本.png "执行deploy脚本") >![](public_sys-resources/icon-note.gif) **说明:** >- 首次deploy时,没有部署第三方库时会自动下载并编译,耗时可能比较久,请耐心等待。后续再重新编译时,不会重复下载编译,部署如上图所示。 >- deploy时,需要选择与开发板通信的主机侧ip,一般为虚拟网卡配置的ip。如果此ip和开发板ip属于同网段,则会自动选择并部署。如果非同网段,则需要手动输入与开发板通信的主机侧ip才能完成deploy。 4. 开始编译,打开Mind Studio工具,在工具栏中点击**Build \> Build \> Build-Configuration**。如[图4](#zh-cn_topic_0228461806_zh-cn_topic_0203223303_fig13819202814301)所示,会在目录下生成build和run文件夹。 **图 4** 编译操作及生成文件 ![](figures/videocar_build.png) >![](public_sys-resources/icon-notice.gif) **须知:** >首次编译工程时,**Build \> Build**为灰色不可点击状态。需要点击**Build \> Edit Build Configuration**,配置编译参数后再进行编译。 5. 启动Presenter Server。 打开Mindstudio工具的Terminal,在应用代码存放路径下,执行如下命令在后台启动Video Analysiscar应用的Presenter Server主程序。如[图 启动PresenterServer](#zh-cn_topic_0228461806_zh-cn_topic_0203223303_fig102142024389)所示。 **bash run\_present\_server.sh** **图 5** 启动PresenterServer ![](figures/videocar_run_1.png) - 当提示“Please choose one to show the presenter in browser\(default: 127.0.0.1\):“时,请输入在浏览器中访问Presenter Server服务所使用的IP地址(一般为访问Mind Studio的IP地址)。 如[图6](#zh-cn_topic_0228461806_zh-cn_topic_0203223303_fig73590910118)所示,请在“Current environment valid ip list“中选择通过浏览器访问Presenter Server服务使用的IP地址,并输入存储视频解析数据的路径。 **图 6** 工程部署示意图 ![](figures/videocar_run_2.png) - 当提示“Please input a absolute path to storage video analysis data:“时,请输入Mind Studio中的绝对路径用于存储视频解析数据,此路径Mind Studio用户需要有读写权限,若此路径不存在,脚本会自动创建。 如[图7](#zh-cn_topic_0228461806_zh-cn_topic_0203223303_fig19953175965417)所示,表示presenter\_server的服务启动成功。 **图 7** Presenter Server进程启动 ![](figures/videocar_run_3.png) 使用上图提示的URL登录Presenter Server,IP地址为[图6](#zh-cn_topic_0228461806_zh-cn_topic_0203223303_fig73590910118)中输入的IP地址,端口号默为7005,如下图所示,表示Presenter Server启动成功。 **图 8** 主页显示 ![](figures/主页显示.png "主页显示") Presenter Server、Mind Studio与Atlas 200 DK之间通信使用的IP地址示例如下图所示: **图 9** IP地址示例 ![](figures/IP地址示例.png "IP地址示例") - Atlas 200 DK开发者板使用的IP地址为192.168.1.2(USB方式连接)。 - Presenter Server与Atlas 200 DK通信的IP地址为UI Host服务器中与Atlas 200 DK在同一网段的IP地址,例如:192.168.1.223。 - 通过浏览器访问Presenter Server的IP地址本示例为:10.10.0.1,由于Presenter Server与Mind Studio部署在同一服务器,此IP地址也为通过浏览器访问Mind Studio的IP。 6. 车辆检测应用支持解析本地视频和RTSP视频流。 - 如果需要解析本地视频,需要将视频文件传到Host侧。 例如将视频文件car.mp4上传到Host侧的“/home/HwHiAiUser/“目录下。 >![](public_sys-resources/icon-note.gif) **说明:** >支持H264与H265格式的MP4文件,如果MP4文件需要剪辑,建议使用开源工具ffmpeg,使用其他工具剪辑的视频文件ffmpeg工具可能不支持解析。 - 如果仅解析RTSP视频流,本步骤可跳过。 ## 运行 1. 运行车辆检测应用程序 在Mind Studio工具的工具栏中找到Run按钮,点击**Run \> Run 'sample-videoanalysiscar'**,如[图10](#zh-cn_topic_0228461806_zh-cn_topic_0203223303_fig12953163061713)所示,可执行程序已经在开发板执行。 **图 10** 程序运行示意图 ![](figures/videocar_run4.png) 2. 使用启动Presenter Server服务时提示的URL登录 Presenter Server 网站。 >![](public_sys-resources/icon-note.gif) **说明:** >车辆检测应用的Presenter Server最多支持2个 _presenter\_view\_app\_name_ 同时显示。 页面左侧树结构列出了视频所属app name以及通道名,中间列出了抽取的视频帧大图以及检测出的目标小图,点击下方小图后会在右侧列出详细的推理结果、评分。 本应用支持车辆属性检测,包括车辆品牌、车辆颜色的识别和车牌号码识别。 >![](public_sys-resources/icon-note.gif) **说明:** >车牌号码识别的网络模型,是通过程序自动生成的车牌作为训练集图片训练的,不是使用真实车牌图片训练的。所以该模型在识别真实车牌号码时准确度比较低,如果需要较高的准确度的模型,请自己搜集真实车牌图片作为训练集并训练。 ## 后续处理 - **停止车辆检测应用** 视频程序分析完之后会自动退出,如[图11](#zh-cn_topic_0228461806_zh-cn_topic_0203223303_fig464152917203)所示。 **图 11** Video Analysiscar应用程序运行结束 ![](figures/videocar_stop.png) - **停止Presenter Server服务** Presenter Server服务启动后会一直处于运行状态,若想停止车辆检测应用对应的Presenter Server服务,可执行如下操作。 以Mind Studio安装用户在Mind Studio所在服务器的命令行中执行如下命令查看车辆检测应用对应的Presenter Server服务的进程。 **ps -ef | grep presenter | grep video\_analysis\_car** ``` ascend@ascend-HP-ProDesk-600-G4-PCI-MT:~/sample-videoanalysiscar$ ps -ef | grep presenter | grep video_analysis_car ascend 3655 20313 0 15:10 pts/24?? 00:00:00 python3 presenterserver/presenter_server.py --app video_analysis_car ``` 如上所示 _3655_ 即为车辆检测应用对应的Presenter Server服务的进程ID。 若想停止此服务,执行如下命令: **kill -9** _3655_ - **重启车辆检测应用时注意点** 重新启动车辆检测应用时请确保以下条件满足任意一个,否则会报错: 1. 请确保视频解析数据存储路径中内容已经清空。 例如:视频解析数据存储路径为:\\$HOME/videocar\_storage/video,其中:$HOME/videocar\_storage是启动Presenter Server时配置的“Please input a absolute path to storage video analysis data”的值,video为**param\_configure.conf**配置文件中参数**presenter\_view\_app\_name**的值。 满足此条件情况下,无需重启Presenter Server,直接重新执行**Run \> Run 'sample-videoanalysiscar'**运行应用程序即可。 2. 视频解析数据存储路径中如果已有数据且不想删除,可以修改**param\_configure.conf**配置文件中**presenter\_view\_app\_name**参数的值,然后在Mind Studio界面中重新执行**Build \> Rebuild**,再执行**Run \> Run 'sample-videoanalysiscar'**即可。 **param\_configure.conf**配置文件中参数**presenter\_view\_app\_name**的值如下所示。 ![](figures/车辆检测的用户配置文件.png) 满足此条件情况下,无需重启Presenter Server。 3. 若重新启动Presenter Server,再运行车辆检测应用,在启动Presenter Server时请修改存储视频解析的数据的路径(不与之前存储路径重复)。