Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
tjulitianyi 93ca0f238f | 1 year ago | |
---|---|---|
common | 1 year ago | |
data | 1 year ago | |
model | 1 year ago | |
src | 1 year ago | |
.gitignore | 1 year ago | |
LICENSE | 1 year ago | |
README.md | 1 year ago | |
README_CN.md | 1 year ago | |
requirements.txt | 1 year ago |
仅供学习使用,不保证精度,请不要用于商业或其他营利活动!
本README只提供命令行方式运行样例的指导。
功能介绍:使用YOLOv4模型对视频进行预测推理,输出带有推理结果的视频文件。这里提供两种功能:
样例输入:视频文件。
样例输出:带推理结果的视频文件。
请检查以下条件要求是否满足,如不满足请按照备注进行相应处理。如果CANN版本升级,请同步检查第三方依赖是否需要重新安装(5.0.4及以上版本第三方依赖和5.0.4以下版本有差异,需要重新安装)。
条件 | 要求 | 备注 |
---|---|---|
CANN版本 | >=5.0.4 | 请参考CANN样例仓介绍中的安装步骤完成CANN安装,如果CANN低于要求版本请根据版本说明切换samples仓到对应CANN版本 |
硬件要求 | Atlas200DK/Atlas300(ai1s) | 当前已在Atlas200DK和Atlas300测试通过,产品说明请参考硬件平台 ,其他产品可能需要另做适配 |
第三方依赖 | opencv,python-acllite | 请参考第三方依赖安装指导(python样例)选择需要的依赖完成安装 |
说明:本样例是华为云ECS上测试的,ECS规格为AI加速型 | ai1s.large.4 | 2vCPUs | 8GiB,系统版本:Ubuntu 18.04 server 64bit,使用的是官方活动分享的镜像,镜像名称为300-5.1.RC2.alpha005。
.
├── common
│ ├── acllite
│ │ ├── acllite_imageproc.py
│ │ ├── acllite_image.py
│ │ ├── acllite_logger.py
│ │ ├── acllite_model.py
│ │ ├── acllite_resource.py
│ │ ├── acllite_utils.py
│ │ ├── cameracapture.py
│ │ ├── constants.py
│ │ ├── dvpp_vdec.py
│ │ ├── __init__.py
│ │ ├── lib
│ │ │ ├── acllite_so.py
│ │ │ ├── atlas200dk
│ │ │ │ └── libpython_acllite.so
│ │ │ ├── __init__.py
│ │ │ └── src
│ │ │ ├── acllite_utils.h
│ │ │ ├── camera.cpp
│ │ │ ├── camera.h
│ │ │ └── Makefile
│ │ ├── presenteragent
│ │ │ ├── __init__.py
│ │ │ ├── presenter_agent.py
│ │ │ ├── presenter_channel.py
│ │ │ ├── presenter_datatype.py
│ │ │ ├── presenter_message_pb2.py
│ │ │ ├── presenter_message.proto
│ │ │ ├── presenter_message.py
│ │ │ └── socket_client.py
│ │ ├── README_CN.md
│ │ ├── README.md
│ │ └── videocapture.py
│ ├── README_CN.md
│ └── README.md
├── data
│ └── camera0.mp4 # 这里应该放置测试视频,名称固定为camera0.mp4
├── LICENSE
├── model
│ └── yolov4_bs1.om # 这里应该放置转换好的om模型
├── README_CN.md
├── README.md
├── requirements.txt
└── src
├── helpers.py
├── kalman_filter.py
├── linear_assignment__.py
├── log_utils.py
├── MySort.py
├── sort.py
├── stats.py
├── utils.py
├── yolov4.py
└── yolov4_utils.py
运行样例,请在CANN运行用户下操作,一般安装用户是HwHiAiUser
。
获取源码包。
命令行方式下载。
# 开发环境,非root用户命令行中执行以下命令下载源码仓。
cd ${HOME}
git clone https://git.openi.org.cn/tjulitianyi/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video.git
OBS下载。下载链接为:
暂未提供
百度网盘方式下载。下载链接为:
暂未提供
ModelArts AI Gallery下载链接
https://developer.huaweicloud.com/develop/aigallery/dataset/detail?id=d95a909a-b998-4553-97c0-eff7de2a6034
特别说明:建议采用 命令行方式下载,这样可以获取最新的更新。
获取此应用中所需要的原始网络模型。
模型名称 | 模型说明 | 模型下载路径 |
---|---|---|
yolov4 | 基于onnx-YOLOV4的目标检测模型。 | 请参考https://www.hiascend.com/zh/software/modelzoo/detail/1/abb7e641964c459398173248aa5353bc 下载原始模型。 |
# 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。也可以参照上表在modelzoo中下载并手工转换,以了解更多细节。
cd ${HOME}/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video/model
wget https://temp-dataset.obs.cn-north-4.myhuaweicloud.com:443/cann/temp/yolov4_dynamic_bs.onnx
atc --model=./yolov4_dynamic_bs.onnx --framework=5 --output=yolov4_bs1 --input_format=NCHW --soc_version=Ascend310 --input_shape="input:1,3,608,608" --out_nodes="Conv_434:0;Conv_418:0;Conv_402:0"
若上述方法无法下载,可到百度网盘下载。下载链接为:
链接:https://pan.baidu.com/s/1zFrrbOwK0_EKRZva2RIhRQ?pwd=a3bl
提取码:a3bl
模型转换较为耗时,资源消耗也较大,本模型大约占用了4GB内存,耗时4分钟转换完成,若想直接体验,可以直接下载转换好的om模型,下载链接为:
链接: https://pan.baidu.com/s/1Fp8KyDp_SN4lk5hdXSht7A?pwd=pmme
提取码: pmme
获取样例需要的测试视频。
# 执行以下命令,进入样例的data文件夹中,下载对应的测试图片。
cd $HOME/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video/data
wget https://temp-dataset.obs.cn-north-4.myhuaweicloud.com:443/cann/temp/camera0.mp4
cd ../src
若上述方法无法下载,可到百度网盘下载。下载链接为:
链接:https://pan.baidu.com/s/1mzEjAAkEqIsuwVBPGtUbTA?pwd=xcft
提取码:xcft
说明 如果您已有Python
环境,可以尝试直接运行,根据报错,安装相应的库即可;如果您没有环境,可以考虑按照 requirements.txt 配置好相关库,虽然已经尽量减少依赖,但是还有有些第三方库,因此这一步还是很有必要的。
注:开发环境与运行环境合一部署,请跳过步骤1,直接执行步骤2即可。
执行以下命令,将开发环境的 YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video 目录上传到运行环境中,例如 /home/HwHiAiUser,并以HwHiAiUser(运行用户)登录运行环境(Host)。
# 【xxx.xxx.xxx.xxx】为运行环境ip,200DK在USB连接时一般为192.168.1.2,300(ai1s)为对应的公网ip。
scp -r $HOME/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video HwHiAiUser@xxx.xxx.xxx.xxx:/home/HwHiAiUser
ssh HwHiAiUser@xxx.xxx.xxx.xxx
cd ${HOME}/YOLOV4_Pedestrian_Tracking_and_Social_Distance_Judgment_video/src
运行工程,请务必使用python3.6
运行,不要使用其他版本。
(1)对输入视频进行目标检测(支持COCO数据集的80类目标检测)。
python3.6 yolov4.py ../data/camera0.mp4 0
运行期间,AI Core利用率在38%左右,运行耗时近3分钟,这应该是Python效率较低,导致AI Core的利用率较低,耗时也较长,如果用C++实现,性能应该能提升很大。最终输出视频约117M。
(2)对输入视频中的行人进行检测、跟踪,绘制运行轨迹和判断行人间的社交距离,并给予风险提示,此外,还提供当前画面行人数量,通过视频指定位置的行人数量和总计行人数量的统计。
python3.6 yolov4.py ../data/camera0.mp4 1
运行期间,AI Core利用率在22%左右,且CPU利用率明显提升,在68%左右,应该是跟踪算法对CPU依赖较大,运行耗时近4分钟,这应该还是Python效率较低,导致AI Core的利用率较低,耗时也较长,看来部署推理,还是应该选择效率高的C/C++。最终输出视频约113.82M。
这里使用OpenCV保存下来的视频很大,接近原来输入视频的4倍大小,推测可能是视频压缩的不够,或者是输出视频的数据速率、总比特率远大于原视频,具体原因暂不知,查阅资料得知imageio保存视频文件会小一些,如有需要可自行测试。
运行完成后,输出视频存在out目录下(注意输出视频默认与输入视频名称一致,若多次运行或运行不同功能会覆盖之前结果)。
对输入视频进行目标检测(支持COCO数据集的80类目标检测)的演示视频
对输入视频进行目标检测,支持COCO数据集的80类目标检测,会对检测目标绘制矩形框并在框的左上角显示类别。
对输入视频中的行人进行检测、跟踪,绘制运行轨迹和判断行人间的社交距离,并给予风险提示,此外,还提供当前画面行人数量,通过视频指定位置的行人数量和总计行人数量的统计的演示视频
对输入视频中的行人进行检测、跟踪,绘制运行轨迹和判断行人间的社交距离,并给予风险提示,如果行人距离过近,会提示“High Risk",远离后会显示“Low Risk”,此外,还在视频左上角提供当前画面行人数量,通过视频指定位置(默认设定为视频中间,颜色为绿色)的行人数量和总计行人数量的统计;
请参考常见问题定位对遇到的错误进行排查。如果wiki中不包含,请在samples仓提issue反馈。
联系邮箱:tjulitianyi@163.com
No Description
Python Markdown C++ C Makefile other
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》