matlab将⼆值图像与原图重叠_「图像处理」U-Net中的重叠-
切⽚
原创 CW 深蓝学院
作者简介
CW,⼴东深圳⼈,毕业于中⼭⼤学(SYSU)数据科学与计算机学院,毕业后就业于腾讯计算机系统有限公司技术⼯程与事业群(TEG)从事Devops⼯作,期间在AI LAB实习过,实操过道路交通元素与医疗病例图像分割、视频实时⼈脸检测与表情识别、OCR等项⽬。
⽬前也有在⼀些⾃媒体平台上参与外包项⽬的研发⼯作,项⽬专注于CV领域(传统图像处理与深度学习⽅向均有)。
Forewordcancer是什么意思中文
最开始接触 U-Net 的时候并不知道原作使⽤了 Overlap-tile 这种策略,因此当时不太理解为何⽹络结构要设计成⾮对称形式,即上采样得到的特征图尺⼨与对应层在下采样时的尺⼨不⼀致。spg
另外发现,这种策略可⽤于许多场景,特别是当 数据量较少 或者 不适合对原图进⾏缩放时尤其适⽤(缩放通常使⽤插值算法,主流的插值算法如双线性插值具有低通滤波的性质,会使得图像的⾼频分量受损,从⽽造成图像轮廓和边缘等细节损失,可能对模型学习有⼀定影响),同时它还能起到为⽬标区域提供上下⽂信息的作⽤。
本⽂先对这种策略的原理以及在U-Net中的使⽤进⾏说明,然后结合源码对该策略的实现进⾏解析,内容包括随机切⽚、镜像填充后按序切⽚以及将切⽚重构成图像。
1draw怎么读的
Overlap-tile在U-Net中的使⽤
先来对Overlap-tile策略的原理及其在U-Net中的使⽤做个介绍,让⼤家对其有个初步印象和基本理解。
熟悉U-Net结构的炼丹者们肯定清楚,它并不是⼀个完全对称的结构。也就是说,某⼀层特征图下采样后再上采样回来到对应层时,其尺⼨会发⽣变化,⽐原来的⼩,原因在于U-Net使⽤的是不带padding的3x3卷积(valid卷积),每次经过这样的⼀个卷积就会使得特征图尺⼨减⼩2x2。
(U-Net)
显然,如果直接输⼊原图,那么最后输出的尺⼨会⽐原图⼩。如果我们希望得到和输⼊⼀致的尺⼨,会怎么做?
最直接的是对输出结果再进⾏⼀次上采样,可以使⽤插值或者转置卷积的⽅法,若使⽤插值,由于其是不可学习的,会带来⼀定的误差;⽽使⽤转置卷积的话,⼜会增加参数量,并且模型也不⼀定能学习得好。
另外⼀种⽅法就是将U-Net中的valid卷积改为same卷积,即使⽤padding,这样每次3x3卷积就不会改变特征图的尺⼨了,最终上采样回来的尺⼨就能够和输⼊⼀致了。但是,padding是会引⼊误差的,⽽且模型越深层得到的feature map抽象程度越⾼,受到padding的影响会呈累积效应。
上述⽅法都体现出明显的不⾜之处,那么有没有更好的⽅法呢?我们来看看U-Net中的Overlap-tile是怎么做的。
做法其实很简单,就是在输⼊⽹络前对图像进⾏padding,使得最终的输出尺⼨与原图⼀致。特别的是,这个padding是镜像padding,这样,在预测边界区域的时候就提供了上下⽂信息。
rely
(Overlap-tile)
上图左边是对原图进⾏镜像padding后的效果,黄框是原图的左上⾓部分,padding后其四周也获得了上下⽂信息,与图像内部的其它区域有类似效果。
Overlap-tile策略可搭配 patch(图像分块)⼀起使⽤。当内存资源有限从⽽⽆法对整张⼤图进⾏预测时,可以对图像先进⾏镜像padding,然后按序将padding后的图像分割成固定⼤⼩的patch。这样,能够实现对任意⼤的图像进⾏⽆缝分割,同时每个图像块也获得了相应的上下⽂信息。
另外,在数据量较少的情况下,每张图像都被分割成多个patch,相当于起到了扩充数据量的作⽤。更重要的是,这种策略不需要对原图进⾏缩放,每个位置的像素值与原图保持⼀致,不会因为缩放⽽带来误差。
2
随机切⽚
随机切⽚是在图像内部随机选取patch中⼼,然后将图像切成固定数量的patch。
以下⽰例是对单张图像及对应的掩膜(mask)做随机切⽚。
古奇英文
(随机切⽚ i)
bisonpatch中⼼位置根据其尺⼨在图像内部随机选取,确定中⼼位置后,再根据各边长就可以确定patch的左上和右下两个顶点坐标。
(随机切⽚ ii)
最后从原图中取出对应位置的区域即可。
look down
(随机切⽚ iii)
劳改营随机切⽚效果
(左:切⽚得到的图像块;右:原图对应区域)
3
维修学校镜像填充
对原图进⾏镜像填充,能够使模型对边界区域进⾏预测时获得上下⽂信息。下图蓝框部分是原图的左上⾓部分,镜像填充后,得到红框部分。
(镜像填充效果)
镜像填充后会进⾏按序切⽚,在切⽚时,各patch之间可以设定⼀个固定的间隔,这样能够避免过份重叠。⾄于各边需要填充多少长度,可以基于以下两种⽅式来决定:
i). 填充后,各边都能恰好切出整数个patch(最后不会剩余⼀点长度不⾜⼀个patch);
ii). 提前计算输⼊输出之间的尺⼨差,使得padding后输出与输⼊尺⼨保持⼀致。
下⾯就第i)种⽅式进⾏源码解析。若有多张不同尺⼨的图⽚,那么就⼀张张独⽴处理;否则,可以组成⼀个批次进⾏处理。
(镜像填充 i)austria
先在竖直⽅向上进⾏填充,填充后,将原图置于中间,顶部和底部使⽤原图的镜像进⾏填充。
(镜像填充 ii )
然后在⽔平⽅向上进⾏填充,同样地,将填充前的图像置于中间,左右两边剩余部分使⽤填充前图像的镜像进⾏填充。
(镜像填充 iii)
4
按序切⽚
按序切⽚就是从图像的左上⽅开始,按照⼀定间隔依次将图像切成⼀个个⼩的图像块,直⾄图像的右下⽅。