前言
FCN是一种用于图像语义分割的全卷积网络,可以端到端进行像素级预测。
语义分割
图像语义分割是图像处理和机器视觉技术中的重要一环,旨在对图像中的每个像素进行分类。与普通的分类任务不同,语义分割任务输出与输入大小相同的图像,输出图像的每个像素对应了输入图像每个像素的类别。语义分割常被应用于人脸识别、物体检测、医学影像、卫星图像分析、自动驾驶感知等领域。
模型简介
FCN是一种用于图像分割的端到端的深度学习方法,通过全卷积神经网络实现像素级的预测,主要使用卷积化、上采样和跳跃结构等技术来实现图像分割。通过将全连接层转换为卷积层,利用上采样和跳跃结构获取更多的局部和全局信息,得到与原图大小相等的分割结果。
网络特点
全卷积网络不需要全连接层,可以处理任意尺寸的输入。反卷积层可以输出精细的结果,而跳级结构可以结合不同深度层的结果,同时保证网络的鲁棒性和精确性。
数据处理
数据预处理
由于PASCAL VOC 2012数据集中图像的分辨率大多不一致,无法放在一个tensor中,故输入前需做标准化处理。
数据加载
训练集可视化
这段文字描述了在卷积神经网络中进行池化和卷积操作后,通过反卷积实现不同尺寸的输出。FCN-32s、FCN-16s和FCN-8s分别通过反卷积将输出图像的尺寸扩大到与输入图像相同,并在不同层级上融合特征图以实现更精细的语义分割。
训练准备
导入VGG-16部分预训练权重
FCN使用VGG-16作为骨干网络,用于实现图像编码。使用下面代码导入VGG-16预训练模型的部分预训练权重。
损失函数
语义分割是图像分类的一种形式,通过对图像中的每个像素点进行分类来实现。在语义分割中,使用交叉熵损失函数来计算FCN网络输出与mask之间的损失,这里采用了mindspore.nn.CrossEntropyLoss()作为损失函数。
模型训练
模型推理
使用训练的网络对模型推理结果进行展示。
总结
FCN提出了使用全卷积层进行端到端图像分割的方法,相比传统的CNN方法,具有接受任意大小输入图像和更高效的优点。然而,FCN仍存在两个问题:分割结果不够精细,特别是在边界处;而且没有充分考虑像素与像素之间的关系,缺乏空间一致性。