Bridging Classical and Modern Computer Vision: PerceptiveNet for Tree Crown Semantic Segmentation

Bridging Classical and Modern Computer Vision: PerceptiveNet for Tree Crown Semantic Segmentation
本次讲解的文章是CVPR上一篇关于树冠语义分割的文章作者为VoulgarisGeorgios来自于牛津大学。这篇文章的主要贡献是提出一个PerceptiveNet体系结构这个架构能够有效的解决由于树种类太过相似枯死的树稠密的树冠状等等导致分割的效果不理想这类问题。那他是怎么实现的呢请看这张图先给大家解释一下里面的各个术语的意思在a部分当中的编码器部分Encoding里LogGabConv是作者提出的一种新的由可训练的Log - Gabor函数参数化的卷积层。它与普通卷积的差别如下~对比维度普通卷积层LogGabConv 层人话解释1. 初始化方式滤波器参数随机初始化从零开始学用Log-Gabor 函数初始化起点就很高普通的像 从零开始学走路LogGabConv 像 生下来就会跑2. 数学原理没有固定数学形式完全靠数据学出来基于对数 Gabor 函数有严格的数学理论支撑普通的像 瞎猫碰死耗子LogGabConv 像 按菜谱做菜3. 零 DC 分量❌ 有 DC 分量受整体亮度影响大✅ 零 DC 分量不受整体亮度影响普通的照片一暗就看不清LogGabConv亮暗都一样准4. 正交性❌ 不同滤波器之间互相重叠信息重复✅ 正交性好各干各的不重复普通的几个记者抢着采访同一个人LogGabConv分工明确各采访各的5. 频率覆盖❌ 不均匀中频好高低频差✅ 对数尺度覆盖均匀高低通吃普通的便宜耳机只听得见中音LogGabConvHiFi 音响高低音都清晰6. 空间定位❌ 边缘模糊定位不准✅ 边缘锐利定位精准普通的近视眼看东西糊LogGabConv2.0 视力边缘清清楚楚7. 提取的特征类型什么都学纹理、形状混在一起专门提取边缘、方向、频率等结构化特征普通的囫囵吞枣啥都学LogGabConv精准打击专学有用的8. 训练效率❌ 需要大量数据才能学好收敛慢✅ 起点高收敛快数据少也能学好普通的笨鸟先飞得练很久LogGabConv天才选手一学就会9. 参数数量参数少只有卷积核权重参数多多了频率、方向、相位等可学习参数普通的简单工具LogGabConv精密仪器零件更多10. 生物学启发参考了视觉皮层但比较粗糙更接近人类视网膜的工作方式普通的像 模拟眼睛LogGabConv像 高仿人眼11. 可解释性❌ 黑箱不知道它学了啥✅ 可解释每个滤波器对应什么方向、什么频率清清楚楚普通的学生考试不知道他为啥对为啥错LogGabConv每道题都有解题步骤12. 对纹理的偏好容易过度依赖纹理忽略形状更关注形状和结构不被纹理带偏普通的以貌取人只看衣服LogGabConv看骨架看本质13. 适用场景通用场景啥都能干但啥都不精特别适合边缘检测、纹理分析、医学影像、遥感图像普通的瑞士军刀啥都能割但啥都不锋利LogGabConv手术刀专门干精细活14. 抗噪能力❌ 容易被噪声干扰✅ 对噪声更鲁棒普通的耳朵尖一点杂音就分心LogGabConv专心致志不受干扰文章说树冠分割最容易受到这些影响1.光影变化大有的亮有的暗2.树冠互相重叠边界复杂3.大小不一样有的树大有的树小4.不同树种长得很像纹理差别小让后LogGabConv刚好能够对症下药然后下一层是BN批量归一化就是让数据统一为了更好的训练。再然后是ReLU:激活函数把负数变成 0增加非线性 → 就像 只保留有用的信息没用的过滤掉,为什么要增加非线性呢就是线性只能学习简单的特征比如你买东西五块钱一个你有20块钱就只能买4个都是成比例的但是非线性就不一样了就跟你吃药一样吃一颗有效两颗有效8颗药就中毒了这就是非线性他能学习更为复杂的特征。在接下来是Conv再做一次普通卷积进一步处理特征。再然后是Addition残差连接把输入直接加过来防止信息丢失 你会发现他是在输入的时候就连了一条线过来这样做的目的是可以直接把特征跟提取后的特征拼接在一起防止特征丢失。再往下就是DilRes这是膨胀卷积作用是扩大感受野感受野就是你看的范围而且这里面的膨胀率是动态调整的比起普通的卷积能看的更广。再往下又一个Addition目的同上一个一样防止特征丢失。让后又重复了一个DilRes和Addition。这里向大家解释一下为什么会有两层一摸一样的的因为神经网络里面的层不是都重复只干一件事举个例子就跟筛沙子一样第一层网筛一些粗的沙砾第二层筛细一点的沙粒这里两个 DilRes 不是重复的而是 一层更比一层强—— 上层学简单的局部特征下层学复杂的全局特征一层一层往上堆才能从 看到纹理 变成 认出整棵树。当编码完成以后会被送入解码器进行解码但是在此之前要先经过一个桥梁就是Bridge从这里也可以看到这个桥梁里面其实还是DilRes膨胀残差卷积。那么大家有没有想过一个问题为什么要经过这么一个桥梁难道不能直接把编码器与解码器连在一起吗其实这个问题在生活当中也很常见比如为什么发电机里面的电不能直接用而是要经过转换为220v的电压才能使用呢其实就是不适配的问题这里也一样。经过这样的一个桥梁有很多好处比如膨胀卷积可以扩大感受野使得看的更广提取更为浓厚的特征还可以讲编码器的输出转化为解码器期望的格式更加适配。当进入到解码器里先经过上采样up sampling这一步的目的是为了还原特征让后经过特征拼接concatenate这里要说一下这个拼接与上面那个Addition直接拼接不同举个例子Addition是相当于把一个杯子里面的水倒进另外一个杯子里什么都不改变而concatenate相当于把两杯水并排放宽度增加了。同理由于架构采用了残差架构所以会有直接从编码器的addition到解码器的concatenate其目的是为了保证特征在传输过程中不丢失。那大家有没有疑问编码器的DilRes和解码器的DilRes有什么区别如下表所示对比维度编码器的 DilRes解码器的 DilRes核心任务提取特征下采样缩小融合特征上采样放大特征图尺寸越来越小越来越大通道数越来越多特征更丰富越来越少特征更具体感受野越来越大越来越小关注细节抽象程度越来越抽象越来越具体有没有 Mix Pool✅ 有用来缩小❌ 没有不需要缩小有没有跳跃连接❌ 没有自己干自己的✅ 有Concatenate接编码的信息后面跟着什么下一个 DilRes继续缩小Up Sampling上采样放大打个比方拆房子把砖一块块拆下来分类堆好建房子把砖一块块砌上去还原成房子让后其他都是一一对应的经历了三次下采样让后又经历了三次上采样最后经过conv进行分类那编码器的conv与解码器的conv有什么不一样呢对比前面的 Conv编码 / 解码里的最后这个 Conv输出层 / 解码器的作用提取特征、处理特征分类、输出最终结果卷积核大小通常 3×3看局部通常 1×1只看当前像素通道数变化通道数变多 / 变少特征变换通道数变成类别数比如 14 类就 14 通道打个比方厨师切菜、炒菜、调味服务员把菜端上桌给客人吃这里针对卷积核进行解释卷积核就相当于你在图上截取一小块用这一小块去在这张图上一一进行对比能对得上的部分就会高亮对不上的地方就会变暗所提取的特征就是对的上的部分。1×1 卷积核是 通道变换专家只看当前像素专门改通道数、混合通道信息参数少、速度快3×3 卷积核是 特征提取专家看周围一圈像素专门提取边缘、纹理、形状等空间特征参数多、功能强AVG Dilated平均膨胀卷积就是用不同的膨胀率去看图像因为当你的膨胀率取得很大时有可能把不相关的信息也看到了所以这时候就需要有不同的膨胀率大的看的广小的看的细只有这两种结合起来才能发挥较好的作用。这张图可以看到是和上面的那种图有点不同的既相似又不同不同是为了这张图里面加了Transformer模块加入这个模块能够使得模型看的更广之前的架构因为是只有一条CNN的线所以他看的范围很有限只能处理细小的纹理特征但是加上这个模块以后就能处理轮廓等全局的特征。一一解释里面的各层作用Embedded Sequence嵌入序列把图片切成一小块一小块的变成 Transformer 能看懂的 序列 格式。MSAMulti-Head Self-Attention多头自注意力这是 Transformer 最核心的部分专门用来让每个位置都和所有位置 打招呼看看它们之间有没有关系。每个小方块patch都派出三个 代表Query我要找谁Key我是谁Value我有什么信息每个 patch 都拿着自己的 Query去和所有 patch 的 Key 比一比看看相似度越相似就越关注它的 Value信息最后把所有信息加权求和就是这个 patch 新的特征对树冠分割的好处1能发现 左上角这块绿色 和 右下角这块绿色 其实是同一棵大树的两部分2能理解 树的形状应该是圆形的不会把奇形怪状的东西当成树MLP多层感知机对每个位置的特征做一次 深加工让特征更有表现力。就是两层全连接层中间加个激活函数每个 patch 的特征独立处理不跟其他 patch 交流Layer Norm层归一化把数据 校准 一下让数值不要太大或太小训练更稳定。把每个样本的特征减去均值除以标准差让数据的均值是 0方差是 1为了让训练更稳定不容易梯度消失或爆炸收敛更快让后这种操作经历了四次由于Transformer输出的是一个个序列所以要经过reshape操作把序列变为图片的操作与CNN进行融合一起传给解码器部分。让后其他操作就跟上面讲的一样了。上面这个表格是为了说明一个标准的、基于Gabor的、可训练的Log - Gabor函数参数化初始卷积层对语义分割性能的影响。最后发现Log - Gabor效果是最好的上面这张表是为了展示PerceptiveNet在这三个数据集上的提升优势上面是热力图的对比很明显能够看到最右边的一列更接近原图与各个不同纯CNN模型架构进行对比结果还不错带 Transformer 的模型大比拼结果就是作者提出的框架都是比较好的。航拍树冠语义分割由视觉上相似的树种组成的密集森林( Treecrown )。左列显示原始图像右边的列显示了标记的掩码和分割结果。红色圆圈表示枯死的树木。这张图可以很清晰的看到LogGab PerceptiveNet比其他的效果都要好不光是把不同类的树分出来了还能把枯死的树也分出来这很不容易。最后这篇论文说提出的混合CNN - Transformer模型PerceptiveNeTr说明了其在捕获长程依赖和全局上下文方面的优势。虽然PerceptiveNeTr的性能指标低于我们的纯CNN PerceptiveNet但它为未来的研究奠定了基础旨在整合先进的Transformer模型如层次视觉Transformer以及预训练的模型来提高性能。重要的是这种比较强调了我们的PerceptiveNet骨干在各种应用中的健壮推广。未来可以进行整合更先进的Transformer模型或者预训练模型去提高性能。