基于ModelArts和CANN的端到端行人检测和跟踪Demo(Python版本)【训练篇】

举报
Tianyi_Li 发表于 2022/06/19 21:22:08 2022/06/19
【摘要】 基于华为云ModelArts和昇腾CANN实现从训练到部署的端到端行人检测和跟踪Demo,这里的CANN使用的是Python接口(Python版本)。

前言

基于华为云ModelArts和昇腾CANN实现从训练到部署的端到端行人检测和跟踪Demo,这里的CANN使用的是Python接口(Python版本)。

在ModelArts完成开发和模型训练

华为云ModelArts供海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期 AI 工作流。

image.png

基于华为云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),同时建议大家划分数据集再训练。

我使用的超参数设置如下图所示:

image.png

训练

硬件规格:

使用的是华为云ModelArts提供的[限时免费]规格,具体如下:

  • 计算节点个数:1
  • 规格:GPU: 1 * NVIDIA-V100(32GB) | CPU: 8 核 64GB | 780GB
  • 预置镜像:TensorFlow | TF-1.13.1-python3.6

训练日志截图:

image.png

资源占用情况截图:

image.png

可以看到算法很高效,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

image.png

之后是部署和推理,未完待续中…

总结与思考

未完待续中…

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。