FocalNet
FocalNet 是一种基于“焦点调制”机制的新型深度学习架构,旨在为计算机视觉任务提供更高效、强大的特征提取能力。它主要解决了传统卷积神经网络感受野固定,以及 Transformer 架构中自注意力机制计算成本过高的问题。通过引入焦点调制模块,FocalNet 能够动态地聚合不同范围的上下文信息,既保留了卷积的计算效率,又具备了类似注意力机制的全局建模能力。
该工具特别适合计算机视觉领域的研究人员和开发者使用,尤其是那些从事目标检测、语义分割、全景分割或医学图像分析的专业人士。FocalNet 已在 COCO 和 ADE20K 等权威基准测试中取得了领先的性能表现,并拥有从小型到超大型的多种预训练模型供直接调用或微调。其独特的技术亮点在于摒弃了昂贵的自注意力计算,转而采用层级化的焦点调制策略,实现了精度与速度的优异平衡。此外,FocalNet 生态丰富,不仅支持 PyTorch 和 Keras 框架,还衍生出了针对地球系统分析和医疗影像的专用变体,是探索“超越注意力”网络设计的优秀开源选择。
使用场景
某医疗影像实验室的研究团队正致力于开发一套自动化的肺部 CT 扫描病灶分割系统,以辅助医生快速定位早期肿瘤。
没有 FocalNet 时
- 微小病灶漏检率高:传统卷积神经网络或早期 Transformer 模型难以兼顾局部细节与全局上下文,导致直径小于 5mm 的微小结节经常被忽略。
- 计算资源消耗巨大:为了提升精度强行增加网络深度或引入复杂的注意力机制,使得推理速度缓慢,无法满足临床实时诊断的需求。
- 边界分割模糊:在处理肿瘤与正常组织交界模糊的区域时,模型往往产生锯齿状边缘,严重影响后续体积测量的准确性。
- 训练收敛困难:在数据量有限的医疗数据集上,复杂模型极易过拟合,需要耗费大量时间进行繁琐的数据增强和超参数调优。
使用 FocalNet 后
- 多尺度特征精准捕捉:FocalNet 独特的焦点调制机制能自适应地聚焦不同尺度的信息,显著提升了微小结节的检出率,几乎消除了漏检现象。
- 效率与精度完美平衡:得益于高效的架构设计,FocalNet 在保持 SOTA(最先进)精度的同时,大幅降低了计算开销,实现了秒级影像分析。
- 病灶边缘清晰锐利:模型对长距离依赖的建模能力增强,使得肿瘤边界的分割结果更加平滑自然,极大提高了定量分析的可靠性。
- 小样本表现稳健:凭借强大的特征提取能力,FocalNet 在有限标注数据下也能快速收敛且泛化能力强,减少了团队在数据预处理上的投入。
FocalNet 通过创新的焦点调制技术,成功解决了医疗影像中“看得清”与“算得快”难以兼得的痛点,让 AI 辅助诊断真正具备了临床落地价值。
运行环境要求
- 未说明
需要 NVIDIA GPU(基于 PyTorch 实现及大规模模型训练/推理需求,如 FocalNet-Huge 达 700M 参数),具体显存和 CUDA 版本未在片段中明确,通常建议 16GB+ 显存及 CUDA 11.x+
未说明

快速开始
焦点调制网络
这是FocalNets的官方PyTorch实现:
"焦点调制网络" 由 杨建伟、李春元、戴希阳、卢源 和 高剑锋 共同提出。
新闻
- [2023年11月7日] 研究人员表明,Focal-UNet在多个地球系统分析基准测试中超越了先前的方法。请查看他们的代码、论文和项目!
- [2023年6月30日] :collision: 请从huggingface获取FocalNet-DINO检查点。旧链接已弃用。
- [2023年4月26日] 通过结合FocalNet-Huge主干网络,Focal-Stable-DINO在COCO test-dev上实现了64.8 AP,且无需任何测试时增强!更多详情请参阅我们的技术报告!
- [2023年2月13日] FocalNet已被集成到Keras中,请查看教程!
- [2023年1月18日] 查看一份精选的论文列表,介绍基于现代卷积和调制的超越注意力的网络!
- [2023年1月1日] 研究人员表明,Focal-UNet在多个医学图像分割基准测试中超越了Swin-UNet。请查看他们的代码和论文,祝大家新年快乐!
- [2022年12月16日] :collision: 我们很高兴发布我们在Object365上预训练并在COCO上微调的FocalNet-Large-DINO检查点,该检查点在COCO minival上无需tta即可达到63.5 mAP!快来看看吧!
- [2022年11月14日] 我们创建了一个新的仓库FocalNet-DINO,用于存放使用DINO重现目标检测性能的代码。我们将在那里发布目标检测代码和检查点。敬请关注!
- [2022年11月13日] :collision: 我们发布了在ImageNet-22K上预训练的large、xlarge和huge模型,其中包括我们在COCO目标检测排行榜上取得SoTA时所使用的模型!
- [2022年11月2日] 我们撰写了一篇博客文章,以通俗易懂的方式介绍了FocalNets背后的见解和技术,欢迎阅读!
- [2022年10月31日] :collision: 我们基于强大的OD方法DINO,在COCO minival上取得了新的SoTA,box mAP为64.2;在COCO test-dev上则达到了
64.364.4 box mAP!我们使用了巨大的模型规模(700M),击败了像SwinV2-G和BEIT-3这样更大的基于注意力的模型。请查看我们的新版本并持续关注! - [2022年9月20日] 我们的FocalNet已被NeurIPS 2022接受!
- [2022年4月2日] 在huggingface空间中创建了一个gradio演示,用于可视化调制机制。快来体验吧!
简介
我们提出了FocalNets:焦点调制网络,这是一种无注意力架构,在各种视觉基准测试中均表现出优于当前最先进自注意力(SA)方法的性能。如上图所示,SA是一个“先交互、后聚合”(FILA)的过程。而我们的焦点调制则反转了这一过程,采用“先聚合、后交互”(FALI)的方式。这种反转带来了多项优势:
- 平移不变性:它针对每个目标token进行操作,上下文围绕该token展开。
- 显式的输入依赖性:调制器通过聚合来自输入的短程和长程上下文来计算,然后应用于目标token。
- 空间和通道特异性:它首先按空间维度聚合上下文,再按通道维度聚合,最后进行逐元素调制。
- 解耦的特征粒度:查询token保留了最精细级别的个体信息,而其周围的较粗粒度上下文则被提取出来。两者通过调制操作连接在一起,但彼此解耦。
- 易于实现:我们可以以非常简单轻量的方式实现上下文聚合和交互操作。它不需要softmax、多头注意力、特征图滚动或展开等操作。
在开始之前,让我们看看我们的FocalNets学到了如何感知图像以及在哪里进行调制吧!
总之,FocalNets基于卷积层和线性层构建,但通过提出一种简单、通用、有效且高效的新型调制机制,实现了超越。我们在此推荐:
焦点调制或许正是我们进行视觉建模所需要的!
开始使用
- 请按照get_started_for_image_classification中的说明,开始进行图像分类。
- 请按照get_started_for_object_detection中的说明,开始进行目标检测。
- 请按照get_started_for_semantic_segmentation中的说明,开始进行语义分割。
基准测试
ImageNet-1K 上的图像分类
- 与多尺度 Swin 和 Focal Transformer 的严格对比:
| 模型 | 深度 | 尺寸 | 核大小 | 参数量 (M) | FLOPs (G) | 吞吐量 (imgs/s) | Top-1 | 下载 |
|---|---|---|---|---|---|---|---|---|
| FocalNet-T | [2,2,6,2] | 96 | [3,5] | 28.4 | 4.4 | 743 | 82.1 | ckpt/配置文件/日志 |
| FocalNet-T | [2,2,6,2] | 96 | [3,5,7] | 28.6 | 4.5 | 696 | 82.3 | ckpt/配置文件/日志 |
| FocalNet-S | [2,2,18,2] | 96 | [3,5] | 49.9 | 8.6 | 434 | 83.4 | ckpt/配置文件/日志 |
| FocalNet-S | [2,2,18,2] | 96 | [3,5,7] | 50.3 | 8.7 | 406 | 83.5 | ckpt/配置文件/日志 |
| FocalNet-B | [2,2,18,2] | 128 | [3,5] | 88.1 | 15.3 | 280 | 83.7 | ckpt/配置文件/日志 |
| FocalNet-B | [2,2,18,2] | 128 | [3,5,7] | 88.7 | 15.4 | 269 | 83.9 | ckpt/配置文件/日志 |
- 与各向同性 ViT 模型的严格对比:
| 模型 | 深度 | 尺寸 | 核大小 | 参数量 (M) | FLOPs (G) | 吞吐量 (imgs/s) | Top-1 | 下载 |
|---|---|---|---|---|---|---|---|---|
| FocalNet-T | 12 | 192 | [3,5,7] | 5.9 | 1.1 | 2334 | 74.1 | ckpt/配置文件/日志 |
| FocalNet-S | 12 | 384 | [3,5,7] | 22.4 | 4.3 | 920 | 80.9 | ckpt/配置文件/日志 |
| FocalNet-B | 12 | 768 | [3,5,7] | 87.2 | 16.9 | 300 | 82.4 | ckpt/配置文件/日志 |
ImageNet-22K 预训练
| 模型 | 深度 | 尺寸 | 核大小 | 参数量 (M) | 下载 |
|---|---|---|---|---|---|
| FocalNet-L | [2,2,18,2] | 192 | [5,7,9] | 207 | ckpt/配置文件 |
| FocalNet-L | [2,2,18,2] | 192 | [3,5,7,9] | 207 | ckpt/配置文件 |
| FocalNet-XL | [2,2,18,2] | 256 | [5,7,9] | 366 | ckpt/配置文件 |
| FocalNet-XL | [2,2,18,2] | 256 | [3,5,7,9] | 366 | ckpt/配置文件 |
| FocalNet-H | [2,2,18,2] | 352 | [3,5,7] | 687 | ckpt/配置文件 |
| FocalNet-H | [2,2,18,2] | 352 | [3,5,7,9] | 689 | ckpt/配置文件 |
注: 我们对 ImageNet-22K 中的类别名称进行了重新排序,以便可以直接使用前 1000 个 logits 来在 ImageNet-1K 上进行评估。请注意,ImageNet-1K 中的第 851 类(标签=850)在 ImageNet-22K 中缺失。请参考此 labelmap。更多讨论请参见此 issue。
COCO 数据集上的目标检测
| 主干网络 | 卷积核设置 | 学习率调度 | 参数量 (M) | 浮点运算次数 (G) | box mAP | mask mAP | 下载 |
|---|---|---|---|---|---|---|---|
| FocalNet-T | [9,11] | 1x | 48.6 | 267 | 45.9 | 41.3 | 检查点/配置文件/日志 |
| FocalNet-T | [9,11] | 3x | 48.6 | 267 | 47.6 | 42.6 | 检查点/配置文件/日志 |
| FocalNet-T | [9,11,13] | 1x | 48.8 | 268 | 46.1 | 41.5 | 检查点/配置文件/日志 |
| FocalNet-T | [9,11,13] | 3x | 48.8 | 268 | 48.0 | 42.9 | 检查点/配置文件/日志 |
| FocalNet-S | [9,11] | 1x | 70.8 | 356 | 48.0 | 42.7 | 检查点/配置文件/日志 |
| FocalNet-S | [9,11] | 3x | 70.8 | 356 | 48.9 | 43.6 | 检查点/配置文件/日志 |
| FocalNet-S | [9,11,13] | 1x | 72.3 | 365 | 48.3 | 43.1 | 检查点/配置文件/日志 |
| FocalNet-S | [9,11,13] | 3x | 72.3 | 365 | 49.3 | 43.8 | 检查点/配置文件/日志 |
| FocalNet-B | [9,11] | 1x | 109.4 | 496 | 48.8 | 43.3 | 检查点/配置文件/日志 |
| FocalNet-B | [9,11] | 3x | 109.4 | 496 | 49.6 | 44.1 | 检查点/配置文件/日志 |
| FocalNet-B | [9,11,13] | 1x | 111.4 | 507 | 49.0 | 43.5 | 检查点/配置文件/日志 |
| FocalNet-B | [9,11,13] | 3x | 111.4 | 507 | 49.8 | 44.1 | 检查点/配置文件/[日志](https://projects4jw.blob core.windows.net/focalnet/release/detection/log_focalnet_base_lrf_maskrcnn_3x.json) |
- 其他检测方法
| 主干网络 | 卷积核设置 | 方法 | 学习率调度 | 参数量 (M) | 浮点运算次数 (G) | box mAP | 下载 |
|---|---|---|---|---|---|---|---|
| FocalNet-T | [11,9,9,7] | Cascade Mask R-CNN | 3x | 87.1 | 751 | 51.5 | 检查点/配置文件/日志 |
| FocalNet-T | [11,9,9,7] | ATSS | 3x | 37.2 | 220 | 49.6 | 检查点/配置文件/[日志](https://projects4jw.blob core.windows.net/focalnet/release/detection/log_focalnet_tiny_lrf_atss_3x.json) |
| FocalNet-T | [11,9,9,7] | Sparse R-CNN | 3x | 111.2 | 178 | 49.9 | [检查点](https://projects4jw.blob core.windows.net/focalnet/release/detection/focalnet_tiny_lrf_sparsercnn_3x.pth)/配置文件/[日志](https://projects4jw.blob core.windows.net/focalnet/release/detection/log_focalnet_tiny_lrf_sparsercnn_3x.json) |
ADE20K 数据集上的语义分割
- 分辨率 512x512,迭代次数 16万次
| 主干网络 | 核心数 | 方法 | 参数量 (M) | FLOPs (G) | mIoU | mIoU (多尺度) | 下载 |
|---|---|---|---|---|---|---|---|
| FocalNet-T | [9,11] | UPerNet | 61 | 944 | 46.5 | 47.2 | 检查点/配置文件/日志 |
| FocalNet-T | [9,11,13] | UPerNet | 61 | 949 | 46.8 | 47.8 | 检查点/配置文件/日志 |
| FocalNet-S | [9,11] | UPerNet | 83 | 1035 | 49.3 | 50.1 | 检查点/配置文件/日志 |
| FocalNet-S | [9,11,13] | UPerNet | 84 | 1044 | 49.1 | 50.1 | 检查点/配置文件/日志 |
| FocalNet-B | [9,11] | UPerNet | 124 | 1180 | 50.2 | 51.1 | 检查点/配置文件/日志 |
| FocalNet-B | [9,11,13] | UPerNet | 126 | 1192 | 50.5 | 51.4 | 检查点/配置文件/日志 |
可视化
我们的 FocalNets 包含三个步骤:
- 使用深度可分离卷积进行上下文建模;
- 通过门控机制进行多尺度聚合;
- 基于上下文聚合与投影生成调制器。
我们逐一展示这些步骤的可视化效果。
- FocalNets 中学习到的深度可分离卷积核:
黄色表示较高的值。显然,FocalNets 在早期阶段学习聚集更多的局部上下文,而在后期阶段则更多地关注全局上下文。
- FocalNets 最后一层针对不同输入图像的门控图:
从左至右依次为输入图像、第1、2、3层焦点级别的门控图以及全局上下文图。很明显,我们的模型已经学会根据不同位置的视觉内容来决定在哪里聚集上下文信息。
- FocalNets 中针对不同输入图像学习到的调制器:
由我们的模型生成的调制器能够自动聚焦于前景区域。
如需自行进行可视化,请参阅 可视化笔记本。
引用
如果您觉得本仓库对您的项目有所帮助,请考虑使用以下 BibTeX 格式引用:
@misc{yang2022focal,
title={Focal Modulation Networks},
author={Jianwei Yang and Chunyuan Li and Xiyang Dai and Jianfeng Gao},
journal={Advances in Neural Information Processing Systems (NeurIPS)},
year={2022}
}
致谢
我们的代码库基于 Swin Transformer 和 Focal Transformer 构建。为了达到当前最优的目标检测性能,我们高度依赖最先进的方法 DINO 以及作者们的宝贵建议。感谢作者们精心组织的代码!
贡献
本项目欢迎各类贡献和建议。大多数贡献都需要您同意贡献者许可协议(CLA),以声明您有权并确实授予我们使用您贡献的权利。详情请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人会自动判断您是否需要提供 CLA,并相应地标记 PR(例如状态检查、评论)。只需按照机器人提供的指示操作即可。对于所有使用我们 CLA 的仓库,您只需完成一次此流程。
本项目已采用 微软开源行为准则。更多信息请参阅 行为准则常见问题解答 或发送邮件至 opencode@microsoft.com 提出任何其他问题或意见。
商标
本项目可能包含项目、产品或服务相关的商标或标志。未经授权使用微软商标或标志须遵守并遵循 微软商标与品牌指南。在本项目的修改版本中使用微软商标或标志不得造成混淆或暗示微软的赞助。任何第三方商标或标志的使用均受其各自政策的约束。
版本历史
v1.0.12023/09/09v1.0.02023/06/01常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。