原理讲解-项目实战 <->基于语义分割实现斑马线道路划分

点击上方码农的后花园”,选择星标” 公众号

精选文章,第一时间送达

好久没有更新语义分割系列的文章了,但是大家放心,我会持续更新的,话不多说,这期就讲解基于MobileNet的SegNet语义分割实现斑马线的划分~

往期系列:

新教程之图像分割系列

图像分割系列 <-> 语义分割

语义分割中单类别和多类别图片数据标注,以及灰度类别转换

还没有看过的fans,可以先看一下哦~

前言:

语义分割基础模型结构图如下,也就是Convolutional Enconder-Decoder的结构,也就是卷积层编码Enconder与解码Deconder的过程。

编码Encoder的过程就是对我们Input的图片通过特征提取网络不断进行特征提取,这个过程中图片的长和宽不断的进行压缩,通道也会变得越来越大。

解码Decoder的过程就是对特征提取网络最终提取到的特征层进行长和宽的不断的放大,放大到和原图差不多的尺寸。

然后再对每一个像素点进行分类,最终我们得到每个像素点所属的类是什么, 如下图所示:

总结: 输入图片—>编码Enconder(特征提取网络提取特征)—> Deconder(将提取到的特征放大)—>对像素点进行分类。

SegNet语义分割模型

模型实现流程图:

在结构图中,输入一张图片在Enconder中进行卷积特征提取到f4层时(图片的宽和高压缩了4次之后的特征层),我们对该特征层进行Deconder处理。

Deconder主要是对提取到的f4有效特征层进行上采样Upsampling2D进行3次上采样(图片的宽高放大)处理,最后我们得到一个具有一定宽w和高h的通道数为filter=n_classes的特征层,最后一个卷积Conv2D, filter设置为n_classes是因为filter代表的是每个像素点所属的种类的类别总数。

总结:首先利用主干特征提取网络MobileNet(下采样)提取图像的特征,得到5个不同大小的有效的特征层,然后Segnet对特征层解码(一系列的上采样upSampling2D),利用softmax函数对每个像素点进行分类,最后保存整个模型。

MobileNet模型原理讲解:

代码下载:原理讲解-项目实战 <-> MobileNet模型的讲解和训练

训练自己的语义分割模型

使用主干特征提取网络为MobileNet的SegNet语义分割模型实现划分斑马线。

数据集:斑马线数据集

训练图片:

训练标签:

单独拿图片4.jpg的标签,我们可以看到4.jpg对应的标签4.png像素值仅由000和111组成,原图斑马线部分对应的标签像素值为111,而其它部分的像素值为000,分别对应RGB三通道。

对于语义分割数据集来讲,它的标签的每一个像素点的值就代表了它所属的种类,在本项目中分两类:背景和斑马线,背景区域所对应的像素值为000,而斑马线区域对应的像素值为111。

如果是多分类,那么还会存在222、333这样的RGB值的像素点,像素点的不同像素值代表该像素点属于不同的类别。

项目结构

dataset2里面的jpg文件夹存放的是我们数据集中对应的原图,而png文件夹存放的是我们原图所对应的标签,而train.txt里面存储的原图和其标签的对应关系。

模型代码实现流程:

主干特征提取网络MobileNet:提取图片特征,获取5个不同大小的有效的特征层,详情请见 mobilenet.py 文件。

SegNet解码网络,对特征层进行解码(一系列的上采样upSampling2D),详情请见segnet.py。

最后利用softmax函数对每个像素点进行分类,最后保存整个模型。

模型训练

训练50个epoch,训练文件详情见train.py,训练后保存训练权重。

使用到的损失函数是交叉熵损失函数,y_true代表真实标签,y_pred代表的是预测标签,实际上就是比较预测的标签和真实标签的像素值(代表类别)之间的交叉熵,优化器使用的是Adam。

训练结果:

模型预测:

四、代码下载和环境设置

代码下载,后台回复关键字:项目实战,即可获取。

环境

  • python==3.6

  • tensorflow-gpu==1.13.1

  • keras==2.1.5

精彩推荐:

新教程之图像分割系列

图像分割系列 <-> 语义分割

语义分割中单类别和多类别图片数据标注,以及灰度类别转换

更多优质内容?等你点在看

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值