Adaptive Affinity Fields for Semantic Segmentation 阅读笔记

本文探讨了Adaptive Affinity Fields(AAF)在语义分割中的应用,介绍了一种从像素级监督转向区域级监督的方法。AAF通过引入不同大小的核进行相似场损失计算,并利用对抗学习自适应调整核大小,提升分割精度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AAF阅读笔记,主要对自适应相似场(自适应亲和场)的算法思想做理解和概括,欢迎各位大佬批评指正。

Adaptive Affinity Fields for Semantic Segmentation 论文链接 https://arxiv.org/abs/1803.10335
原作者的实现代码
https://github.com/twke18/Adaptive_Affinity_Fields

1.从像素级监督到区域级监督
Fig 2
Fig. 2 展示了自适应相似场包括两个部分:不同大小的核的相似场损失;对应类别的对抗权重。

2.相似场损失函数
3.通过对抗学习自适应核大小

### 实现频率自适应空洞卷积 为了实现频率自适应空洞卷积(Frequency-Adaptive Dilated Convolution),需要设计一种能够动态调整膨胀率的机制。这种机制允许网络根据不同位置的空间上下文信息自动学习最优的膨胀参数,从而提高语义分割的效果。 下面是一个基于PyTorch框架的简单实现示例: ```python import torch import torch.nn as nn import torch.nn.functional as F class FrequencyAdaptiveDilatedConv(nn.Module): def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, padding=1, dilation_range=(1, 6)): super(FrequencyAdaptiveDilatedConv, self).__init__() # 定义可学习的dilation系数预测层 self.dilation_predictor = nn.Conv2d(in_channels, len(dilation_range), kernel_size=1) self.softmax = nn.Softmax(dim=1) # 创建多个不同dilation rate的conv分支 self.convs = nn.ModuleList([ nn.Conv2d(in_channels, out_channels, kernel_size, stride=stride, padding=d * (kernel_size // 2), dilation=d, bias=False) for d in range(*dilation_range)]) # 初始化权重 for m in self.modules(): if isinstance(m, nn.Conv2d): nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') def forward(self, x): # 预测每个像素点对应的dilation权重分布 weights = self.softmax(self.dilation_predictor(x)) outputs = [] for i, conv in enumerate(self.convs): output_i = conv(x) * weights[:,i:i+1,:,:].expand_as(output_i) outputs.append(output_i) result = sum(outputs) return result ``` 此模块通过引入一个额外的小型卷积层来估计输入特征图上每一个空间位置的最佳膨胀因子,并利用softmax函数将其转换成概率形式作为各个分支输出加权求和的比例[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值