Tensorflow——图像的语义分割

本文介绍了图像语义分割的重要性和应用,如自动驾驶和医学图像诊断。深入探讨了FCN和UNET两种深度学习模型,包括它们的结构、优缺点以及在处理图像细节和空间一致性方面的挑战。同时,展示了数据预处理和模型创建的代码示例,为实际项目提供了指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像的语义分割

图像的语义分割是计算机视觉中十分重要的领域。它是指像素级地识别图像,即标注出图像中每个像素所属的对象类别(如属于背景、边缘或身体等)。
在这里插入图片描述

图像语义分割的应用

  1. 自动驾驶汽车:我们需要为汽车增加必要的感知,以了解他们所处的环境,以便自动驾驶的汽车可以安全行驶;
  2. 医学图像诊断:机器可以增强放射医生进行的分析,大大减少了运行诊断测试所需的时间;
  3. 无人机着陆点判断等。

图像语义分割实质

语义分割的目标

一般是将一张RGB图像或是灰度图作为输入,输出的是分割图,其中每一个像素包含了其类别的标签(heightwidth1)。
在这里插入图片描述在这里插入图片描述

图像语义分割的实现

FCN

目前在图像分割领域比较成功的算法,有很大一部分都来自于同一个先驱:Long等人提出的Fully Convolutional Network(FCN),或者叫全卷积网络
FCN将分类网络转换成用于分割任务的网络结构,并证明了在分割问题上,可以实现端到端的网络训练
FCN成为了深度学习解决分割问题的奠基石。

分类网络结构尽管表面上来看可以接受任意尺寸的图片作为输入,但是由于网络结构最后全连接层的存在,使其丢失了输入的空间信息,因此,这些网络并没有办法直接用于解决诸如分割等稠密估计问题。
考虑到这一点,FCN用卷积层和池化层替代了分类网络中的全连接层,从而使得网络结构可以适应像素级的稠密估计任务。
FCN网络结构图
在这里插入图片描述在这里插入图片描述

语义分割的跳级(skips)结构

增加Skips结构将最后一层的预测(有更丰富的全局信息)和更浅层(有更多的局部细节)的预测结合起来,这样可以在遵守全局预测的同时进行局部预测。
在这里插入图片描述
在这里插入图片描述

FCN缺点

  • 得到的结果不够精细,对细节不够敏感
  • 没有考虑像素与像素之间的关系,缺乏空间一致性

FCN实例

对数据集的处理

def data_process():
    """
    处理数据,创建训练数据集和测试数据集
    :return: 训练数据集、测试数据集、STEPS_PER_EPOCH、VALIDATION_STEPS
    """
    # 获取所有图片的存储地址
    images = glob.glob("F:\\dataset\\图片定位与分割\\images\\*.jpg")
    # 对图片地址按照图片名称进行排序
    images.sort(key=lambda x: x.split('/')[-1])
    # 获取所有图像分割后的图片
    annotations = glob.glob("F:\\dataset\\图片定位与分割\\annotations\\trimaps\\*.png")
    # 对分割图像按照名称排序
    annotations.sort(key=lambda x: x.split('/')[-1])
    # 生成长度与图片个数相同的随机序列
    np.random.seed(2020)
    index = np.random.permutation(len(images))
    # 将图片和分割图像地址一起随机
    images = np.array(images)[index]
    annotations = np.array(annotations)[index]
    # 创建dataset数据集
    dataset = tf.data.Dataset.from_tensor_slices((images, annotations))
    
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值