人眼在观察陌生事物时,从来不是按一套死板的程序走到底的。
读一封字迹潦草的手写信,最难认的往往是开头几个字。看得多了,我们渐渐摸清写信人的笔画和连笔习惯,后面的字也就越认越顺。医生阅片、考古学者辨认拓片,也有类似的经验:前面识别出的线索,会影响后面如何观察和判断。
这看起来是一件很自然的事,但对视觉 AI 而言,要实现并不简单。
一张图片进入模型后,哪些区域需要重点关注、不同位置的特征怎样关联,模型已经能够根据眼前的画面作出调整。可在很多现有架构里,决定信息如何被学习、该更新多少、哪些旧信息应当保留的规则,仍主要由训练阶段确定。换一张图片,模型的计算结果会改变,背后的许多学习规则却不会跟着改变。
明略科技与中国科学院自动化研究所的研究团队,正试图推动这一步。双方联合提出 VisionHOPE——首个以自修改学习系统为核心构建的通用视觉骨干网络
它让模型在一次前向计算中,一边读取和保存图像信息,一边根据已读到的内容更新自己的学习方式。前面看过的区域,能够参与决定后面的特征怎样建立关联、学习步长该有多大、已有记忆应保留多少。
这项研究并不只停留在机制设计上。在 ImageNet-1K 图像分类基准上,拥有 52.9M 参数的 VisionHOPE-S 取得 85.2% 的 Top-1 准确率,参数量不到 VMamba-B(89M)的六成,准确率高出 1.3 个百分点;VisionHOPE-B 的准确率达到 85.6%。同时,其自修改机制的核心计算量随 Token 数量线性增长。
论文发布后曾登上 Hugging Face 每日论文榜第 2 名,GitHub 开源仓库也在短时间内收获了近 1000 Stars。目前,研究团队已将全部代码、底层算子与预训练权重按 MIT 协议向社区开放。
- 论文标题:VisionHOPE: Visual Backbones as Self-Modifying Learning Systems
- Hugging Face 论文页:https://huggingface.co/papers/2609.33325
- Hugging Face VisionHOPE 主页:https://huggingface.co/PSRben/VisionHOPE
- GitHub 代码:https://github.com/PSRben/VisionHOPE
视觉模型越来越会 “看”,但学习规则还可以更灵活
要理解 VisionHOPE 的新意,可以先看视觉骨干这些年的变化。
早期的卷积神经网络(CNN)擅长从局部捕捉边缘、纹理等信息。它使用训练好的卷积核提取特征,图像中距离较远的区域,需要经过多层计算才能建立联系。后来出现的视觉 Transformer(ViT),借助自注意力机制,让不同位置能够根据当前图像直接交互。模型看到了更大范围的内容,但生成注意力的投影参数依然固定,而且全局注意力的计算量会随着 Token 数量平方增长,图像尺寸越大,计算压力越明显。
再往后,Mamba 等状态空间模型通过沿序列传递状态,将计算复杂度降至线性。状态转移可以随当前输入变化,但负责从输入生成状态转移的映射,仍由训练阶段确定。TTT(测试时训练)又向前走了一步:它在网络内部设置小型学习器,允许学习器处理图像时更新自身参数。不过,生成学习表征,以及控制更新步长和记忆保留的规则,仍主要在训练时设定。
沿着这条路线看,研究者一直在扩展模型对 “当前这张图” 的适应范围:从局部特征,到全局交互、动态状态,再到内部学习器的参数更新。VisionHOPE 进一步把决定学习方式的参数也纳入了图像内部的更新过程
图片 1|不同视觉架构对当前图像的适应方式:从局部特征、全局交互和状态转移,到内部学习器更新,再到自修改学习。箭头表示图像内适应范围逐步扩大。
这一设计建立在嵌套学习(Nested Learning,NL)及其 HOPE 架构的自指机制之上。简单说,模型处理图像时积累的内容,不只留待最后生成识别结果,还会反过来参与下一步学习规则的调整。
这件事之所以值得关注,也与视觉骨干本身的地位有关。无论是图像识别,还是需要结合图像与语言的多模态系统,视觉骨干都负责提供最基础的视觉表征。此前,MMVP 已揭示多模态模型在基础视觉辨别能力上的缺陷;Cambrian-1 的研究则表明,改善视觉表征能够进一步提升多模态能力。视觉底座怎样理解图像,关系到上层模型能够获得怎样的信息。
表1|不同视觉架构对当前图像的适应方式
把 “怎么学” 交给记忆:VisionHOPE 的三个关键设计
让模型修改自己的学习规则,可以拓展模型的表达能力,但也带来了理论和工程上的新问题。在以自指嵌套学习模块 SRNL 构建通用视觉骨干时,研究团队重点解决了三个问题:记忆如何组织与更新,自指反馈如何保持稳定,以及序列递推如何适配二维图像并高效计算。
五类记忆协同,让 “怎么学” 也随画面变化
VisionHOPE 的核心是一个名为SRNL(自指嵌套学习)的模块。可以把它理解为一套会随着读图过程不断调整的记忆系统。普通的记忆机制着重保存模型已经看到了什么,SRNL 除了保存内容,还会维护影响下一步学习的规则。为此,研究团队设计了五类可更新的参数记忆
其中,内容记忆保存图像信息,供后续读取和输出;Key 记忆负责生成写入索引,让新信息与已有记忆建立关联;Value 记忆参与生成内部学习目标,决定当前学习要朝什么方向修正;学习率记忆控制每次更新的幅度;保留率记忆则决定旧信息在更新时保留多少。
表 2|五类记忆的分工
五类记忆的分工不同,但参与的是同一条学习链路。每当一张新图像进入模型,它们会先从训练中学得的初始状态出发。随着新的图像特征逐个进入 SRNL,现有记忆先生成对应的 Key、Value、学习步长与保留率。随后,五类记忆分别依据自身状态构造学习目标,并将目标与当前响应比较,得到各自的学习信号,完成更新。更新后的状态接着参与下一个 Token 的计算。
回到手写信的例子:我们认出前几个字后,得到的不只是这几个字的内容,还包括对写信人笔迹的一点新认识。往后读时,哪些笔画需要格外留意、哪些相似写法可以快速归类,判断方式都可能发生变化。SRNL 希望在模型内部实现类似的连续调整,只不过它改变的是特征关联、学习步长与记忆保留等具体计算规则。
这样的更新还需要避免 “记得太多”。天空、草地或建筑物的重复纹理中,相邻区域往往包含高度相似的信息。如果每次都把新特征原样加入,重复内容就可能不断堆积。VisionHOPE 使用Delta 梯度下降(DGD):写入前先检查当前记忆对 Key 的响应,再将需要修正的差值写进去,减少无效的重复累积。
关键在于,这些变化发生在同一张图片的处理过程中。模型读到后面的区域时,利用的是前面区域已经参与更新过的记忆,而不必等处理完图片、再重新训练一次模型。
学习规则能变,但也必须保持稳定
让记忆参与调整自己的后续更新,会带来一个直接风险:反馈可能被反复放大。假如某一步更新使记忆数值增大,下一步据此产生的学习信号也可能更强,继而推动记忆进一步增大。这种循环最终可能让训练失去稳定性。论文中的消融实验显示,移除相应约束后,训练在早期就发生了发散。
为此,团队设计了两层稳定性约束。
第一层是软注入上限,平滑地限制每次新反馈的注入强度。旧记忆的保留比例越高,允许注入的新反馈就越少,使两者之和保持在稳定范围内;
第二层是谱截断约束,限制已有记忆在传递过程中的放大幅度,只在候选步长超过稳定上限时生效。
这两层约束还有理论支撑。论文证明,在二者共同作用下,无论是逐 Token 递推还是分块递推,五类记忆的范数都不会沿扫描路径增长到超过初始状态。模型得以不断修正内部学习方式,同时将反馈放大约束在可证明的范围内。
一张图片有上下左右,计算也不能只沿一条路走
解决了 “怎么学” 与 “怎么稳”,另一个需要解决的问题是计算效率。SRNL 本身沿序列递推,但图像是二维的:仅依靠单一方向,难以充分利用上下、左右的空间关系;如果所有 Token 都严格依次更新,又会形成串行瓶颈。
VisionHOPE 因此采用四向扫描:沿行、列分别正向和反向读取图像,形成四条独立路径。每个方向都有自己的五类记忆;扫描结束后,再把结果还原到二维空间,并按通道加权融合,让不同位置能够汇集来自四个方向的信息。
而在计算效率上,为了进一步提速,模型把一整行或一整列视为一个计算块。块内各位置以块起点的记忆状态为基础,并行生成更新需要的中间量;记忆更新再在块内按顺序累积,传递到下一行或下一列。这样既保留了连续更新的机制,也让一部分计算能够借助 GPU 并行完成。
实际测试显示,在单尺度模型 P-VisionHOPE-S 中,将 14 个 Token 设为一个块,推理速度达到逐 Token 版本的 2.86 倍;两者的 Top-1 准确率分别为82.3%82.4%,差距只有 0.1 个百分点。
图片 2 |VisionHOPE 结构。左侧为沿行列双向扫描的二维算子,各方向独立维护五类记忆,通过步长控制保持更新稳定,输出经空间还原后按通道加权融合;右侧为结合局部卷积、前馈网络与残差连接的完整 VisionHOPE Block。
让实验说话:准确率、空间理解与计算效率
一种新的学习机制究竟有没有价值,最终还要回到图像识别任务本身。
研究团队先在ImageNet-1K上验证图像分类能力。在224×224输入分辨率下,VisionHOPE 提供 Tiny、Small、Base 三种规模。与 ConvNeXt、VMamba 的对比结果如下;论文也对 ViT 与 TTT 类骨干进行了完整比较。
表 3|VisionHOPE 与 ConvNeXt、VMamba 在 ImageNet-1K 上的分类结果
在较小规模上,VisionHOPE-T 比 VMamba-T少 3.4M 参数,准确率仍高出1.5 个百分点。VisionHOPE-S 的参数量不到 VMamba-B 的六成,准确率高出1.3 个百分点。在论文对 CNN、ViT、SSM、TTT 四类视觉骨干的比较中,VisionHOPE 各规模的结果均为最优或并列最优。
当然,识别一张图片属于什么类别,只是视觉模型的基础能力。真实图像理解还要判断物体在哪里、轮廓如何划分、画面中的不同区域分别属于什么。为此,团队又将 VisionHOPE 接入下游任务:采用Mask R-CNN测试COCO 目标检测与实例分割,采用 UPerNet 测试ADE20K 语义分割
表 4|VisionHOPE 在 COCO 检测分割与 ADE20K 语义分割上的表现
在 COCO 的1× 训练设置和 ADE20K 的比较中,VisionHOPE 的三个规模均达到同规模最优或并列最优。性能提升由图像分类延续至需要空间定位、边界判断的任务,说明这套机制具有作为通用视觉骨干的潜力。
除了排行榜上的数字,研究团队还试着观察模型究竟怎样处理画面。
第二个网络块的有效感受野对比中,ResNet-50 的响应主要集中在局部;DeiT-S 与基于 TTT 的 ViT³-S 更集中于中心附近;Vim-S 呈现明显的方向性。P-VisionHOPE-S 则覆盖了更大范围的二维区域,同时保持清晰的中心响应。这意味着它在较浅层就能够综合较大范围的图像信息。
图 3|不同视觉骨干在第二个网络块的有效感受野对比。输入为 512×512,颜色越深表示该区域对中心特征的相对影响越强。
另一组可视化展示了学习步长在图片中的空间分布:较大的学习步长往往与主体物体、显著结构重合,背景及相对平坦的区域则较小,直观呈现出它确实在根据图像内容调整内部的学习幅度。
图 4|图像内容与实际学习步长的空间分布。每组上行为输入图像,下行为学习步长;深色表示在该图像内采用了相对更大的步长。
步长较大的区域多与图中的主体物体和显著结构重合,背景和平坦区域的步长较小。这说明内部更新的强度会随图像内容在空间上变化,图像内容在被提取特征的同时,也参与决定了模型在各个位置如何更新记忆。需要说明的是,步长大小并不等同于参数的实际改变量,后者还取决于学习信号的大小。
代码已经开放,既能直接使用,也能拆成模块
VisionHOPE 的研究成果已经以开源形式提供。团队开放了训练与评测流程、底层算子和预训练权重,开发者可以直接加载完整视觉骨干开展分类或下游任务,也可以只取其中的部分模块,尝试接入自己现有的网络。
具体而言,项目提供了四种调用层次:
这四种接口覆盖了从基础序列学习研究,到二维视觉算子、完整网络模块,再到预训练模型应用的不同需求。其中,SRNL、VisionHOPEOperator 和 VisionHOPEBlock 都保持输入与输出张量的形状不变,并支持PyTorch 自动求导,便于集成进已有模型。
在部署方面,项目提供了适用于Linux、NVIDIA GPU、CUDA 12.1 与 Python 3.10的安装示例,底层 CUDA 算子会在首次调用时自动编译。预训练权重可以从 Hugging Face 下载,通过 `create_model` 加载。需要加速推理时,可以使用 `prepare_for_inference` 原位融合模型参数;如果还要继续训练,建议保留一份未融合的模型。文末附录保留了完整安装及调用示例。
从读懂一张图,到积累更长的视觉经验
VisionHOPE 现在能够做到的,是让模型在处理同一张图像时,既更新内容记忆,也更新影响后续学习的规则。五类记忆的协同、自修改过程中的稳定性约束,以及四向扫描与分块计算,共同让这件事具有可训练、可计算、可验证的实现路径。
它也留下了新的研究空间。
例如,在医学影像、遥感解译和工业检测中,细微病灶与罕见缺陷常常埋在大量视觉信息中。让模型根据图像内容调整特征关联和学习步长,或许有助于捕捉这些细节,但实际效果还需要对应任务的验证。
更长远的方向,是把这种图像内部的适应能力扩展到连续观察。长视频理解、自动驾驶、具身智能都涉及前后画面的联系,研究者可以尝试让五类耦合记忆跨越连续帧,使过去看到的信息参与后续处理。不过,当前 VisionHOPE每处理一张新图像,记忆仍会重置到训练得到的初始状态,尚未实现跨帧持续学习。要让记忆真正沿时间积累,还需要解决场景切换时何时重置、错误信息怎样避免持续传播等问题。
另外,SRNL 作为具有稳定性保证的序列自修改模块,也为语言模型长上下文记忆,以及让图像与文本共同参与更新的跨模态记忆,提供了可以继续研究的技术入口。
那封字迹潦草的手写信,之所以越往后越容易读,是因为读者一边识别内容,一边形成对笔迹的认识。VisionHOPE 在视觉骨干中实现了与之相近的一步:让已经看过的内容,真正参与决定接下来怎样学习
从单张图像内的自修改,到能够跨画面保留经验的视觉系统,中间还有许多技术问题需要回答。但现在,研究者已经能够从开源的模型、算子和代码入手,继续检验这条路线可以走多远。
附录|安装与调用示例
在配备 NVIDIA GPU、CUDA 12.1 工具链和 Python 3.10 的 Linux 环境中,可按以下命令完成安装,底层 CUDA 算子会在首次调用时自动编译:
如需直接使用预训练模型,可从 Hugging Face 下载权重,再用 create_model 加载。仓库还提供 prepare_for_inference 函数,可在加载后原位融合模型参数以加速推理;如需继续训练,应保留一份未融合的模型:
如果关注架构探索,SRNL、VisionHOPEOperator 和 VisionHOPEBlock 都保持输入输出张量形状不变,并支持 PyTorch 自动求导,可以像标准网络层一样嵌入现有模型:

