0
点赞
收藏
分享

微信扫一扫

Segnet在CityScapes数据集上的训练和测试

1. 模型介绍

SegNet是一种语义分割网络,可以将图像分成不同的语义区域。它由Cambridge大学的研究人员开发,旨在解决计算机视觉中的语义分割问题。SegNet具有轻量级、快速、准确的特点,广泛应用于自动驾驶、医学图像分析、遥感图像分析等领域。

模型结构如下所示:

Segnet在CityScapes数据集上的训练和测试_预处理

2. 工作概述

我在开发工程中,分别进行了:数据处理,模型构建,模型训练,模型微调,模型测试。在每一个步骤中我都获得了莫大的收获。

数据预处理:将Cityscapes数据集转换为SegNet所需的格式,包括图像和标注。

模型训练:使用SegNet框架对预处理后的数据集进行训练,以获得适合于Cityscapes数据集的语义分割模型。部分训练日志如下所示:

UserWarning: downsample module has been moved to the pool module.

  warnings.warn("downsample module has been moved to the pool module.")

...............................................................................................................................................................................................................................................................................................................................................................................Epoch 1/100

 14/367 [>.............................] - ETA: 889s - loss: 2.4858 - acc: 0.0782

一开始效果不好,关键是池化层,最终添加核心池化层之后效果变好。池化层定义在这里贴一下:

class UnPooling2D(Layer):

    """A 2D Repeat layer"""

    def __init__(self, poolsize=(2, 2)):

        super(UnPooling2D, self).__init__()

        self.input = T.tensor4()

        self.poolsize = poolsize

    @property

    def output_shape(self):

        input_shape = self.input_shape

        return (input_shape[0], input_shape[1],

                self.poolsize[0] * input_shape[2],

                self.poolsize[1] * input_shape[3])

    def get_output(self, train):

        X = self.get_input(train)

        s1 = self.poolsize[0]

        s2 = self.poolsize[1]

        output = X.repeat(s1, axis=2).repeat(s2, axis=3)

        return output

   def get_config(self):

        return {"name":self.__class__.__name__,

            "poolsize":self.poolsize}

模型评估:使用评估指标(如IoU)对模型进行评估,以确定其在Cityscapes数据集上的性能。

模型应用:使用训练好的模型对Cityscapes数据集中的新图像进行语义分割,以获得图像中不同区域的语义信息。

3. 模型测试

在Jupyter中测试效果如下:

Segnet在CityScapes数据集上的训练和测试_预处理_02

4. 收获总结

在本次比赛中,我将SegNet用于了Cityscapes数据集进行测试,效果较好。我在本次学习中,掌握了SegNet的构建以及训练方法,对于相关的模型架构也有了更深的理解。

举报

相关推荐

0 条评论