首页 > 其他分享 >昇思25天学习打卡营第10天|xkd007|计算机视觉应用实践(1)-FCN(全卷积网络)图像语义分割

昇思25天学习打卡营第10天|xkd007|计算机视觉应用实践(1)-FCN(全卷积网络)图像语义分割

时间:2024-07-03 13:30:11浏览次数:3  
标签:25 分割 10 卷积 16 语义 图像 打卡 FCN

FCN图像语义分割

全卷积网络(Fully Convolutional Networks,FCN)是UC Berkeley的Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation(点击可下载此论文)一文中提出的用于图像语义分割的一种框架

FCN是首个端到端(end to end)进行像素级(pixel level)预测的全卷积网络

 

1 语义分割

在具体介绍FCN之前,首先介绍何为语义分割

图像语义分割(semantic segmentation)是图像处理和机器视觉技术中关于图像理解的重要一环,AI领域中一个重要分支,常被应用于人脸识别、物体检测、医学影像、卫星图像分析、自动驾驶感知等领域。

语义分割的目的对图像中每个像素点进行分类。与普通的分类任务只输出某个类别不同,语义分割任务输出与输入大小相同的图像,输出图像的每个像素对应了输入图像每个像素的类别。语义在图像领域指的是图像的内容,对图片意思的理解,下图是一些语义分割的实例:

2 模型简介

FCN主要用于图像分割领域,是一种端到端的分割方法,是深度学习应用在图像语义分割的开山之作。通过进行像素级的预测直接得出与原图大小相等的label map(一个数据结构,用于将标签(或键)映射到它们对应的值)。因FCN丢弃全连接层替换为全卷积层网络所有层均为卷积层,故称为全卷积网络

*知识拓展卷积神经网络(CNN)一般由①卷积层(Convolutional Layer)、②汇聚层(Pooling Layer)和③全连接层构成(Fully connected layer);全卷积网络(FCN)将全连接层也已换成了卷积层。

全卷积神经网络主要使用以下三种技术:

  1. 卷积化(Convolutional)

    使用VGG-16(一种深度卷积神经网络(CNN)架构,由牛津大学的视觉几何组(Visual Geometry Group,简称VGG)的研究人员在2014年提出。VGG-16是VGG模型的一个变种,它包含16层深度,包括13个卷积层和3个全连接层。)作为FCN的backbone(预训练的神经网络模型,可以被用作特征提取器,帮助新模型学习)。VGG-16的输入为224*224的RGB图像,输出为1000个预测值。VGG-16只能接受固定大小的输入,丢弃了空间坐标,产生非空间输出。VGG-16中共有三个全连接层,全连接层也可视为带有覆盖整个区域的卷积。将全连接层转换为卷积层能使网络输出由一维非空间输出变为二维矩阵,利用输出能生成输入图片映射的heatmap(热图,可以用于展示图像中特定特征的分布,如边缘检测或物体识别)。

    fcn-3

  2. 上采样(Upsample)

    在卷积过程的卷积操作和池化操作会使得特征图的尺寸变小,为得到原图的大小的稠密图像预测,需要对得到的特征图进行上采样操作。使用双线性插值的参数来初始化上采样逆卷积的参数,后通过反向传播来学习非线性上采样。在网络中执行上采样,以通过像素损失的反向传播进行端到端的学习。

    fcn-4

  3. 跳跃结构(Skip Layer)

    利用上采样技巧对最后一层的特征图进行上采样得到原图大小的分割是步长为32像素的预测,称之为FCN-32s。由于最后一层的特征图太小,损失过多细节,采用skips结构将更具有全局信息的最后一层预测和更浅层的预测结合,使预测结果获取更多的局部细节。将底层(stride 32)的预测(FCN-32s)进行2倍的上采样得到原尺寸的图像,并与从pool4层(stride 16)进行的预测融合起来(相加),这一部分的网络被称为FCN-16s。随后将这一部分的预测再进行一次2倍的上采样并与从pool3层得到的预测融合起来,这一部分的网络被称为FCN-8s。 Skips结构将深层的全局信息与浅层的局部信息相结合。

    fcn-5

3 网络特点

  1. 不含全连接层(fc)的全卷积(fully conv)网络,可适应任意尺寸输入。
  2. 增大数据尺寸的反卷积(deconv)层,能够输出精细的结果。
  3. 结合不同深度层结果的跳级(skip)结构,同时确保鲁棒性和精确性。

4 数据处理

① 数据预处理

由于PASCAL VOC 2012数据集(PASCAL VOC 2012数据集是一个广泛用于计算机视觉研究的数据集,特别是图像分割任务。它由PASCAL VOC竞赛组织提供,包含了多个目标类别的图像和相应的标注信息)中图像的分辨率大多不一致,无法放在一个tensor中,故输入前需做标准化处理。

② 数据加载

将PASCAL VOC 2012数据集与SDB数据集(SDB数据集通常指的是Semantic Boundaries Dataset,它是一个用于语义分割任务的数据集。SBD数据集是PASCAL VOC2012数据集的一个扩展,提供了更多的图像用于训练和验证语义分割模型)进行混合。

③ 训练集可视化

运行代码观察载入的数据集图片(数据处理过程中已做归一化处理)。

5 网络构建

 网络流程

FCN网络的流程如下图所示:

  1. 输入图像image,经过pool1池化后,尺寸变为原始尺寸的1/2。
  2. 经过pool2池化,尺寸变为原始尺寸的1/4。
  3. 接着经过pool3、pool4、pool5池化,大小分别变为原始尺寸的1/8、1/16、1/32。
  4. 经过conv6-7卷积,输出的尺寸依然是原图的1/32。
  5. FCN-32s是最后使用反卷积,使得输出图像大小与输入图像相同。
  6. FCN-16s是将conv7的输出进行反卷积,使其尺寸扩大两倍至原图的1/16,并将其与pool4输出的特征图进行融合,后通过反卷积扩大到原始尺寸。
  7. FCN-8s是将conv7的输出进行反卷积扩大4倍,将pool4输出的特征图反卷积扩大2倍,并将pool3输出特征图拿出,三者融合后通反卷积扩大到原始尺寸。

    fcn-6

    通过代码构建FCN-8s网络。

 

6 训练准备

① 导入VGG-16部分预训练权重

FCN使用VGG-16作为骨干网络,用于实现图像编码。通过代码导入VGG-16预训练模型的部分预训练权重。

② 损失函数

语义分割是对图像中每个像素点进行分类,仍是分类问题,故损失函数选择交叉熵损失函数来计算FCN网络输出与mask之间的交叉熵损失。这里使用mindspore.nn.CrossEntropyLoss()作为损失函数。

③ 自定义评价指标 Metrics 

7 模型训练

导入VGG-16预训练参数后,实例化损失函数、优化器,使用Model接口编译网络,训练FCN-8s网络。

8 模型评估

计算模型的评价指标。

9 模型推理

使用训练的网络对模型推理结果进行展示。

10 总结

FCN的核心贡献在于提出使用全卷积层,通过学习让图片实现端到端分割。与传统使用CNN进行图像分割的方法相比,FCN有两大明显的优点:一是可以接受任意大小的输入图像,无需要求所有的训练图像和测试图像具有固定的尺寸。二是更加高效,避免了由于使用像素块而带来的重复存储和计算卷积的问题。

同时FCN网络也存在待改进之处

一是得到的结果仍不够精细。进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果仍比较模糊和平滑,尤其是边界处,网络对图像中的细节不敏感。 二是对各个像素进行分类,没有充分考虑像素与像素之间的关系(如不连续性和相似性)。忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。

原文链接:FCN图像语义分割.ipynb - JupyterLab (mindspore.cn)

标签:25,分割,10,卷积,16,语义,图像,打卡,FCN
From: https://blog.csdn.net/2301_78470967/article/details/140148765

相关文章

  • 昇思25天学习打卡营第8天|模型权重与 MindIR 的保存加载
    目录导入Python库和模块创建神经网络模型保存和加载模型权重保存和加载MindIR导入Python库和模块        上一章节着重阐述了怎样对超参数予以调整,以及如何开展网络模型的训练工作。在网络模型训练的整个进程当中,事实上我们满怀期望能够留存中间阶段以及最......
  • 【STM32F1例程10】UCOSII系统实验
      那么这个实验,从项目的工程结构来看,其实稍微稍微有一丢丢,有一丢丢比之前几个实验复杂,但是还是老话,既然能读到这篇文章,证明能力还是得到认可的。实验简介  那么在STM32上进行uC/OS-II系统实验是一种常见的实践,可以帮助大家了解和应用实时操作系统(RTOS)在嵌入式系统开......
  • 【Java完整版 面试必备】Leetcode Top100题目和答案-矩阵篇
    目录以下摘自leetcodeTop100精选题目-矩阵篇​矩阵置零螺旋矩阵旋转图像搜索二维矩阵II以下摘自leetcodeTop100精选题目-矩阵篇矩阵置零给定一个 mxn 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。示例:输入:matrix......
  • win10设置.eddx文件默认用edraw max打开
    要在Windows10中将`.eddx`文件类型与EdrawMax关联,以便每次双击这类文件时都能自动使用EdrawMax打开,你可以按照以下步骤操作:1.打开文件资源管理器,找到一个`.eddx`文件。2.右键点击这个`.eddx`文件,然后选择“属性”。3.在弹出的窗口中,切换到“常规”标签页。4.点击“更改......
  • win10、win11暂停微软更新1000天!
    新系统可别乱用啊,有些更新还是有必要的,确保任务栏右键有任务管理器和任务栏设置。管理员运行Posershell,执行这行代码regadd"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings"/vFlightSettingsMaxPauseDays/treg_dword/d10000/f或者WindowsRegi......
  • 电脑数据丢失该怎么恢复?分享10款数据恢复神器
    在数字化时代,数据丢失的问题时有发生,无论是手机,还是电脑,总有误删、格式化等各种原因导致数据丢失。那么当电脑数据丢失后,我们除了从回收站中找回文件,还可以使用哪些方法找回文件呢?本文将为大家详细分析数据丢失的原因,介绍数据恢复的方法,并分享10款数据恢复神器,希望能帮助你......
  • 国产自主架构!龙芯2K1000LA工业核心板正式发布!
                 ......
  • AI唱古诗大片,粉丝10W+, 手把手免费教你
    看到别人用AI做唱古诗的视频动画,小红薯10W+粉丝,后期接广变现。从YOUTUBE上学来的方法,自己实操起来感觉还是很简单的。打开思路,AI时代任何有亮点的创作都会有受众。百度网盘请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支......
  • AI唱古诗大片,粉丝10W+, 手把手免费教你
     看到别人用AI做唱古诗的视频动画,小红薯10W+粉丝,后期接广变现。从YOUTUBE上学来的方法,自己实操起来感觉还是很简单的。打开思路,AI时代任何有亮点的创作都会有受众。百度网盘请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支......
  • springboot+手机商城网站-计算机毕业设计源码201029
    摘 要在信息飞速发展的今天,网络已成为人们重要的信息交流平台。手机店每天都有大量的手机商品需要通过网络发布,为此,本人开发了一个基于springboot手机商城网站。本系统采用跨平台的JAVA语言开发,利用springboot框架进行逻辑控制,MySQL数据库存储数据,最后Tomcat服务器完成发布......