news 2026/7/7 5:51:03

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Bridging Classical and Modern Computer Vision: PerceptiveNet for Tree Crown Semantic Segmentation

本次讲解的文章是CVPR上一篇关于树冠语义分割的文章,作者为Voulgaris,Georgios来自于牛津大学。

这篇文章的主要贡献是提出一个PerceptiveNet体系结构,这个架构能够有效的解决由于树种类太过相似,枯死的树,稠密的树冠状等等,导致分割的效果不理想这类问题。

那他是怎么实现的呢?请看这张图

先给大家解释一下里面的各个术语的意思,在(a)部分当中的编码器部分Encoding里LogGabConv是作者提出的一种新的由可训练的Log - Gabor函数参数化的卷积层。它与普通卷积的差别如下~

对比维度普通卷积层LogGabConv 层人话解释
1. 初始化方式滤波器参数随机初始化,从零开始学Log-Gabor 函数初始化,起点就很高普通的像 "从零开始学走路";LogGabConv 像 "生下来就会跑"
2. 数学原理没有固定数学形式,完全靠数据学出来基于对数 Gabor 函数,有严格的数学理论支撑普通的像 "瞎猫碰死耗子";LogGabConv 像 "按菜谱做菜"
3. 零 DC 分量❌ 有 DC 分量,受整体亮度影响大✅ 零 DC 分量,不受整体亮度影响普通的:照片一暗就看不清;LogGabConv:亮暗都一样准
4. 正交性❌ 不同滤波器之间互相重叠,信息重复✅ 正交性好,各干各的,不重复普通的:几个记者抢着采访同一个人;LogGabConv:分工明确,各采访各的
5. 频率覆盖❌ 不均匀,中频好,高低频差✅ 对数尺度,覆盖均匀,高低通吃普通的:便宜耳机,只听得见中音;LogGabConv:HiFi 音响,高低音都清晰
6. 空间定位❌ 边缘模糊,定位不准✅ 边缘锐利,定位精准普通的:近视眼,看东西糊;LogGabConv:2.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 能看懂的 "序列" 格式。

MSA(Multi-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模型,或者预训练模型去提高性能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 1:40:25

全国省市县温室气体排放量数据(1970-2023)

数据来源数据来源于EDGAR,由数据皮皮侠团队人工整理,全部内容真实有效。时间跨度1970-2023区域跨度全国省市县数据格式数据格式为Excel形式数据简介该数据为每个部门和国家的三种主要温室气体(CO2、CH4、N2O)和氟化气体的排放量估计值。CO2化石和生物成分…

作者头像 李华
网站建设 2026/7/8 1:42:11

从零到一:AVA Actions Dataset 实战解析与避坑指南

1. AVA Actions Dataset 基础入门 1.1 什么是AVA数据集? 第一次接触AVA Actions Dataset时,我被这个看似简单实则复杂的数据集搞得晕头转向。简单来说,这是一个专门用于时空行为检测的视频数据集,主要用来识别视频中人物的动作和…

作者头像 李华
网站建设 2026/7/8 1:42:41

循环变量、路由增强与内存优化:Go 1.22 新特性的工程级解读

循环变量、路由增强与内存优化:Go 1.22 新特性的工程级解读 一、循环变量陷阱终结:Go 1.22 最值得升级的理由 Go 1.22 之前,for 循环变量在每次迭代中复用同一内存地址,这是 Go 最臭名昭著的陷阱之一。在循环中启动 goroutine 并…

作者头像 李华
网站建设 2026/7/8 1:41:52

现代美式装修品牌的性价比公司

装修是一件让人又爱又怕的事儿,尤其是选择现代美式风格,既要那种大气优雅的感觉,又得考虑性价比。今天就给大家介绍一个超棒的品牌——圣蒂斯堡,看看它为啥能在众多品牌中脱颖而出。解决用户痛点,实力有目共睹很多人装…

作者头像 李华
网站建设 2026/7/7 23:32:09

2026深度实测:企业级AI编程工具选型全指南

作为一个在电商公司做秒杀系统的开发者,AI 编程工具对高并发代码的建议质量是核心指标。5 款工具对比。去年我们团队启动车联网数据平台「星云V2.0」的迭代项目,当时赶Q4的上线节点,全组人连轴转了三周,我第一次接触到TRAE&#x…

作者头像 李华
网站建设 2026/7/3 13:35:00

MapStruct进阶:解锁映射器在复杂业务场景下的高阶技巧

1. 默认值与常量的实战技巧 在真实业务场景中,处理空值是最常见的需求之一。MapStruct的defaultValue就像给你的数据上了保险——当源字段为null时,它会自动填充预设值。我在电商系统中处理商品信息时,经常遇到前端传空字符串的情况&#xf…

作者头像 李华