深度学习图像分割——U-net网络

写在前面:

一直没有整理的习惯,导致很多东西会有所遗忘,遗漏。借着这个机会,养成一个习惯。

对现有东西做一个整理、记录,对新事物去探索、分享。

因此博客主要内容为我做过的,所学的整理记录以及新的算法、网络框架的学习。基本上是深度学习、机器学习方面的东西。

第一篇首先是深度学习图像分割——U-net网络方面的内容。后续将会尽可能系统的学习深度学习并且记录。

更新频率为每周大于等于一篇。



深度学习的图像分割来源于分类,分割即为对像素所属区域的一个分类。

有别于机器学习中使用聚类进行的图像分割,深度学习中的图像分割是个有监督问题,需要有分割金标准(ground truth)作为训练的标签。

在图像分割的过程中,网络的损失函数一般使用Dice系数作为损失函数,Dice系数简单的讲就是你的分割结果与分割金标准之间像素重合个数与总面积的比值。

【https://blog.csdn.net/liangdong2014/article/details/80573234,医学图像分割中常用的度量指标】

U-net参考文献:

U-net: Convolutional networks for biomedical image segmentation.

https://arxiv.org/pdf/1505.04597.pdf

                    U-net网络结构

U-net网络是一个基于CNN的图像分割网络,主要用于医学图像分割上,网络最初提出时是用于细胞壁的分割,之后在肺结节检测以及眼底视网膜上的血管提取等方面都有着出色的表现。

最初的U-net网络结构如上图所示,主要由卷积层、最大池化层(下采样)、反卷积层(上采样)以及ReLU非线性激活函数组成。整个网络的过程具体如下:

最大池化层,下采样过程:

假设最初输入的图像大小为:572X572的灰度图,经过2次3X3x64(64个卷积核,得到64个特征图)的卷积核进行卷积操作变为568X568x64大小,

然后进行2x2的最大池化操作变为248x248x64。(注:3X3卷积之后跟随有ReLU非线性变换为了描述方便所以没写出来)。

按照上述过程重复进行4次,即进行 (3x3卷积+2x2池化) x 4次,在每进行一次池化之后的第一个3X3卷积操作,3X3卷积核数量成倍增加。

达到最底层时即第4次最大池化之后,图像变为32x32x512大小,然后再进行2次的3x3x1024的卷积操作,最后变化为28x28x1024的大小。

反卷积层,上采样过程:

此时图像的大小为28x28x1024,首先进行2X2的反卷积操作使得图像变化为56X56X512大小,然后对对应最大池化层之前的图像的复制和剪裁(copy and crop),

与反卷积得到的图像拼接起来得到56x56x1024大小的图像,然后再进行3x3x512的卷积操作。

按照上述过程重复进行4次,即进行(2x2反卷积+3x3卷积)x4次,在每进行一次拼接之后的第一个3x3卷积操作,3X3卷积核数量成倍减少。

达到最上层时即第4次反卷积之后,图像变为392X392X64的大小,进行复制和剪裁然后拼接得到392X392X128的大小,然后再进行两次3X3X64的卷积操作。

得到388X388X64大小的图像,最后再进行一次1X1X2的卷积操作。

然后得到的结果大概是这样的(下图),需要通过黄色区域的分割结果去推断蓝色区域的分割结果,当然在实际应用中基本上都是选择保持图像大小不变的进行卷积(卷积后周围用0填充)。

【关于卷积、反卷积相关的内容可以参考:https://blog.csdn.net/qq_38906523/article/details/80520950】

讲完了具体怎么做的,再来讲讲U-net的优缺点,可以看到网络结构中没有涉及到任何的全连接层,同时在上采样过程中用到了下采样的结果,

使得在深层的卷积中能够有浅层的简单特征,使得卷积的输入更加丰富,自然得到的结果也更加能够反映图像的原始信息。

(CNN卷积网络,在浅层的卷积得到的是图像的简单特征,深层的卷积得到的是反映该图像的复杂特征)

像上面说的那样,U-net网络的结构主要是对RPN(Region Proposal Network)结构的一个发展,它在靠近输入的较浅的层提取的是相对小的尺度上的信息(简单特征),

靠近输出的较深的层提取的是相对大的尺度上的信息(复杂特征),通过加入shortcut(直接将原始信息不进行任何操作与后续的结果合并拼接)整合多尺度信息进行判断。

但是U-net网络结构仅在单一尺度上进行预测,不能很好处理尺寸变化的问题。

【天池医疗第一名队伍:https://tianchi.aliyun.com/forum/new_articleDetail.html?spm=5176.8366600.0.0.6021311f0WILtQ&raceId=231601&postsId=2947】

因此对于该网络的改进,就我而言,尝试过:1、在最后一层(最后一次下采样之后,第一次上采样之前)加入一个全连接层,目的是增加一个交叉熵损失函数,为了加入额外的信息(比如某张图是是否为某一类的东西)

2、对于每一次的上采样都进行一次输出(预测),将得到的结果进行一个融合(类似于FPN网络(feature pyramid networks),当然这个网络里有其他的东西)

3、加入BN(Batch Normalization)层

改进的结果自然是对于特定要处理的问题有一些帮助。

最后就是相应的代码,由于U-net网络结构较为简单,所以一般使用Keras去写的会比较多,我也是用Keras写的。后续整理了之后将代码的链接贴上。

原文地址:https://www.cnblogs.com/kamekin/p/9574172.html

时间: 2024-10-29 19:12:25

深度学习图像分割——U-net网络的相关文章

(转)零基础入门深度学习(6) - 长短时记忆网络(LSTM)

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就out了?现在救命稻草来了,<零基础入门深度学习>系列文章旨在讲帮助爱编程的你从零基础达到入门级水平.零基础意味着你不需要太多的数学知识,只要会写程序就行了,没错,这是专门为程序员写的文章.虽然文中会有很多公式你也许看不懂,但同时也会有更多的代码,程序员的你一定能看懂的(我周围是一群狂热的Clean

PYTHON深度学习6.2RNN循环网络

#简单的循环网络 #-*-coding:utf-8 -*- from keras.datasets import imdbfrom keras.preprocessing import sequence max_fetaures = 10000maxlen = 500batch_size = 32print("Loading data...")(x_train, y_train), (x_test, y_test) = imdb.load_data(path="/home/d

基于深度学习的图像分割在高德的实践

一.前言 图像分割(Image Segmentation)是计算机视觉领域中的一项重要基础技术,是图像理解中的重要一环.图像分割是将数字图像细分为多个图像子区域的过程,通过简化或改变图像的表示形式,让图像能够更加容易被理解.更简单地说,图像分割就是为数字图像中的每一个像素附加标签,使得具有相同标签的像素具有某种共同的视觉特性. 图像分割技术自 60 年代数字图像处理诞生开始便有了研究,随着近年来深度学习研究的逐步深入,图像分割技术也随之有了巨大的发展.早期的图像分割算法不能很好地分割一些具有抽象

&lt;深度学习优化策略-3&gt; 深度学习网络加速器Weight Normalization_WN

前面我们学习过深度学习中用于加速网络训练.提升网络泛化能力的两种策略:Batch Normalization(Batch Normalization)和Layer Normalization(LN).今天讨论另一种与它们类似的策略:Weight Normalization(Weight Normalization).Weight Normalization是Batch Normalization的一种变体,与Batch Normalization最大不同点:对神经网络的权值向量W进行参数重写Re

CNCC2017中的深度学习与跨媒体智能

转载请注明作者:梦里茶 目录 机器学习与跨媒体智能 传统方法与深度学习 图像分割 小数据集下的深度学习 语音前沿技术 生成模型 基于贝叶斯的视觉信息编解码 珠算:基于别噎死推断的深度生成模型库 图像与视频生成的规则约束 景深风景生成 骨架约束的人体视频生成 跨媒体智能 视频检索的哈希学习 多媒体与知识图谱 基于锚图的视觉数据分析 视频问答 细粒度分类 跨媒体关联与检索(待补充) 正片开始 传统方法与深度学习 图像分割 图像分割是医疗图像中一个很重要的任务,通常分为分割,配准,可视化几个子任务.这

UFLDL教程笔记及练习答案四(建立分类用深度学习)

此次主要由自我学习过度到深度学习,简单记录如下: (1)深度学习比浅层网络学习对特征具有更优异的表达能力和紧密简洁的表达了比浅层网络大的多的函数集合. (2)将传统的浅层神经网络进行扩展会存在数据获取.局部最值和梯度弥散的缺点. (3)栈式自编码神经网络是由多层稀疏自编码器构成的神经网络(最后一层采用的softmax回归或者logistic回归分类),采用逐层贪婪的训练方法得到初始的参数,这样在数据获取方面就可以充分利用无标签的数据.通过逐层贪婪的训练方法又称为预训练,然后可以使用有标签的数据集

用深度学习预测专业棋手走法

我不擅长国际象棋. 我父亲在我年幼的时候教过我,但我猜他是那些一直让他们的孩子获胜的爸爸之一.为了弥补世界上最受欢迎的游戏之一的技能的缺乏,我做了任何数据科学爱好者会做的事情:建立一个人工智能来击败我无法击败的人.遗憾的是,它不如AlphaZero(甚至普通玩家)好.但我想看看国际象棋引擎在没有强化学习的情况下如何做,以及学习如何将深度学习模型部署到网络上. 比赛在这里! 获取数据 FICS拥有一个包含3亿场比赛,个人走法,结果以及所涉玩家评级的数据库.我下载了所有在2012年的比赛,其中至少有

神经网络与深度学习——《机器学习及应用》汪荣贵 机械工业出版社

摘录自<机器学习及应用>汪荣贵 机械工业出版社 总结了一些神经网络与深度学习中的一些网络介绍. 1.神经元与感知机 (1)关于激活函数 (2)MLP MLP模型的网络结构没有环路或回路,故是一类前馈网络模型.MLP模型中隐含层的层数可为一层也可为多层.对于MLP模型和BP神经网络这样包含多个数据处理层的前馈网络模型而言,其参数更新过程通常较为复杂.这是因为这类模型的最终输出与之前多层的连接权重相关,相当于多层嵌套的函数.若直接使用类似于梯度下降的优化方法对模型进行训练,则无法直接求得各结点所对

扫盲记-第四篇--弱监督深度学习的图像分割

学习内容来源于网络 原创见 微信公众号: 有三AI  https://mp.weixin.qq.com/s/USOWECXk_az4b6eTssfOBw 基于弱监督深度学习的图像分割方法 本文主要介绍基于深度学习的图像分割方法,即语义分割.实例分割和全景分割. 1 基础概念 生活中,我们和周围的事物都是有“标签”的,比如人.杯子.天空等等.在不同的场景下,相同的事物可能对应了不同的标签,比如长在地上的一片小草称为“草地”,长在花盆里的很可能属于“盆栽”,画在画中的又属于“装饰”. 如果把整幅图像