非局部神经网络:从长距离依赖到自注意力,吃透Non-local核心原理
第一次认真吃透 Non-local Neural Network 这篇论文是在一个视频动作识别的项目里被“局部感受野”狠狠教育了之后。当时我们用一套3D卷积网络在几十帧的片段上做分类模型总是把水下场景里的鱼认成一团混乱的纹理。原因其实很直接一条鱼在镜头里游了二十帧从画面左侧一路游到右侧每一个卷积核却只能看到它身边那一小撮像素。这种跨时间、跨空间的长距离依赖恰恰是视频理解里最难啃的骨头。Non-local Neural Network 解决的就是这个问题思路朴素到惊人既然局部操作看不到远处那就把所有位置之间的相似性直接算出来再把相关信息按权重融合进来。论文核心是“非局部操作”Non-local Operation它把图像去噪领域经典的 Non-local Means 算法搬进了深度网络做成了一个即插即用的模块。论文在2017年公开、2018年正式发表之后几乎改写了视觉领域处理长距离依赖的方式也把自注意力机制从机器翻译一路带到了计算机视觉。如果你是做视频理解、目标检测、语义分割的或者单纯想搞清楚视觉 Transformer 出现之前前人到底铺了哪块砖这篇论文都值得静下心来精读。1. 为什么需要 Non-local从卷积的“短视”说起1.1 局部操作的天然局限卷积、池化、循环操作本质上都逃不开“局部”两个字。一个 3×3 卷积核一次只能看到周围 8 个邻居就算堆很多层信息也是逐层往外扩张的路径又长又绕。问题是很多视觉任务里的关键信息根本不在一小块邻域内。以视频为例某个角色在画面里挥手手部像素和面部表情可能隔着几十上百个像素动作发生时身体各部位在时间维上还要跨帧对齐。传统的卷积想要建立这种关联只能靠堆叠层数扩大感受野代价非常大层数加深导致参数量和计算量同步上涨训练更慢优化也更难。每过一层信息的传递都会经过非线性变换距离越远原始信息被“稀释”得越厉害。感受野大不代表网络真的学会了用远处的信息。经验感受野远小于理论感受野这是个在多个实验里被反复验证过的现象。而池化虽然能快速扩大感受野但它是下采样会丢失空间细节。对于需要精确定位和关联的任务比如动作识别里“手靠近嘴”这种细粒度语义粗糙的位置信息远远不够。1.2 灵感来源图像去噪里的 Non-local Means这篇论文最巧妙的地方是把一个 2005 年提出的经典图像去噪算法重新激活了。名字里的 Non-local 直接取自 Non-local Means。去噪场景里有个基本观察一张自然图像里存在大量重复的结构比如草地上的纹理、砖墙的图案。给某个像素去噪时与其只看它周围的小窗口不如在全图范围内找到所有“长得像它”的像素取加权平均。这样做的好处是统计样本多了噪声被平均掉的效率更高细节保留得也更好。深度网络里的 Non-local 操作把这种“全局加权平均”的思路升级成了可学习的模块。区别在于Non-local Means 里的相似度是手工定义的比如像素块之间的欧氏距离而 Non-local 网络里的相似度函数 f 是可以训练的。Non-local Means 是后处理算法跑一次就不动了而 Non-local 网络是端到端训练的一部分梯度可以一路回传到相似度函数的参数里。也就是说网络不仅能学到“哪些位置应该彼此关注”还能针对具体任务调整“用什么标准判断相似”。这个设计空间比传统算法大得多。提示理解 Non-local 的最佳心智模型不是“一个更大的卷积核”而是“一张全图范围的注意力查询表”。每个位置都去问别人你和我相关吗相关的话我把你的信息吸收进来。2. 核心方法Non-local 操作到底做了什么2.1 统一公式拆解论文给出了一个非常干净的通用形式。对于输入特征 x输出 y 在位置 i 上的值定义为y_i (1 / C(x)) * Σ_∀j f(x_i, x_j) * g(x_j)逐项拆开看x_i 是当前位置的特征x_j 是图中任意位置的特征j 遍历所有位置。在视频里这个“所有位置”包括时间维、高度维、宽度维三个方向。f(x_i, x_j) 是相似度函数输出一个标量表示位置 i 和位置 j 之间的关系强度。这个值是整个模块的灵魂。g(x_j) 是变换函数通常用 1×1 卷积视频里是 1×1×1实现先对 x_j 做一次线性变换相当于“先整理一下再输出”。C(x) 是归一化系数用来把加权结果缩放到合理范围。不同形式的 f 对应不同的 C 取值。模块整体嵌在残差结构里最终输出是 z_i W_z * y_i x_i也就是把非局部计算的结果和原始输入相加。这样做的好处是网络一开始可以退化成恒等映射——如果非局部操作暂时没用梯度可以直接跳过它不会破坏训练稳定性。2.2 四种相似度函数怎么选论文一口气给出了四种 f 的实例化方案并做了系统的消融对比。这部分是全文信息量最密集的地方值得细细看。方案相似度公式归一化 C特点实际使用频率Gaussianexp(x_i^T * x_j)所有 j 的 f 之和最简单没有额外参数较少Embedded Gaussianexp(θ(x_i)^T * φ(x_j))所有 j 的 f 之和等价于自注意力效果最稳最常见Dot productθ(x_i)^T * φ(x_j)位置总数 N实现简单无需 softmax数值范围大较少ConcatenationReLU(w_f^T * [θ(x_i), φ(x_j)])位置总数 N表达能力灵活但参数多、速度慢很少Gaussian 形式只做内积没有任何可学习的投影表达力有限。Concatenation 形式把两个特征拼接后过一层 ReLU理论上能拟合更复杂的相似度关系但实测效率和收益都不占优。Dot product 省掉了 softmax梯度传播路径更直接但归一化系数 N 是常数导致不同样本的数值范围差异很大训练时容易波动。Embedded Gaussian 是最实用的选择。它先通过 θ 和 φ 两个 1×1 卷积把特征分别映射到嵌入空间再做内积最后用 softmax 归一化。这个形式在几乎所有任务上表现都最好也最容易调参。2.3 Embedded Gaussian 和自注意力的关系如果你熟悉 Transformer看到 Embedded Gaussian 这一套流程应该会有种强烈的即视感。它和自注意力机制几乎是同构的θ(x_i) 对应 Query查询向量表示“我在找什么”。φ(x_j) 对应 Key键向量表示“我能提供什么”。g(x_j) 对应 Value值向量表示“我实际提供的信息”。softmax 归一化对应注意力权重。公式变成 y_i softmax(θ(x_i)^T * φ(x_j)) * g(x_j)这就是一个标准的注意力头。区别只是 Transformer 里通常还加了一个缩放因子 √d_kNon-local 论文里没有显式加但实践中有人发现加上缩放后训练更稳。这也是为什么后来视觉 Transformer 一出来很多人第一反应是“这不就是 Non-local 换了个包装”。从这篇论文到 ViT、DETR、Swin Transformer核心机制一脉相承。想理解视觉自注意力Non-local 是最自然的第一站。注意Non-local 做的是位置维度的注意力所有位置两两之间都有交互。SE 模块做的是通道维度的注意力全局池化后只对通道加权。两者的关注维度完全不同不要混为一谈。3. 代码实现与工程化细节3.1 一个可以直接用的 PyTorch 实现论文的伪代码非常简洁落地成 PyTorch 代码也不复杂。以 2D 图像输入为例一个标准的 Non-local Block 可以写成这样import torch import torch.nn as nn class NonLocalBlock(nn.Module): def __init__(self, in_channels, inter_channelsNone, modeembedded_gaussian): super().__init__() self.mode mode # 中间通道数通常减半控制计算量 inter_channels inter_channels or in_channels // 2 self.inter_channels inter_channels # 三个嵌入函数theta、phi、g self.theta nn.Conv2d(in_channels, inter_channels, kernel_size1, biasFalse) self.phi nn.Conv2d(in_channels, inter_channels, kernel_size1, biasFalse) self.g nn.Conv2d(in_channels, inter_channels, kernel_size1, biasFalse) # 输出变换 self.W nn.Sequential( nn.Conv2d(inter_channels, in_channels, kernel_size1, biasFalse), nn.BatchNorm2d(in_channels) ) # 残差分支的缩放因子 self.gamma nn.Parameter(torch.zeros(1)) def forward(self, x): batch, c, h, w x.shape n h * w # 得到嵌入特征并把空间维度压平 theta self.theta(x).view(batch, self.inter_channels, n) # B, C, N phi self.phi(x).view(batch, self.inter_channels, n) # B, C, N g self.g(x).view(batch, self.inter_channels, n) # B, C, N # 相似度矩阵B, N, N sim torch.bmm(theta.permute(0, 2, 1), phi) # B, N, C x B, C, N if self.mode gaussian: # 纯内积无嵌入 sim torch.bmm(x.view(batch, c, n).permute(0, 2, 1), x.view(batch, c, n)) sim sim / n elif self.mode embedded_gaussian: # softmax 归一化等价于自注意力 sim torch.softmax(sim, dim-1) elif self.mode dot_product: sim sim / n elif self.mode concatenation: # 需要额外定义 w_f这里省略具体实现 raise NotImplementedError(concatenation 实现请参考原论文附录) # 加权聚合B, N, C - B, C, H, W out torch.bmm(g, sim.permute(0, 2, 1)) # B, C, N out out.view(batch, self.inter_channels, h, w) # 输出变换并做残差连接 out self.W(out) return x self.gamma * out代码里的几个细节值得注意gamma 初始化为 0这是为了让模块在训练初期不干扰主网络从零开始逐渐学习。这个 trick 在很长一段时间里都是视觉注意力模块的标准做法。BatchNorm 放在 W 卷积之后而不是之前。我试过把 BN 放在前面收敛速度会变慢准确率也有轻微下降。矩阵乘法的维度顺序很容易写错。写完之后建议先用一个小张量把 shape 打印出来核对一遍否则跑起来才发现维度对不上排查很浪费时间。3.2 显存、通道裁剪与放置位置的经验Non-local 最大的工程障碍是显存。相似度矩阵的尺寸是 B × N × N其中 N 是特征图的时空尺寸乘积。对一张 128×128 的特征图N 是 16384注意力矩阵就是 16384×16384单是存这个矩阵就要超过 1GB 的显存如果用 float32。视频输入还要再乘一个时间维度压力更大。工程上常见的缓解手段有几种通道减半inter_channels 设为输入通道的一半甚至四分之一相似度矩阵本身不受影响但嵌入计算和后续聚合的计算量会明显下降。放在分辨率较低的特征图上比如放在 ResNet 的 res3 或 res4 之后而不是接在浅层高分辨率特征上。原论文里的消融实验也表明放在越靠后的层效果越好同时显存压力也越小。分块计算如果 N 实在太大可以把空间切成几个 block计算每个 block 内部的注意力用局部非局部的近似换取效率。后续很多工作走的都是这个路线。放置位置还需要考虑任务类型。视频分类通常把模块插入到 3D ResNet 的每个 stage 末尾检测分割任务一般放在 backbone 的最后一个 stage 之前。一个通用的经验是放在语义信息已经比较丰富、但分辨率还没压到最低的层收益最明显。放在最底层刚输入图像时注意力图的语义性很差效果提升也很微弱。3.3 和 SE、SNN、3D卷积的对比定位Non-local 经常被拿来和 SE Block、Spatial CNNSNN以及3D卷积做比较但它们的定位完全不同SE Block 只做通道注意力把所有空间位置池化成全局向量再逐通道加权。它没有空间位置维度的重新分配能力。SNN 做了空间维度的信息传播但只在局部小邻域内迭代传递仍然需要很多步才能覆盖长距离。3D卷积通过把时间维纳入卷积核确实能捕获跨帧信息但感受野依然是局部的而且3D核的参数量很大不如 Non-local 灵活。Non-local 一步到位直接建模全图任意两点的关系信息路径最短梯度也能直达任意远的位置。实际项目里它们不是互斥关系。我见过不少效果不错的方案都是 backbone 里加了 SE中高层再加 Non-local两者互补。SE 让网络知道“哪些通道重要”Non-local 让网络知道“哪些位置应该互相看”分工明确。4. 实验效果与应用场景4.1 视频理解动作识别的关键提升论文在视频分类上做了大量实验最核心的指标是 Kinetics 数据集上的 Top-1 准确率。和基础的 C2D2D卷积逐帧处理相比加入 Non-local 后准确率提升约2到3个百分点在更强的 I3D 骨干上额外增加1个多点。看起来数字不大但动作识别数据集上每个点都很难啃这个增益已经很有价值。更值得玩味的是消融实验中的几个趋势把 Non-local 加在时间维、空间维都有效的但时间维的增益略高一点因为传统卷积处理跨帧对应关系最吃力。四种 f 函数对比中Embedded Gaussian 和 Gaussian 差距不大但 Embedded Gaussian 对超参更鲁棒。Concatenation 形式在 Video 数据集上耗时长、收益也不占优。多个 Non-local Block 叠加时收益会边际递减。论文里加 5 个模块比加 1 个模块提升有限但显存开销却线性增长。我的建议是先用 2 到 3 个别贪多。在 Charades 这种多标签、长时序、动作精细的数据集上Non-local 的收益更明显。因为多标签场景里判断“这个人是否在喝水”绝对依赖“手、杯子和嘴”三个跨区域部位的长距离交互。单靠局部卷积很难把这些线索组织起来。4.2 检测、分割、姿态估计上的表现虽然论文主打视频但 Non-local 作为通用模块在图像任务上也很快被验证。实验组在 COCO 检测和实例分割任务里把模块插入标准检测框架的 backbone 中AP 提升大约 1 到 2 个点。这个增益和更换更大骨干网络相比性价比很高毕竟加一个模块的成本只有几百万参数。语义分割任务里也有不少应用。长距离依赖对分割至关重要——一张图里一大片天空应该归类为同一个语义类别但这片天空可能跨越很宽的像素范围。Non-local 能直接让远处的同类像素建立联系边缘处的分割一致性明显改善。姿态估计任务同样受益。人体关节之间存在强结构性依赖左手腕出现右手腕大概率也在附近而且手和肩膀的空间关系相对固定。Non-local 能天然建模这种关节间的长程约束早期不少姿态估计方法都把它当作标配模块。4.3 从 Non-local 到后来的 GCNet、CCNet 与视觉 TransformerNon-local 的意义远不止这篇论文本身。它开启了一系列后续工作沿着不同方向演进GCNetGlobal Context Network发现了一个看似反直觉的现象Non-local 训练收敛后不同位置的注意力图趋同也就是说模型其实不需要为每个位置单独计算一遍全局注意力完全可以共享一个全局上下文向量。于是它把 Non-local 简化成“全局池化 1×1 卷积 广播相加”计算量大幅下降效果几乎不掉。CCNetCriss-Cross Attention把 Non-local 的 N×N 稠密注意力矩阵改成十字形稀疏注意力通过堆叠两次交叉注意力来近似全局建模把复杂度从 O(N²) 降到 O(N√N)。A2-Nets 把注意力分解成“先聚合再分发”的结构和 GCNet 的思路异曲同工。视觉 TransformerViT、DETR、Swin则直接把 Non-local 的 Embedded Gaussian 形式升级成了完整的自注意力层加了多头、位置编码、缩放因子变成了另一套体系。所以读这篇论文时别把它当成一个孤立的 trick。它其实是视觉模型从“局部归纳偏置”走向“全局关系建模”的分水岭。把论文里的公式吃透再看后续一大堆注意力机制的论文都会有“原来都在同一个框架里变形”的感觉。5. 复现过程中踩过的坑和排查心得5.1 显存爆炸、训练不稳怎么破在复现和落地 Non-local 的过程中我踩过的坑基本集中在三个方面列出来给大家避雷第一个坑是显存失控。第一次在视频任务里用 Non-local输入是 32 帧 224×224 的视频特征图分辨率 56×56N 一下子到了 32×56×56 ≈ 100352。这个数量级的 N×N 矩阵无论如何都装不进显存。最后靠把模块放在 res5 之后、通道数减到 128、batch size 从 8 降到 2才勉强跑起来。建议拿到一个任务先算一笔账N 是多少N² 是多少GLOPs 涨了多少再决定模块插在哪、通道减多少。第二个坑是训练不稳定。Non-local 模块的梯度路径比较长学习率太大会导致早期 loss 波动剧烈。经验做法是把初始学习率调低为原来的 1/2 到 1/5同时加长 warmup。如果你用的是 Adam把 weight decay 适当增大也能让注意力图的分布收敛得更干净。第三个坑是 BN 位置。Non-local 模块里的 BatchNorm 放在哪里对最终效果有一定影响。多个开源实现里 BN 位置并不一致我自己测试的结果是 BN 放在输出变换的最后一个卷积之后效果最稳和上面的代码一致。5.2 什么情况加非局部反而没用不是所有任务都适合加 Non-local这一点我在实际项目里反复体会过。以下几个场景需要谨慎小数据集上的小模型。Non-local 模块本身有一批新增参数如果数据量不足以支撑训练反而可能过拟合导致效果下降。遇到这种情况不如先把骨干模型做大。图像尺寸很小的任务比如 32×32 输入。特征图 N 本身很小局部感受野已经能覆盖大部分区域Non-local 带来的全局信息增益非常有限却白白增加了计算量。实时推理场景。Non-local 的注意力矩阵计算在大特征图上非常慢端侧部署基本不考虑。后续的 GCNet、CCNet 就是为这个问题而生的。针对这些情况建议先用消融实验快速验证收益在验证集上对比加与不加的差异。如果 gain 在 0.2 个点以内说明任务的长距离依赖需求不强或者数据量不足以支撑模块训练果断去掉把预算花在更有价值的地方。5.3 一个小技巧把注意力图可视化出来这是我个人强烈推荐的一个实操环节。训练收敛后挑一张输入样本把某个位置的注意力权重取出来reshape 成和输入同尺寸的热力图叠加在原图上。你会看到几种很有意思的模式背景区域的位置注意力通常均匀分布在全局因为背景信息整体同质。前景物体内部的位置注意力集中在该物体的其他部位上形成清晰的语义“掩膜”。在运动场景里注意力往往会聚集在运动轨迹上下游的位置——这一点和光流有某种直觉上的相似但 Non-local 捕获的是语义相关性而光流捕获的是物理运动一致性两者机制完全不同。我在一个动作识别项目里做过这个实验输出注意力图可以看到当模型关注手持球拍的手部像素时注意力会跳到球拍顶端和对面场地这种自发涌现的语义关联比任何论文里的指标数字都更能让人理解 Non-local 到底学了什么。这个小技巧也可以用来排查模型问题如果某个类别的注意力图毫无结构说明该类别没有被 Non-local 正确建模可以考虑增加该类别的训练样本或调整模块位置。我个人在实际操作中最大的体会是Non-local 这类模块的价值不只在指标提升更在于它给网络提供了一个显式的、可解释的关系建模通道。它让“网络关注哪里”这件事第一次变得可视化、可控化。读论文的时候把公式吃透、代码跑通、注意力图画出来这三步做完基本就真正吃透了 Non-local Neural Network。下一篇可以接着聊聊 GCNet看看这个“注意力图趋同”的发现是怎么把 Non-local 一步步简化到几乎白嫖的。

相关新闻

模仿学习实战指南:BC、DAgger、GAIL三大范式端到端实现

模仿学习实战指南:BC、DAgger、GAIL三大范式端到端实现

简介:本资源是一套面向深度强化学习研究者与进阶开发者的模仿学习算法开源实现,聚焦于在PPO策略框架下对比分析主流逆强化学习与行为克隆方法。涵盖AIRL、BC、DRIL、FAIRL、GAIL、GMMIL、nn-PUGAIL、RED等8种核心算法,并支持状态-only模仿、吸…

2026/10/17 2:06:32 阅读更多 →
AI行业日报:推理优化、多模态RAG与端侧模型成焦点

AI行业日报:推理优化、多模态RAG与端侧模型成焦点

1. 今日AI圈的大盘:行业消息密度在回升春节后的第二周,圈子里明显热闹起来了。大家应该都有感觉,一二月那阵子像是行业冬眠期,大事少,爆款也少;到了三月上旬,融资消息、开源发布、论文首发开始密…

2026/10/17 2:06:32 阅读更多 →
SmolLM2-135M-Instruct 许可证与合规指南:MIT、Apache 2.0 与 Ryzen AI TPN 三方许可要点全解析

SmolLM2-135M-Instruct 许可证与合规指南:MIT、Apache 2.0 与 Ryzen AI TPN 三方许可要点全解析

【免费下载链接】SmolLM2-135M-Instruct_rai_1.8.0_hybrid 项目地址: https://ai.gitcode.com/hf_mirrors/amd/SmolLM2-135M-Instruct_rai_1.8.0_hybrid 点击查看 免费下载 SmolLM2-135M-Instruct 是由 Hugging Face 发布的超小型指令模型,而 SmolLM2-1…

2026/10/17 2:06:32 阅读更多 →

最新新闻

帧同步详解:核心原理、确定性挑战与工程实践

帧同步详解:核心原理、确定性挑战与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 2:41:39 阅读更多 →
【教育、艺术、语言、文化、社会学等人文社科主题欢迎投稿 | 厦门会议】第五届教育科学与社会文化国际学术会议(ESSC 2026)

【教育、艺术、语言、文化、社会学等人文社科主题欢迎投稿 | 厦门会议】第五届教育科学与社会文化国际学术会议(ESSC 2026)

第五届教育科学与社会文化国际学术会议(ESSC 2026) 2026 5th International Conference on Educational Science and Social Culture 在全球化与数字化交织的当代社会,教育科学的革新与社会文化的传承发展正面临前所未有的机遇与挑战。自创…

2026/10/17 2:41:39 阅读更多 →
基于MP2642GR-Z与MKV58F1M0VLQ24的两串电池被动均衡方案

基于MP2642GR-Z与MKV58F1M0VLQ24的两串电池被动均衡方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 2:41:39 阅读更多 →
【落地昆明 | 华南理工大学主办 | CNKI、Google Scholar检索】第九届土木建筑、水电与工程管理国际学术会议(CAHEM 2026)

【落地昆明 | 华南理工大学主办 | CNKI、Google Scholar检索】第九届土木建筑、水电与工程管理国际学术会议(CAHEM 2026)

第九届土木建筑、水电与工程管理国际学术会议(CAHEM 2026) 2026 9th International Conference on Civil Architecture, Hydropower and Engineering Management 在全球城市化与基础设施迭代升级的推动下,土木建筑、水利水电与工程管理正成…

2026/10/17 2:41:39 阅读更多 →
微信小程序实战:实现诗句文字颜色自动随机变化效果

微信小程序实战:实现诗句文字颜色自动随机变化效果

前言在微信小程序开发中,动态改变页面元素的样式是一项非常基础且实用的技能。今天我将通过一个完整的实战案例,带大家实现一个“诗句文字颜色自动随机变化”的小程序。这个案例的最终效果是:页面上展示一首诗(包含标题、作者、正…

2026/10/17 2:41:39 阅读更多 →
AgentScope Java v2 第2课,ReActAgent 的循环引擎

AgentScope Java v2 第2课,ReActAgent 的循环引擎

开场:三个预测,三个全错 上一课看的是事件怎么流,这一课看循环怎么停。结论先摆桌上:ReAct 循环有三种收场——正常收束、打满降级、用户中断,前两种都以 RUN_FINISHED 结束,RUN_ERROR 只留给流上真正的 T…

2026/10/17 2:40:38 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →