AI创造营大作业–应用paddlex完成对自定义车道路的语义分割
一直想实现对车道的语义分割,接着这个机会去使用paddlex来从零开始实现,并且加深一下自己的理解!其实本来我是想用paddleseg做的,但是我看了模型训练的那个直播说要是想快速的开始训练的话可以用paddlex和paddlehub,然后这里的我们去尝试一下paddlex,我也是第一次使用!
一 、项目背景
我采集了我们学校的后山道路的图片,一个1000多张,想要使用语义分割去得到道路,然后根据返回的道路在去得到前进的方向,本来打算使用paddleseg去做的,但是在直播时说到,先考虑paddlehub和paddlex,所以这里也是我第一次使用paddlex,也会记录自己的实现的整个过程吧!
然后这里我们先看一下最终的结果:
二、 数据集简介
数据集的话我是控制小车,然后写了个脚本去定时收集道路数据,这里就不介绍了不是重点,然后我们先看一下数据集:
然后的话对于数据集标注的话开始我使用的是labelme,但是太慢了我一个人标1000张得标到什么时候,后来我了解到了交互式分割标注工具eiseg,然后我在官网去安装的时候怎么也安装不上,各种报错,当我要放弃时,GT大佬发了一个exe的文件夹给我,很是感谢,然后的话我就去标注了
记住保存时不要自定义路径,就按它的来,否则保存了会发现你的文件夹并没有(血的教训)
然后再标了两次之后终于标完了
因为像素是在0-1之间,所以我们人眼看不出来,后面会代码处理一下就行了。
三、 paddlex使用
初探paddlex
飞桨全流程开发工具,集飞桨核心框架、模型库、工具及组件等深度学习开发所需全部能力于一身,打通深度学习开发全流程。
我们这里先对paddlex进行安装:
! pip install paddlex==2.0.0rc4
这里我想要去打开GitHub,但是发现进不去,然后我去下载了郑佬在直播时分享的工具,现在妈妈再也不用担心我进步不去了(手动狗头),真是秒进呀,感谢郑佬分享!
这里我是进到了一个官方的一个实例:可以点进去看一下,然后先了解一下paddlex怎么使用!
从官网我们可以看到我们要去训练模型要需要3个步骤,我们先看第一步数据增强,这里我们注意一下对于训练我们是对数据进行数据增强的但是对预测我们不对数据进行操作,所以我们来看一下这个增强的代码:
数据增强
from paddlex import transforms as T
train_transforms = T.Compose([
T.Resize(target_size=512),
T.RandomHorizontalFlip(),
T.RandomCrop(),
T.Normalize(
mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),
])
eval_transforms = T