【YOLOv8改进】Non-Local:基于非局部均值去噪滤波的自注意力模型 (论文笔记+引入代码)

YOLO目标检测创新改进与实战案例专栏

专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLO基础解析+创新改进+实战案例

介绍

image-20240521225930076

摘要

卷积和循环神经网络中的操作都是一次处理一个局部邻域,在这篇文章中,作者提出了一个非局部的操作来作为捕获远程依赖的通用模块。
受计算机视觉中经典的非局部均值方法启发,我们的非局部操作计算某一位置的响应为所有位置特征的加权和。而且,这个模块可以插入到许多计算机视觉网络架构中去。

创新点

  • 提出的non-local operations通过计算任意两个位置之间的交互直接捕捉远程依赖,而不用局限于相邻点,其相当于构造了一个和特征图谱尺寸一样大的卷积核, 从而可以维持更多信息。
  • non-local可以作为一个组件,和其它网络结构结合,经过作者实验,证明了其可以应用于图像分类、目标检测、目标分割、姿态识别等视觉任务中,并且效果不错。
  • Non-local在视频分类上效果很好,倾向于使用在视频分类这个领域中。

文章链接

论文地址:论文地址

代码地址:代码地址

参考代码:代码地址

参考代码:代码地址

基本原理


1. Non-local自注意力模型

Non-Local是由王小龙等人在2018年的计算机视觉与模式识别会议(CVPR 2018)提出的一种自注意力模型。该模型的灵感来源于非局部均值去噪滤波(Non-Local Means),它不同于传统的基于小区域(如3×3卷积核)的滤波方法。Non-Local操作通过在更大的搜索范围内进行加权,从而捕捉更广泛的上下文信息。更多细节可以参考这篇博客

在Non-Local神经网络(NN)中,'Local’指的是与卷积神经网络中的感受野相关的概念。传统卷积层的感受野通常有限(如3×3或5×5),而Non-Local模块允许感受野覆盖整个输入空间,从而实现全局信息的整合。

Non-Local模块与其他注意力机制模块(如CBAM、SE、BAM、SK)相似,都是可插拔的组件,用于对特征图进行信息细化(refinement)。它是一种有效的注意力机制实现,不过其理论基础更为丰富,可能会相对复杂和难以理解。

Non-local的通用公式:

  • x

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
局部均值滤波Local Non-Local Means Filter)是一种在图像去噪领域应用广泛的算法。它的主要思想是利用相似性原理,从整个图像的像素中寻找与当前像素相似的像素,然后对这些像素进行加权平均,得到去噪后的像素值。 以下是一种改进局部均值滤波算法的Matlab实现: ```matlab function [out] = improved_lnl_filter(img, h, search_window, patch_window) % img: 输入图像 % h: 滤波器参数 % search_window: 搜索窗口大小 % patch_window: 块大小 % 将输入图像转化为double类型 img = im2double(img); % 计算输入图像的size [M, N] = size(img); % 计算搜索窗口和块的半径 search_r = floor(search_window/2); patch_r = floor(patch_window/2); % 初始化输出图像 out = zeros(M, N); % 对每个像素进行处理 for i = 1:M for j = 1:N % 计算当前像素的块 patch = img(max(i-patch_r, 1):min(i+patch_r, M), max(j-patch_r, 1):min(j+patch_r, N)); % 初始化权重和像素值 weight = 0; value = 0; % 在搜索窗口内查找与当前块相似的其他块 for m = max(i-search_r, 1):min(i+search_r, M) for n = max(j-search_r, 1):min(j+search_r, N) % 计算搜索窗口内的块 search_patch = img(max(m-patch_r, 1):min(m+patch_r, M), max(n-patch_r, 1):min(n+patch_r, N)); % 计算当前块与搜索窗口内的块之间的相似度 d = sum(sum((patch - search_patch).^2)); % 计算权重 w = exp(-d/h); % 累加权重和像素值 weight = weight + w; value = value + w*img(m, n); end end % 计算输出像素值 out(i, j) = value/weight; end end % 将输出图像转化为uint8类型 out = im2uint8(out); end ``` 该算法改进在于引入了搜索窗口,通过在搜索窗口内查找与当前块相似的其他块,进一步提高了去噪效果。同时,该算法还可以通过调整滤波器参数、搜索窗口大小、块大小等参数来适应不同的图像去噪需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YOLO大王

你的打赏,我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值