前言 本文为咱们要点分析现有的语义切割结构,带领咱们一步步探讨。
本文转载自CVHub
作者丨派派星
欢迎关注大众号CV技能攻略,专心于核算机视觉的技能总结、最新技能盯梢、经典论文解读、CV招聘信息。
先来简略总结下传统图画切割。关于传统的图画切割算法,无论是阈值切割、区域切割、边际切割或根据聚类的办法等,简直都停留在纯手工规划的阶段,例如人为确认一个阈值或许界说一个滤波器模板。此类办法更加习惯的场景偏颜色、纹路、形状或梯度等简略的底层特征提取。可是,当遇到光照改变、姿势改变或许布景改变等状况简直无能为力,更遑论提取到更进一步的高档语义特征。此外,此类先验常识往往需求专家经验,完全不易于推而广之。因而,根据传统的图画切割算法现在较多的是作为预处理(简略去噪)或许后处理(比如条件随机场和分水岭算法滑润距离概括)的一种手段去运用,亦或许取其精华去其糟粕,将其中心思维凝练出来融于现代的神经网络架构。
跟着 AlexNet 引爆深度学习热潮开端,以卷积神经网络为代表的新一代神经网络架构逐渐开端流行起来,简直在每个深度学习子范畴均遍地开花。特别地,自全卷机神经网络(Fully Convolutional Network, FCN)这个里程碑式的网络被提出后,根据深度学习的语义切割正式拉开帷幕。已然谈到 FCN 必然很多人会拿它跟 U-Net 作比较。其实这两个网络包含全体的结构规划和思路是迥然不同的,只不过是一个使用在场景解析使命,另一个使用在医学图画切割使命;一个长跳动衔接选用相加的操作然后直接一步到位上采样到原始空间分辨率,另一个长跳动衔接办法是经过拼接操作后再用卷积进行更细致的特征交融,然后不断细化,使其全体结构更加对称。后续提出的多数语义切割办法大都是根据此架构从不同方向延伸发展而成的。
因而,要想捋清楚语义切割终究何去何从,首要先从分析这个编解码架构动身无疑是更适宜的。
编解码架构
前期的语义切割以追求性(涨)能(点)为主,全体中心思维均是考虑怎么高效建模上下文信息而规划。下面咱们将围绕编解码器打开详细的讨论。
编解码的思维前期是出自自编码器,这个结构是由 Hinton 提出并发表在 Nature 上,首要用于处理图画紧缩和去噪使命,随后该思路被广泛使用到图画切割使命上。编解码架构(Encoder-Decoder Architecture)首要由编码器、长跳动衔接和解码器所组成。
编码器
首要,让咱们来看下编码器。众所周知,编码器一般可视为整个网络的特征提取器(a.w.a Backbone),用于紧缩原始图画并逐渐地提取出富含高档语义信息的特征图。这个进程中最要害的要素便是上下文信息,它是提高语义切割功能最为重要的要素之一,而有用感触野则大致决定了网络能够使用到多少上下文信息。
关于大部分网络结构来说,一般都会在编码的进程中引进池化或步长卷积来逐渐下降输入特征图的空间分辨率,一方面能够下降核算资源的耗费,另一方面也能够在必定程度扩展感触野。此外,除了卷积操作自身(参数同享)所具备的平移等变性 translation equivalence 外,引进池化操作还能够为网络带来必定的平移不变性 translation invariant,使网络对方针位置不那么敏感,直接地增强了网络对不知道数据的推理才能,一起又经过同享卷积核来达到控制模型复杂度的意图。
理论上,经过堆叠满足深的卷积(池化)层,网络的感触野能够掩盖到输入图画的大局区域。可是,考虑到以下三点:
-
网络的实践感触野远小于其理论感触野,理论上呈高斯分布;
-
考虑到参数量激增和核算量耗费与功能之间的平衡;
-
频繁的下采样操作会导致小方针的细节信息丢掉严重;
所以,单纯依靠堆叠一堆惯例的卷积池化操作来完结掩盖原图的感触野其实是不太实践的。扯到这儿,我想还有部分人没理解终究上下文信息是个什么概念?考虑下面这张图片:
先看第一行第三列,这儿模型将远处的一艘船的部分误判为车,这是因为它具有与轿车类似的外观,而模型因为缺少有用的部分上下文信息简略导致切割失利。部分上下文信息是切割范畴中不可或缺的一部分,常用于区分具备类似特征的不同方针。
再看下第二行第三列,此处方针是一栋美丽的大厦,可惜模型未能将其完好的表明出来,这是因为传统的卷积运算一次仅能处理一个部分范畴,这大概率会导致大标准方针切割的不完好性。因而,为了处理这个问题,咱们需求考虑怎么规划更大的感触野来获取充足的大局上下文信息
再来看下这张图片:
上图展示了多个结直肠息肉数据集统计后的方针标准分布,能够显着看出,不同的息肉方针之间是存在显着的标准差异的,这种现象也普遍存在于许多语义切割使命中。因而,怎么有用的提取多标准上下文信息以习惯不同标准、形状改变多样的方针也是一个亟需处理的问题。
以上多重要素均会在必定程度上约束模型的表明才能。因而,如上所述,前期的语义切割网络大都是围绕怎么在确保功率的一起尽或许的捕获有用的上下文信息展开的,而干流的办法首要有两种:扩展感触野或引进注意力机制。
扩展感触野的办法首要有以下几种办法:
-
运用大卷积核的 GCN 等办法;
-
运用空泛卷积的 DeepLab 等办法;
-
运用池化操作的 PSPNet 等办法;
现在,让咱们再进一步考虑,以上这些办法存在什么局限性?例如:
-
运用不同大小的卷积核组合,一方面参数量过大简略导致多拟合,另一方面理论感触野远小于实践感触野;
-
运用空泛卷积尽管能够保存完好的空间信息,可是会引进额定的核算量,简略引起部分范畴的信息丢掉,一起,当扩张率选取不恰其时还会构成网格(棋盘)效应;
-
运用池化操作尽管简略高效,但简略因为降采样导致小标准方针丢掉;
此外,感触野是否越大越好?实践上,感触野太小,不足以建模远距离依靠捕获大标准方针;感触野太大,则简略引进过多噪声和无效信息,这些终究都会影响到全体的切割功能。那么,规划合理的多标准表征来获取丰富的等效感触野就显得尤为重要了。例如,DMNet 提出了动态多标准的过滤器来自习惯不同的方针标准。处理了标准参数规划的问题,那么怎么更高效的交融不同标准的信息?CPFNet经过借鉴SK-Net的思维引进了标准感知模块来自习惯的交融来自不同标准的特征。
另一方面,引进注意力机制的作用首要是获取满足的大局上下文信息以建立远距离依靠,首要办法有:
-
结合通道和空间双注意力的 DANet 等;
-
借鉴自注意力机制的 NonLocal 等;
同样地,关于根据注意力机制的切割办法来说,其优化点能够考虑从不同维度去考虑怎么建模,例如根据区域信息建模的PSANet以及针对不同类别信息进行像素加权的OCRNet;另一方面能够考虑从功率方面去改善注意力机制自身带来的核算资源问题,例如选用十字穿插注意力进行等效代替的CCNet、引进非对称结构的ANN、亦或是从大局上下文建模视点所实践的简化版GCNet等等。
长跳动衔接
聊完编码器部分,再来分析下长跳动衔接。
已然谈到跳动衔接,想必咱们第一时间想到的是 ResNet 中的残差衔接 skip connection。与原始的(短)跳动衔接操作缓解梯度弥散的动机不同,考虑到语义切割使命自身是一种密集型分类猜测使命,因而 U-Net 或 FCN 中所触及到的长跳动衔接操作本质上是为了更好的弥补编码进程中下采样导致的信息丢失问题,帮助网络在解码的进程中更好的恢复对物体细节的定位。
另一方面,经过引进长跳动衔接,能够完结不同层级特征之间的信息交融,然后提取到更具有判别力的特征。因而,前期的 RefineNet 便是结合这两点,经过建模多个层级特征之间的信息交互来弥补下采样操作所带来的信息丢失。那么问题来了:
- 怎么交融更多的特征?
众所周知,不同抽象层级的特征具有不同的独特语义表征。因而,交融不同层级之间的特征是一个自可是然的主意,例如,UNet++ 中便尝试结合长、短跳动衔接来完结尽或许丰富的信息同享。
- 怎么交融更好的特征?
首要,考虑下医学图画切割使命。不同于天然图画,医学图画在成像进程中,受采集设备或光照等要素的影响,不可避免的会引进许多布景噪声。此时,假如咱们单纯的选用长跳动衔接操作,必然会引进浅层特征中一些不纯净的噪声,然后影响解码器输出特征的质量。为了处理此问题,一方面能够从数据源自身动身,进行去噪处理,例如nnUnet中规划了许多有用的预处理操作,例如CLAHE、Gamma增强等来更好的处理图画。另一方面能够从模型视点考虑,例如Attention-UNet中引进门控注意力来强化远景区域抑制布景区域;又或许像MultiResUNet堆叠多个11卷积来进行特征”提纯”。
特征交融本质上是为了取得更具有判别力的特征表明。一般来说,浅层特征注重边际、纹路等空间细节,但缺少高档语义;而深层特征具备精确的高档语义信息,但缺少空间细节信息。一种自可是然的主意便是交融两者。可是,因为特征结构以及特征内容自身的约束,不同层级之间的特征交融必然会存在语义距离。为了处理此问题,ExFuse提出了许多办法使网络得以在浅层特征中引进更多的语义信息,在深层特征中嵌入更多的空间信息。
解码器
解码器的作用是将编码器所提取到的高档特征上采样至固定分辨率以完结端到端的练习然后完结像素级的密集猜测分类。一般来说,解码器规划的中心是怎么高效的将经过紧缩的高档语义特征尽或许无损的复原。这个进程中会触及两个操作:上采样和特征输出。
如上所述,因为编码器会触及到多次下采样操作,不可避免的会导致图画精密特征的丢掉。一种处理办法是“提前止损”,正如咱们上面所介绍的DeepLab,选用空泛卷积能够在无需降采样的状况下拥有更大的感触野,但这仍然会引进许多问题。另一种办法便是“直面困难”,一般将一个特征图进行上采样有两种办法,即运用线性插值和反卷积。
线性插值算法是一种与数据无关的算法,它是根据设定好的公式近似模拟出不知道点的信息,这必将约束模型的表达才能。而运用反卷积因为自身自带可学习参数,一般可取得更优的切割功能,但不可避免会引进过多的参数量和核算量。因而,一种参阅的处理方案便好像 DUsampleing 中根据通道重排的思路所规划的新型上采样办法,能够一起结合两者的优势。
特征输出的作为为了让网络能进行端到端的练习以更新模型参数。一般来说,大多数网络只会输出最终一层特征图,但咱们考虑下这必定是最优解吗?众所周知,不同层级的特征所提取到的语义是不一样的,假如能够对中心层的特征进行监督学习,是否能取得比较好的作用?这个思维前期在 GoogLeNet 中有所体现,例如该论文中所提及到的辅助丢失。后续一部分语义切割网络也使用了此思路,例如 PSPNet 和 DSN。DSN 中较早提出了深监督的思维,旨在为解码器中一切层级的输出特征均建立监督机制,一来能够有用的概括多个输出层的信息来学习更加鲁邦的特征;二来能够有用的缓解练习进程中梯度消失的现象,加速网络收敛。
谈完深监督的好处,那潜在的问题会出现在哪呢?这儿给咱们举几个栗子:
-
需求监督多少层特征?
-
需求监督哪些层特征?
-
怎么分配适宜的权重?
关于第1点,这其实并没有一个严厉的定论,要害之处仍是取决于练习数据自身的特性。关于第2和第3点,一个经验法则是越接近输出层的特征理应是最重要的,因而越接近输出层的中心特征理应分配更多的权重,这一点其实也有不少论文验证过了。
演进思路
经过早几年的发展,这种经过规划新的网络结构或许拼接模(积)块(木)的办法所带来的功能增益,其边际效应逐渐下降,紧接着伴随而来的便是大量同质化工作的出现,以至于在某个时间节点会出现诸如“xxx还能不能走下去”的困境。当然,以上现象不仅限于语义切割,关于大部分视觉使命来说亦如此。
尽管在中心这段时间短的时间也出现一些有意思的工作,但终究都未能掀起大的波涛,比如下面这个段子:
-
手动规划网络结构 → NAS查找;
-
固定感触野 → 引进动态加权完结感触野的自动调理;
-
作用提高不上去 → 换个思路做实时切割来对比成果;
-
强监督太热门 → 换成弱监督(GAN, 常识蒸馏, …) + trick = 差不多的方针;
-
DNN 太单调,融入点传统视觉的办法规划成端到端模式,如 EMANet 等;
-
CNN 太单调,配合 GCN 搞点悬念,如 SAGNN 等;
-
嫌 2D 切割过于饱和,转 3D 点云切割, 如 2DPASS 等;
作者:湃森 链接:www.zhihu.com/question/39… 来历:知乎
当然,以上这些更多的是从一个点去旁敲侧击,这两年也有从图画切割这个使命自身去考虑改良的,如 K-Net → MaskFormer → kMaX-DeepLab → Mask2Former → OneFormer → Mask DINO 这条线路,有种逐渐大一统的神韵,这也不失为一个有意思的研讨方向,当然大部分小作坊伤不起。其他一个现象便是纯靠刷点真是很难再刷上去了,你看看各个榜单的斜率已经都快贴地了,一向到 ViT 出现才牵强的带火了一波,继而连续多了2年辉煌。可惜到后边咱们又在 Transformer 身上看到了 CNN 当年的那种窘况,愣是成为了一个无情的堆积木玩具,以至于后期顶会上的论文只能又往各种 zero-shot | one-shot | few-shot | weak-shot | xxx-shot 又或许转移到各种 domain | multi-modal 去靠边,总归便是避开正面交锋,靠故事靠生动形象的图表试验去打动审稿人,但却很少有人结合实践的落地使用场景去处理问题,做到真正的产学研结合。不过已然都聊到 ViT 了,下面仍是简略的跟咱们介绍下这两年的 SOTA 之星。
跟着 ViT 的诞生,吹响了 Transformer 席卷 CV 界的号角,一时间横扫核算机视觉各个子范畴的 SOTA 之星,成为了夜空中最亮的仔,直接盘活了这盘棋。尽管 Transformer 同一般的卷积在数学概念上基本是等价的,全体的架构也都很类似,只不过在优化和完结细节上有所收支,可是全体而言仍是有许多不同之处,首要体现在几个方面。
概括偏置
关于 CNN 来说,因为有了概括偏置,无需大量练习数据和精心规划的 trick 便能够取得不错的作用;反观 Transformer,尽管少了这层束缚,可是却造就其无限潜力的或许,而且这种功能上的差异会伴跟着数据和算力规划的提高被逐渐扩大。
远距离依靠
众所周知,因为感触野有限无法捕获有用的长距离依靠,CNN 在高层视觉语义信息中相对缺少特征的连贯性来相关实例,导致在大标准方针方针上的切割成果堪忧。尽管能够经过其他办法(见上)辅助,但作用铁定不如 Transformer 这种开场即大局来得更加直接。
空间分辨率
Transformer 的另一个特性便是能够从头到尾保持输入和输出的空间分辨率不变,这关于语义切割这种非常注重空间细节信息的密集型猜测分类使命来说是非常有用的,在必定程度上能够缓解 CNN 多次下采样所导致的小方针信息丢失的问题。
不过,Transformer 关于底层特征的提取其实并不擅长,简略导致对小方针的错误猜测,这也是后边为什么出现出这么多 CNN + Transformer 的混合双打架构,当然还有其他的益处,例如下降核算量。其实,Transformer 发展到后期更多的是蜕变为一种类似于 CNN 的基础组件供咱们挑选,究竟任何事物的生长是因为某种要素的推进和影响,使其逐渐发展壮大,但这种发展是有极限的,当它发展到必定程度时,总有其它要素约束。
总的来说,找到一个适宜的点去展开并不难,要害是要摆脱思维的禁闭,下面给咱们举几个示例,更多的研讨方向可参阅前面”语义切割扩展”章节。
-
当感觉定量成果上已经难以再去提高时,能够尝试从定性视点动身,譬如从改善图画切割边际这个点入手,尽管从数值方针上简直不会有什么距离,但可视化成果展示出来的切割距离便是个极大的优势,不失为一个亮点去宣扬。另一方面,也能够从不同视点找个侧要点去集中优化某一块,例如一向困扰方针检测中的小方针问题,语义切割同样也会有这种问题,特别是遥感语义切割这类的使命。
-
当感觉干流的数据集已经趋于饱和时,尝试转换个思路去突破,例如咱们都做白日,你便能够做夜视场景;咱们都做根据陆地的场景解析,你能够做根据水下的场景切割;咱们都在做根据晴天的场景,你便能够尝试做风雷雨雪等极端场景下的切割等等;有条件的同学还能够尝试往多模态去靠,这也是一个不可逆转的发展趋势。
-
正所谓它山之石能够攻玉,往常必定要多阅览积累,广泛涉猎相关范畴的常识,不求通晓点到为止。下面以半监督学习为例,其中心问题在于怎么有用使用无标示样本,作为有标签样本的补充,以提高模型功能。一种很简略想到的办法便是借助常识蒸馏的办法,首要根据另一半有标签的数据练习处一个模型;随后根据这个练习好的模型为剩余另一半没有带标签的数据提供标签,即伪标签;最终再用这些伪标签去练习模型。惯例的做法是经过样本筛选只保存高置信度猜测的成果,这种做法会存在几个:
-
怎么确保终究筛选出来的伪标签便是高质量的?
-
怎么确保被剔除去的数据便是真正的无效?
假如咱们将大量的无标签数据扫除在练习进程外,便会导致模型练习不充分。此外,假如模型不能较好地猜测某些困难类别,那么后边就更难为该类其他无标签像素分配准确的伪标签,然后无法取得提高,构成「马太效应」。因而,有用的处理了包含不可靠样本在内的悉数无标签数据,理论上必定是能够提高算法精度的,这便是 U2P 所发起的。此前假如你有涉猎到方针盯梢的算法,你会惊讶的发现这其实跟 ByteTrack (高、低阈值) 有着异曲同工之妙,有时候思维的火花一碰撞便能发生美妙的创意。
欢迎关注大众号CV技能攻略,专心于核算机视觉的技能总结、最新技能盯梢、经典论文解读、CV招聘信息。
【技能文档】《从零建立pytorch模型教程》122页PDF下载
QQ沟通群:444129970。群内有大佬负责解答咱们的日常学习、科研、代码问题。
模型布置沟通群:732145323。用于核算机视觉方面的模型布置、高功能核算、优化加速、技能学习等方面的沟通。
其它文章
经典文章:Transformer是怎么进军点云学习范畴的?
CVPR 2023 Workshop | 首个大规划视频全景切割比赛
怎么更好地应对下流小样本图画数据?
U-Net在2022年相关研讨的论文引荐
用少于256KB内存完结边际练习,开销不到PyTorch千分之一
PyTorch 2.0 重磅发布:一行代码提速 30%
Hinton 最新研讨:神经网络的未来是前向-前向算法
聊聊核算机视觉入门
FRNet:上下文感知的特征强化模块
DAMO-YOLO | 超越一切YOLO,统筹模型速度与精度
《医学图画切割》总述,详述六大类100多个算法
怎么高效完结矩阵乘?万文长字带你从CUDA初学者的视点入门
近似乘法对卷积神经网络的影响
BT-Unet:医学图画切割的自监督学习结构
语义切割该怎么走下去?
轻量级模型规划与布置总结
从CVPR22动身,聊聊CAM是怎么激活咱们文章的热度!
入门必读系列(十六)经典CNN规划演化的要害总结:从VGGNet到EfficientNet
入门必读系列(十五)神经网络不work的原因总结
入门必读系列(十四)CV论文常见英语单词总结
入门必读系列(十三)高效阅览论文的办法
入门必读系列(十二)池化各要点与各办法总结
TensorRT教程(三)TensorRT的安装教程
TensorRT教程(一)初次介绍TensorRT
TensorRT教程(二)TensorRT进阶介绍
核算机视觉中的高效阅览论文的办法总结
核算机视觉中的神经网络可视化东西与项目
核算机视觉中的transformer模型立异思路总结
核算机视觉中的传统特征提取办法总结
核算机视觉中的数据预处理与模型练习技巧总结
核算机视觉中的图画标示东西总结
核算机视觉中的数据增强办法总结
核算机视觉中的注意力机制技能总结
核算机视觉中的特征金字塔技能总结
核算机视觉中的池化技能总结
核算机视觉中的高效阅览论文的办法总结
核算机视觉中的论文立异的常见思路总结
神经网络中的归一化办法总结
神经网络的初始化办法总结