赞
踩
论文:https://arxiv.org/pdf/1711.07971.pdf
代码:https://github.com/facebookresearch/video-nonlocal-net
问题:图像中的长距离依赖难以捕捉
在图像识别任务中,图像的不同部分之间可能存在重要的关联,即使这些部分在图像中相距很远。
例如,在理解一个场景中的物体关系时,远处的背景可能对识别前景物体至关重要。
传统解法:深层卷积神经网络(CNN)
本文解法:非局部神经网络
传统CNN方法:通过增加网络深度,逐步增大感受野,希望能捕获到更远处物体的信息。
这种方法(卷积+下采样的池化层)虽然在某种程度上有效,但计算成本高,且当依赖关系跨越很长距离时,效果可能不理想。
非局部神经网络方法:通过插入非局部操作块,直接计算图像中任何两点之间的关系,无论它们相距多远。
这种方法能够更直接有效地捕获长距离依赖,对于场景理解等复杂任务表现更好,同时保持了较低的计算复杂度。
本文的非局部神经网络及其相关技术主要聚焦于解决深度学习模型中的长距离依赖问题,特别是在图像处理、视频分析、自然语言处理等领域。
这些技术通过考虑输入数据中远距离元素之间的关系,能够捕捉和利用这些信息以提高模型的性能。
我们将非局部神经网络与其他一些流行技术进行对比,以突出其独特之处和应用场景。
非局部神经网络 vs. 卷积神经网络(CNN):
非局部神经网络 vs. 循环神经网络(RNN):
非局部神经网络 vs. Transformer:
采用自注意力机制改进的方法:
应用场景选择:
选择非局部神经网络还是其他技术,取决于特定任务的需求:
结论: 非局部神经网络及其相关技术在处理长距离依赖方面提供了一个强有力的工具,尤其适用于那些传统方法难以处理的复杂空间和时间数据依赖问题。
非局部块(Non-local Block)是一种设计用于捕捉深度学习模型中长距离依赖关系的结构,可以被集成到各种现有的神经网络架构中,如卷积神经网络(CNN)或循环神经网络(RNN)。
非局部块的设计灵感来源于非局部均值操作,它通过计算输入特征图中任意两点之间的关系来直接捕捉全局依赖,而不仅仅是局部邻域的信息。
上图是,如何通过权重平均所有位置的特征来计算特定位置的响应。
例如,它关联了第一帧中的足球和最后两帧中的足球。
其实非局部操作可以关联第一帧中足球的位置与后续帧中足球的位置,即使它们在时间和空间上是分离的。
这种关联有助于网络更准确地识别和理解足球运动的整个序列。
非局部块的工作机制包括以下步骤:
成对关系函数 (f): 计算不同帧之间的相似度或关系(如足球在不同帧中的位置),从而实现帧与帧之间的关联。
表示函数 (g): 提取每帧中足球位置的特征表示,这些特征可以是足球的形状、颜色或其他视觉特征。
归一化函数 (C(x)): 确保计算得到的响应在不同帧间是比例适当的,以避免由于帧数变化带来的影响。
残差连接: 允许网络在添加非局部块的同时保留原始特征,确保新旧信息的有效融合。
灵活性: 非局部块可以插入网络中任何需要捕捉长距离依赖的层中,提供对全局信息的理解以及对局部特征的敏感性。
通过这种方式,非局部神经网络在视频分类任务中实现了对足球动作序列的全局理解,如从起踢到落地的整个运动过程,即使这些动作在视频中是分散的。
这种全局理解对于复杂动作的准确分类至关重要。
非局部块的设计细节:
非局部块的核心是一个基于非局部操作的计算单元,其基本形式可以表示为:
这里:
非局部块的具体实现步骤包括:
成对关系函数 (f):这个函数计算了位置 (i) 与其他所有位置 (j) 之间的关系。
一个常见的选择是使用嵌入式高斯函数来计算这种相似度。
用于评估任意两帧之间的相关性。
例如,使用嵌入式高斯函数来计算不同帧之间的相似度,从而捕获动作的连续性和变化。
表示函数 (g):这个函数用于获取位置 (j) 处的输入信号的表示,通常通过一个线性变换(例如,权重矩阵 ( W g ) (W_g) (Wg))来实现。
提取每一帧的特征表示。
通过对每个位置(即每一帧)应用线性变换,提取对理解视频内容有用的特征。
归一化:通过 C ( x ) C(x) C(x) 实现,确保了整个操作的输出不会因为特征数量的不同而产生过大的变化。
确保所有帧贡献的总和被适当标准化,保持响应的稳定性。
残差连接:为了将非局部块无缝集成到现有网络中并保持网络性能,通常会在非局部块的输出上添加一个残差连接,即 z i = W z y i + x i z_i = W_z y_i + x_i zi=Wzyi+xi,其中 W z W_z Wz 是可学习的权重矩阵,用于调整非局部操作的输出,以匹配输入 x i x_i xi 的维度,“+” 表示残差连接。
保证非局部块可以无缝集成到任何预训练模型中,增强而不替代原有的特征提取能力。
灵活性:非局部块可以被插入到神经网络的任意位置,既可以用来捕捉早期特征的全局依赖,也可以用于更深层次的特征。
这种设计使得非局部块既可以增强模型对全局信息的理解,也保持了对局部特征的敏感性。
非局部块通过这样的设计,能够有效地增强深度学习模型对全局依赖的捕捉能力,这对于处理图像识别、视频分类等需要理解复杂空间或时空关系的任务尤为重要。
整合全局信息:
操作:非局部块通过遍历视频中的所有帧,基于成对函数和表示函数计算得到的权重,整合全局信息。
整篇文章的核心解法是引入非局部神经网络来增强深度学习模型对视频内容中长距离时空依赖的捕捉能力,特别是在视频分类任务中。
这一解法通过几个关键概念和技术构建而成,形成了一个系统的方法来提高模型性能。
非局部块的详细结构:
输入特征图(X): 输入信号是具有时间(T)、高(H)、宽(W)和通道数(1024)的四维特征图。
变换函数(θ, φ, g):
计算关系权重: 使用θ和φ变换后的特征计算两个位置之间的相似度,通常涉及到计算点积并应用softmax函数来获取归一化的注意力权重。
应用权重: 将计算出的注意力权重应用到由g变换得到的特征上,这通常通过矩阵乘法实现。
加权特征组合: 对于每个位置i,将所有位置j的加权特征求和,得到非局部操作的输出。
归一化因子(C(x)): 通常情况下,为了使非局部操作的输出与输入特征图保持一致的尺度,需要通过归一化因子C(x)来调整。
输出特征图(Y): 最终,非局部操作的输出是通过在输入特征图X上加上经过非局部处理的特征图得到的,这一步通常涉及到残差连接和一个1×1×1的卷积操作Wz。
残差连接: 为了融入原始特征并防止训练过程中的性能退化,输出特征图Y会与输入特征图X进行元素级的相加。
通过这个结构,非局部块能够在每个位置捕捉全局依赖,不仅包括空间位置之间的关系,还包括跨时间的动态变化,这对于理解复杂的视频序列至关重要。
这种设计使得网络能够强调重要的特征并抑制不相关的信息,从而提高视频分类任务的准确性。
整体关联图:
2D ConvNet基线(C2D):提供了处理视频的起点,主要关注于图像的空间特征,而时间信息通过简单的池化操作来整合。
这是最基础的视频处理模型,主要强调单帧图像的处理。
膨胀的3D ConvNet(I3D):在C2D的基础上增加了对时间维度的直接处理,通过将2D卷积核“膨胀”成3D形式,使得模型能够在空间和时间上同时捕捉特征。
这一步提升了模型对视频中动态内容的理解能力。
非局部网络:在C2D或I3D模型的基础上进一步增强,通过插入非局部块来捕捉全局的时空依赖。
非局部网络不仅关注局部信息,还能够理解视频中任意两点之间的长距离关系,从而全面提升模型对复杂视频内容的理解。
成对关系函数 (f):在非局部块内部,用于计算视频帧之间的相似度或关系,是捕捉全局依赖的关键。
表示函数 (g):用于提取每个位置(视频帧)的特征表示,与(f)函数配合使用,强化模型对每一帧的理解。
归一化:确保非局部块的输出在不同视频或帧数下保持稳定,通过归一化处理来平衡各个位置的贡献。
残差连接:保证非局部块可以无缝集成到任何预训练模型中,增强模型性能的同时,避免破坏原有的学习成果。
这些概念和技术的关联图可以想象为一棵树:
通过这样的结构,非局部神经网络能够有效地增强深度学习模型对视频内容的全局理解,特别是在处理需要理解长时间跨度内复杂动态的视频分类任务时。
实验结果表明,即使在基线C2D模型中添加一个非局部块也能显著提高模型的分类性能,表现为在验证集上的准确率有所提高。
将单个非局部块添加到ResNet的不同阶段的结果表明,无论是在网络的早期阶段还是后期阶段添加非局部块,都能带来性能的提升,但是添加到空间尺寸较小的res5阶段时提升稍小。
这可能是因为在较小的空间尺寸上,模型提供的空间信息不足以进行精确的空间关系分析。
增加更多非局部块的实验结果表明,在网络中添加更多的非局部块可以进一步提高性能,特别是当这些块被添加到不同的网络层级时,它们可以执行长距离多跳通信,帮助模型更有效地捕捉复杂的时空依赖关系。
更新中…
路径:ultralytics-main\ultralytics\nn\tasks.py
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。