EasyDL训练目标检测模型并在jetson-nano上部署(附数据集)

EasyDL专业版是EasyDL在2019年10月下旬全新推出的针对AI初学者或者AI专业工程师的企业用户及开发者推出的AI模型训练与服务平台,目前支持视觉及自然语言处理两大技术方向,内置百度海量数据训练的预训练模型,灵活支持脚本调参及Notebook两类开发方式,只需少量数据可达到优模型效果。
我们的部署目标硬件是jetson-nano板卡。根据硬件性能选择了SSD-MobileNetV1模型。

一、模型训练

1.数据准备,数据标注

数据集下载链接:https://pan.baidu.com/s/1GiIt7nQ10fQU2ytPuneUhA 密码:910o
该数据集包含133张车辆和行人的图片,已经按照easydl的格式生成标签。使用教程可以参考智东西的课程EasyDL的公开课还有哔哩哔哩百度大脑的资源。
加载数据集的时候可以加载一个或者多个数据集。
创建数据集:
在这里插入图片描述
智能标注:
使用智能标注功能可降低数据的标注成本(当前仅支持物体检测数据集)。启动后,系统会从数据集所有图片中筛选出最关键的图片并提示需要优先标注。通常情况下,只需标注数据集30%左右的数据即可训练模型。与标注所有数据后训练相比,模型效果几乎等同。如果是数据量比较小也可以在easydl上手工标注。在PC本地标注然后转换成easydl的数据标注格式也是一种方法。

数据标注的时候注意太小的目标没必要标注,本身SSD对小目标识别能力不强。大部分被遮挡的目标也不用标注。标注的框框和实物大小匹配,不宜标注的过大或者过小。

easydl会自动分配训练集和验证集。并且会对数据集检查分类是否均衡,数据是否充足等。

2.模型调参

  1. 在模型调参的时候有个非常好用的功能是任务对比。比如对比默认的数据增强和自动搜索数据增强的训练结果,如下图:
    在这里插入图片描述
    在这里插入图片描述
  2. 自动搜索数据增强和手动设置数据增强是两种easydl提供的数据增强方法。一般情况下自动搜索的数据增强比手动设置数据增强的效果要好。在选择自动搜索数据增强方法的时候,可以人工去掉一些显然不合理的数据增强方法。数据增强非常重要,但不是每种数据增强都会产生正向作用,需要根据自己的数据集和应用场景确定,当然我们的数据集要和实际推理的场景一致。自动搜索数据增强方式也是分析我们训练数据集确定参数。
  3. 密集评测模型
    “eval_interval”: 5, # 控制评估的间隔迭代数, 过多的评估会影响模型训练速度,过少的评估会影响最优指标模型的挑选。
    这是SSD-MobileNetV1脚本调参的一个参数。如果设置成5,那么每迭代5次,easydl会评估一下模型的指标,并且存储指标最优的模型。也就是说存储的结果未必是最后的模型,而是在不断的存储指标最好的模型。这是easydl非常好的一点。
  4. 训练的迭代次数和学习率衰减
    对于训练迭代次数的确定,一方面训练迭代次数太小训练不充分,会发生欠拟合。训练迭代次数太多可能过拟合。具体怎么去确定训练的迭代次数,可以引入评测集,用相同的评测集可以评估不同版本的训练结果,也可以通过评测集观察是否发生过拟合。
    在这里插入图片描述
    easydl的训练log日志分析也是很有价值的。如果观察日志,发现训练过程当中模型的评估指标大趋势一直在变优,那说明当前的学习率是不需要发生变化的。什么时候评估指标在反复波动、时好时坏,这时候需要衰减学习率了。通过日志不难发现,easydl的物体检测模型学习率其实有3个量级。例如初始学习率是0.004,下一个是0.0004,最后衰减成0.00004。发生0.0004学习率衰减的时候应该在整体训练迭代次数的60%到70%的位置,换句话说0.004的学习率占全程的60%到70%时间。观察训练过程当中模型指标的变化,如果指标反复波动,当前的训练迭代次数是整体的60%到70%,大约能评估应该设置的模型迭代次数也就是"epochs"这个参数。(这段话是一个思路,需要根据情况灵活使用)
  5. “aspect_ratios”
    在SSD-MobileNetV1模型里这些参数是固定的。但是物体检测模型aspect_ratios的设置是很重要的。easydl后面会推出工具,根据训练集的特点生成推荐的aspect_ratios参数,是不是很方便。
  6. 评测集加到训练集
    最后是把数据集扩充一下,评测集加入到训练集当中。因为毕竟数据才是天花板。训练的手段再多,再花费心思调整参数实验对比,也是基于数据这个基础。数据是最基础的,数据增强是性价比最高的。把评测集加入到训练集以后可以适当增加epochs。
  7. input_size设置
    该参数调整的地方是输入图片的大小。默认是640,“input_size”: 640。较大的输入尺寸有利于识别小目标。

3.发布模型

在这里插入图片描述
选择自己的项目和版本可以发布自己的模型。

二、Jetson板卡环境搭建

这部分内容参考JETSON-Nano刷机运行deepstream4.0的demo
注意deepstream4.01不需要安装,把SD卡的系统镜像安装即可。
确认自己的系统版本是jetson-nano-sd-r32.2.1.zip JetPack4.2.2版本

三、模型部署

在这里插入图片描述
下载SDK,把SDK放到jetson-nano里解压编译
unzip EasyEdge-Linux-mxxxx-bxxxx-Jetson.zip
这时会出现2个文件夹 RES和app
RES是存储模型相关的文件
app是需要编译的sdk。注意jetson-nano首次推理需要联网。
cd cpp
tar zxf baidu_easyedge_linux_cpp_aarch64_JETSON_v0.5.3_gcc7.4_20200514.tar.gz
cd baidu_easyedge_linux_cpp_aarch64_JETSON_v0.5.3_gcc7.4_20200514
cd lib
sudo cp * /usr/lib //先把库文件拷贝到系统的lib位置
把demo_batch_inference.cpp里面的序列号填上。去掉注释,要推理完成后存储图片。如下图
在这里插入图片描述
cd demo
mkdir build
cd build
cmake …
make -j3
./easyedge_batch_inference ~/RES/ ~/image/3.png
在这里插入图片描述
下图是推理结果:
在这里插入图片描述
可能是标注的时候框框画的太大了。框框回归可以再好些。
最后把easydl的网址附上 https://ai.baidu.com/easydl/pro/

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值