# YOLOV5_DEEPSORT_MOT_FFMPEG_DVPP_AIPP **Repository Path**: Ironmankiller/yolov5-deepsort-mot-ffmpeg-dvpp-aipp ## Basic Information - **Project Name**: YOLOV5_DEEPSORT_MOT_FFMPEG_DVPP_AIPP - **Description**: 针对在边缘侧应用目标检测、识别、跟踪算法的任务需求,拟对小目标高精度检测、实时单目标跟踪、多目标检测识别跟踪等算法展开研究,并基于Atlas200平台进行部署实现。 - **Primary Language**: C/C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2021-10-25 - **Last Updated**: 2025-12-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 中文|[English](README.md) **本项目适配5.0.3.alpha005及以上版本,支持产品为Atlas200DK** 功能:整合基于RetinaNet实现的小目标检测,基于SORT与DeepSORT实现的多目标跟踪,基于DiMP实现的单目标跟踪。 样例输入:原始mp4文件、h264、h265文件、图像文件夹,来自通过网络连接的上位机的Jpeg图像输入。 样例输出:编码后的h264或者h265文件、JPG格式图像文件,通过网络输出Jpeg编码的图像或文本结果到上位机。 (上位机请在[仓库](https://gitee.com/Ironmankiller/yolov5-deepsort-mot-ffmpeg-dvpp-aipp)发行页面下载,仅支持win10及以上操作系统) ### 前提条件 部署此Sample前,需要准备好以下环境: - 请确认已按照[环境准备和依赖安装](https://gitee.com/ascend/samples/tree/master/cplusplus/environment)准备好环境。(注意:本项目的开发环境使用x86-64架构下的Ubuntu18.04环境,运行环境位于基于Arm64的Atlas200DK,所以需要分别准备环境) - 已完成对应产品的开发环境和运行环境安装。 ### 软件准备 1. 获取源码包。 开发环境,非root用户命令行中执行以下命令下载源码仓库。 **cd $HOME** **git clone https://gitee.com/Ironmankiller/yolov5-deepsort-mot-ffmpeg-dvpp-aipp.git** 2. 获取样例需要的测试数据。 执行以下命令进入项目data路径下。 **cd $HOME/YOLOV5_DEEPSORT_MOT_FFMPEG_DVPP_AIPP/data** 下载所有数据,[云盘链接](https://drive.google.com/drive/folders/10b73KPZoFV4bUJ17FAqOH2YZBbuwcM71?usp=sharing) 将下载好的所有文件解压,并拷贝到当前路径。 3. 获取样例需要的模型文件。 执行以下命令,进入样例的model文件夹中。 **cd $HOME/YOLOV5_DEEPSORT_MOT_FFMPEG_DVPP_AIPP/model** 下载对应的模型文件,[云盘链接](https://drive.google.com/drive/folders/14k2QPUjFRcjBjcPhUBdUHv-gvyoDii2M?usp=sharing) 将各个文件下的模型文件拷贝到当前路径下的同名文件夹中,例如: - 小目标检测样例 **mkdir retina** 将网盘中retina文件夹下的内容拷到retina路径 - 单目标跟踪样例 **mkdir dimp** 将网盘中dimp文件夹下的内容拷到dimp路径下 - 多目标跟踪样例 **mkdir yolo** 将网盘中yolo文件夹下的内容拷到yolo路径下 **mkdir deepsort** 将网盘中deepsort文件夹下的内容拷到deepsort路径下 ### 样例部署 1. 开发环境命令行中设置编译依赖的环境变量。 执行以下命令导入环境变量。开发环境为X86架构,运行环境为Arm架构,由于开发环境上同时部署了X86和Arm架构的开发套件,后续编译应用时需要调用Arm架构开发套件的ACLlib库,所以此处需要导入环境变量为Arm架构的ACLlib库路径。 **export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest/arm64-linux** **export NPU_HOST_LIB=$DDK_PATH/acllib/lib64/stub** 2. 切换到YOLOV5_DEEPSORT_MOT_FFMPEG_DVPP_AIPP目录,创建目录用于存放编译文件,例如,本文中,创建的目录为 **build/intermediates**。 **cd $HOME/YOLOV5_DEEPSORT_MOT_FFMPEG_DVPP_AIPP** **mkdir -p build/intermediates** 3. 切换到 **build/intermediates** 目录,执行cmake生成编译文件。 需要使用交叉编译器编译。开发环境为X86架构,运行环境为Arm架构,执行以下命令进行交叉编译。 **cd build/intermediates** **make clean** **cmake ../../ -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_BUILD_TYPE=Release** 4. 执行make命令,生成的可执行文件app在 **YOLOV5_DEEPSORT_MOT_FFMPEG_DVPP_AIPP/out** 目录下。 **make** ### 样例运行 1. 执行以下命令,将开发环境的 **YOLOV5_DEEPSORT_MOT_FFMPEG_DVPP_AIPP** 目录上传到运行环境中,例如 **/home/HwHiAiUser**,并以HwHiAiUser(运行用户)登录运行环境(Host)。 **scp -r $HOME/YOLOV5_DEEPSORT_MOT_FFMPEG_DVPP_AIPP HwHiAiUser@xxx.xxx.xxx.xxx:/home/HwHiAiUser** **ssh HwHiAiUser@xxx.xxx.xxx.xxx** ![](https://images.gitee.com/uploads/images/2020/1106/160652_6146f6a4_5395865.gif "icon-note.gif") **说明:** > - **xxx.xxx.xxx.xxx**为运行环境ip,200DK在USB连接时一般为192.168.1.2,300,RJ45连接时请自行设置,参见教程[连接Atlas 200 DK开发者板与Ubuntu服务器](https://support.huaweicloud.com/environment-deployment-Atlas200DK1011/atlased_04_0014.html)。 2. 运行可执行文件。 执行以下命令切换目录。 **cd $HOME/YOLOV5_DEEPSORT_MOT_FFMPEG_DVPP_AIPP/out** 切换目录后,执行以下命令运行样例。 - 查看帮助文档 **./app work** - 小目标检测样例 **./app work retina -i ../data/val2017_gray_jpg -o network_image xxx.xxx.xxx.xxx:16008** 输入为本地读图,输出为上位机收图,xxx.xxx.xxx.xxx为运行上位机的机器的IP。 - 多目标跟踪样例 **./app work sort -i ../data/MVI_40864 -o video output_video** 输入为本地读图,输出编码为视频,output_video为输出视频的路径 **./app work deepsort -i tcp -o network_result xxx.xxx.xxx.xxx:16007** 输入来自上位机,输出为跟踪结果,返回给上位机由上位机解析并显示。 - 单目标跟踪样例 **./app work dimp -i ../data/dimp/test6/6.mp4 -o image output_image** 输入为本地视频,输出编码为图像,output_image为输出图片所在的路径 ### 查看结果 运行完成后,会在运行环境的命令行中打印出推理结果,并在命令行参数-o设定的目录下生成推理后的图片、视频,或在推理的过程中实时将结果输出到由-o指定网络地址上所运行上位机。