基于ModelArts和CANN的端到端行人检测和跟踪Demo(Python版本)【训练篇】
前言
基于华为云ModelArts和昇腾CANN实现从训练到部署的端到端行人检测和跟踪Demo,这里的CANN使用的是Python接口(Python版本)。
在ModelArts完成开发和模型训练
华为云ModelArts供海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期 AI 工作流。
基于华为云ModelArts一站式AI开发平台,可以很
数据集
这里我提供了数据集,大家可到AI Gallery下载到自己的OBS桶,方便后续训练使用。注意,下载到OBS需要占用OBS的存储,这需要一定花费,请确保余额充足或有代金券可以抵扣。
这里顺便简单说下AI Gallery:
AI Gallery 是人工智能知识与实训专区,包含超多优质 AI 资产:算法、模型、数据、论文…模型订阅即可快速使用,零门槛上手 AI 开发;为新手定制完整成长路线,快速进阶 AI 开发达人。
我们使用的是基于公开数据集整理的行人数据集,具体信息如下:
- 样本数量: 4526张图片
- 标注格式:VOC标注格式
- 标签:person
- 标签数量:11183
- 数据集划分:未做划分
特别说明:
为了节省花费,我们这里使用ModelArts的免费体验规格训练,后续会详细介绍,使用默认参数下,训练时间超过了免费体验规格的1小时体验时长会导致训练失败。因此,建议大家减少训练epoch,比如设置max_epochs=100
(默认参数下,max_epochs=200),同时建议大家划分数据集再训练。
我使用的超参数设置如下图所示:
训练
硬件规格:
使用的是华为云ModelArts提供的[限时免费]规格,具体如下:
- 计算节点个数:1
- 规格:GPU: 1 * NVIDIA-V100(32GB) | CPU: 8 核 64GB | 780GB
- 预置镜像:TensorFlow | TF-1.13.1-python3.6
训练日志截图:
资源占用情况截图:
可以看到算法很高效,GPU和GPU的占用率和利用率稳定且较高,以GPU为例,显存占用率和利用率都很高,分别达到了90%以上和80%以上,充分发挥硬件算力。
本次训练未经调优,得到的精度指标为:
f1 | recall | precision | accuracy | mAP |
---|---|---|---|---|
0.6949 | 0.6049 | 0.8163 | 0.8163 | 0.5326 |
说明:
- 根据每种分类的置信度对样例进行排序,逐个把样例加入正例进行预测,算出此时的精准率和召回率。使用这一系列的精准率和召回率绘制的曲线,即是一个类别的P-R曲线。
- 平均精度均值(Mean Average Precision, mAP):计算每个类别P-R曲线下面积得到每个类别的平均精度(AP),所有AP的均值即为平均精度均值(mAP)。
- 因为我们这里仅针对行人检测,所以类型只有人,即
class_name: "person"
,其对应的class_id: 0
。
可以看到精度指标还有提升空间,这里附上一些建议,需要注意的是,此建议是对在上述数据集上按照上述超参数设置的训练的分析,并不适用所有情况,要具体情况具体分析:
- 背景漏检数量为321,超过标注框总数的20%。
建议使用Balanced Loss来进行目标框回归计算。 - 非极大值抑制的IoU预置在0.40时,模型的mAP最高;分类置信度的预置在0.33时,各个类别的平均F1值最高。
建议推理时,将阈值设置为上述两个值。这点比较重要,在后续部署的时候,我们会用到。 - 目标框清晰度对person的召回率有重大影响,在不同特征区间上mAP的方差为0.208。
建议在训练时,添加针对此特征的数据增强。这里提醒一下,对数据集的特征分析和数据增强,可以使用ModelArts的数据集管理来做,便捷高效。
在ECS基于CANN完成模型部署和推理
环境配置
基本配置
这里,我们使用的是CANN体验官第五期提供的镜像300-5.1.RC2.alpha005
,我的弹性云服务器配置如下:
AI加速型 | ai1s.large.4 | 2vCPUs | 8GiB | Ubuntu 18.04 server 64bit | 5.1.RC2.alpha005
就是一台最简配的CPU(x86) + Ascend 310的ECS,不过也足够我们个人开发使用了。
第三方依赖安装
请参照第三方依赖安装指导(python样例),完成第三方依赖安装便于后续开发。
注意事项:
若执行如下命令遇到问题:
sudo apt-get install python3-pip
若报错:
E: Unable to locate package python3-pip
应该是因为没有更新,可先更新,命令如下:
sudo apt-get update
之后再执行之前的命令即可。
安装Python第三方库
建议用如下命令:
python3.6 -m pip install scipy --user -i https://mirrors.huaweicloud.com/repository/pypi/simple
可将
scipy
换成你想安装的库名。
最后来看看我们的环境变量:
模型转换
原始模型yolo3_resnet18.pb要求的输入是宽度为640,高度为352、3通道的RGB格式的图像
- 使用AIPP,做归一化操作(设置每个通道方差的倒数为0.003922,即1/255)
atc --model=./yolo3_resnet18.pb --framework=3 --output=yolo3_resnet18_aipp_bs1 --input_format=NHWC --soc_version=Ascend310 --input_shape="images:1,352,640,3" --log=info --insert_op_conf=insert_op_conf.cfg
之后是部署和推理,未完待续中…
总结与思考
未完待续中…
基于ModelArts和CANN的端到端行人检测和跟踪Demo(Python版本)【训练篇】相关推荐
- ModelArts 与HiLens Kit联合开发丨行人社交距离风险提示Demo
摘要:本Demo使用YOLOv3_Resnet18模型来检测的视频流中的行人,获取行人坐标(即图中蓝色方框),然后计算所有检测到的人之间的相互"距离". 作者:华为云EI专家厉天一 ...
- Chained-Tracker:链式成对关注回归结果,用于端到端联合多目标检测和跟踪
1.文章信息 本文是腾讯优图团队和复旦大学.日本奈良先端科学技术大学院大学一起完成的一项工作,是2020年7月底提交到arXiv中的一篇文章. 2.摘要 现有的多目标跟踪(MOT)方法要么遵循检测跟踪 ...
- 在服务器上搭建基于yolo3 与crnn 实现中文自然场景文字检测及识别,GPU版本
Github地址 参考地址 作者大人,十分热心,对于我的问题,提供了大量的帮助,使我少走了很多的弯路,在此表示由衷的感谢 注意事项 使用nvidia-smi命令查看cuda的版本,必须是10.1或者1 ...
- 无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现
无人驾驶汽车系统入门(二十六)--基于深度学习的实时激光雷达点云目标检测及ROS实现 在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的 ...
- 检测跟踪 DeepSOCIAL:基于YOLOv4的人群距离监测 集检测、跟踪以及逆透视映射一体的系统
论文:https://doi.org/10.3390/app10217514 代码:https://github.com/DrMahdiRezaei/DeepSOCIAL https://github ...
- 基于激光雷达点云的3D目标检测算法—端到端多视图融合
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨Rubicon007@知乎 来源丨https://zhuanlan.zhihu.com/p/44 ...
- 丢弃Transformer!旷视和西安交大提出基于FCN的端到端目标检测网络
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文作者:王剑锋 | 编辑:Amusi https://zhuanlan.zhihu.com ...
- 基于深度学习的端到端人脸识别技术:全面调研
44页,共计371篇参考文献.本文全面介绍了端到端深度学习人脸识别技术,包括人脸检测,人脸预处理和人脸表征等方向,详细介绍了最新的算法设计,评估指标,数据集,性能比较等. The Elements o ...
- 基于Docker的开源端到端开发者平台
今天和大家一起分享的是一个基于Docker的适用于多平台的端到端开发者平台,Appwrite Appwrite,可以适用如Flutter.Vue.Angular.React.iOS.Android等众 ...
最新文章
- 操作系统思考 第二章 进程
- Python 调试工具 PDB(Linux 环境下调试)
- 从90年代的SRNN开始,纵览循环神经网络27年的研究进展
- Vue.js 运行机制全局概览浅读
- 开源公司黄页之腾讯开源软件推荐
- sublime text3的一些小技巧记录(配gif图)
- P1725 琪露诺 题解(单调队列)
- linux系统声卡安装教程,Linux操作系统声卡驱动的安装与配置
- Shiro 实战教程(上)
- 一键发圈,一键转发到微信朋友圈或者微信好友
- 电池包IPX9K、IPX9测试目的
- 教你如何用PCtoLCD2002生成字模以及软件的下载
- python代码~小人比心表白
- epub 电子书的制作
- PostgreSQL 源码解读(32)- 查询语句#17(查询优化-表达式预处理#2)
- 啥叫工程?啥叫工程师?
- postgis routing pgr_dijkstra道路拓扑分析与方向分析
- java[1,2]错题整理
- 火山视窗树形框实现取所有根项目文本
- SQL将两列合并为一列