基于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
之后是部署和推理,未完待续中…
总结与思考
未完待续中…
- 点赞
- 收藏
- 关注作者
评论(0)