Focal-Transformer
Focal-Transformer 是一款专为计算机视觉任务设计的先进深度学习模型,曾荣获 NeurIPS 2021 spotlight 推荐。它旨在解决传统 Vision Transformer 在平衡计算效率与捕捉图像长距离依赖关系时的难题。
该模型的核心创新在于提出了“焦点自注意力机制”(Focal Self-attention)。与传统方法不同,Focal-Transformer 让每个图像块在处理时,对近距离的邻居采用细粒度关注,而对远距离的区域则采用粗粒度聚合。这种设计使其能够高效地同时捕捉局部细节特征和全局上下文信息,从而在图像分类、目标检测及语义分割等任务中取得了超越当时最先进方法的性能表现。
Focal-Transformer 特别适合人工智能研究人员、算法工程师以及需要构建高性能视觉系统的开发者使用。对于希望深入探索 Transformer 架构优化,或在资源受限环境下追求更高精度与效率平衡的专业人士而言,这是一个极具价值的开源基线模型。此外,团队后续还推出了基于相同机制但速度更快的 FocalNet 架构,为用户提供了更多样化的选择。
使用场景
某自动驾驶团队正在开发夜间复杂路况下的实时障碍物检测系统,需要模型同时精准识别近处的行人细节和远处的车辆轮廓。
没有 Focal-Transformer 时
- 远近细节难兼顾:传统 Vision Transformer 要么过度关注局部丢失全局语境,要么因感受野固定而模糊了远处小目标的特征。
- 计算资源浪费:为了捕捉长距离依赖,往往被迫增加网络深度或使用昂贵的全局注意力机制,导致推理延迟高,难以满足车载芯片的实时性要求。
- 小目标漏检率高:在密集车流或远距离场景中,模型对细微特征的提取能力不足,频繁出现将远处路障误判为背景的情况。
- 训练收敛缓慢:由于缺乏高效的局部 - 全局交互机制,模型需要更长的训练周期和更多的数据增强技巧才能达到可用精度。
使用 Focal-Transformer 后
- 动态粒度感知:利用焦点自注意力机制,模型自动对近处令牌进行细粒度关注以捕捉行人纹理,同时对远处令牌采用粗粒度聚合以锁定车辆位置。
- 效率显著提升:在保持理论计算量(GFLOPs)相当的前提下,有效缩短了短程和长程视觉依赖的捕获路径,大幅降低了实际推理耗时。
- 极端场景鲁棒性强:在 COCO 基准测试中验证的优异性能迁移至实际路况,显著提升了远距离小目标和密集遮挡场景下的检测 mAP。
- 架构升级平滑:作为骨干网络可直接替换现有方案,无需大幅调整数据预处理流程,即可在标准训练调度下获得一致且显著的性能增益。
Focal-Transformer 通过创新的焦点自注意力机制,完美解决了视觉任务中局部细节与全局语境难以高效协同的核心痛点。
运行环境要求
- 未说明
- 需要 NVIDIA GPU(基于 CUDA 加速),具体显存需求取决于模型大小和分辨率:Focal-Tiny 约需 8GB+,Focal-Base 及以上或高分辨率任务(如 896x896 分类、COCO/ADE20K 训练)建议 16GB-32GB+
- CUDA 版本未明确说明,通常需与 PyTorch 版本匹配(建议 11.0+)
未说明(建议 32GB+ 以支持大型模型训练及高分辨率数据处理)

快速开始
焦点Transformer [NeurIPS 2021 Spotlight]
这是我们论文 Focal Transformer -- “用于视觉Transformer中局部-全局交互的焦点自注意力” 的官方实现,作者包括杨建伟、李春元、张鹏川、戴西阳、肖斌、袁璐和高剑锋。
引言

我们的 Focal Transformer 引入了一种新的自注意力机制,称为 焦点自注意力,专为视觉Transformer设计。在这一新机制中,每个token会在细粒度上关注其最近的邻近token,而在粗粒度上关注远处的token,从而能够高效且有效地捕捉短程和长程的视觉依赖关系。
借助我们的 Focal Transformer,在一系列公开基准测试中,我们取得了优于当前最先进视觉Transformer的性能。特别是,我们的 Focal Transformer 模型分别以中等规模51.1M参数和较大规模89.8M参数,在224x224分辨率的ImageNet分类任务上获得了 83.6 和 84.0 的Top-1准确率。使用Focal Transformer作为骨干网络,我们在采用标准1x和3x训练计划的6种不同目标检测方法中,均实现了对现有最先进方法的一致且显著提升。我们最大的Focal Transformer在COCO mini-val/test-dev数据集上的边界框mAP分别为 58.7/58.9,掩码mAP分别为 50.9/51.3;在ADE20K语义分割任务上则达到了 55.4 mIoU。
:film_strip: The AI Epiphany 制作的视频
下一代架构
我们已经开发了基于焦点机制的下一代架构 FocalNet,它速度更快、效果更好。请访问:https://github.com/microsoft/FocalNet!
更快的Focal Transformer
正如你可能注意到的那样,尽管我们Focal Transformer的理论GFLOPs与先前的工作相当,但其实际运行效率却稍逊一筹。因此,我们发布了一个更快版本的Focal Transformer,该版本去除了我们第一版中使用的滚动和展开操作。
| 模型 | 预训练 | 使用卷积 | 分辨率 | acc@1 | acc@5 | 参数量 | FLOPs | 吞吐量 (imgs/s) | 检查点 | 配置 |
|---|---|---|---|---|---|---|---|---|---|---|
| Focal-T | IN-1K | 否 | 224 | 82.2 | 95.9 | 28.9M | 4.9G | 319 | 下载 | yaml |
| Focal-fast-T | IN-1K | 是 | 224 | 82.4 | 96.0 | 30.2M | 5.0G | 483 | 下载 | yaml |
| Focal-S | IN-1K | 否 | 224 | 83.6 | 96.2 | 51.1M | 9.4G | 192 | 下载 | yaml |
| Focal-fast-S | IN-1K | 是 | 224 | 83.6 | 96.4 | 51.5M | 9.4G | 293 | 下载 | yaml |
| Focal-B | IN-1K | 否 | 224 | 84.0 | 96.5 | 89.8M | 16.4G | 138 | 下载 | yaml |
| Focal-fast-B | IN-1K | 是 | 224 | 84.0 | 96.6 | 91.2M | 16.4G | 203 | 下载 | yaml |
基准测试
图像分类吞吐量与图像分辨率
| 模型 | Top-1 Acc. | GLOPs (224x224) | 224x224 | 448x448 | 896 x 896 |
|---|---|---|---|---|---|
| DeiT-Small/16 | 79.8 | 4.6 | 939 | 101 | 20 |
| PVT-Small | 79.8 | 3.8 | 794 | 172 | 31 |
| CvT-13 | 81.6 | 4.5 | 746 | 125 | 14 |
| ViL-Small | 82.0 | 5.1 | 397 | 87 | 17 |
| Swin-Tiny | 81.2 | 4.5 | 760 | 189 | 48 |
| Focal-Tiny | 82.2 | 4.9 | 319 | 105 | 27 |
| PVT-Medium | 81.2 | 6.7 | 517 | 111 | 20 |
| CvT-21 | 82.5 | 7.1 | 480 | 85 | 10 |
| ViL-Medium | 83.3 | 9.1 | 251 | 53 | 8 |
| Swin-Small | 83.1 | 8.7 | 435 | 111 | 28 |
| Focal-Small | 83.6 | 9.4 | 192 | 63 | 17 |
| ViT-Base/16 | 77.9 | 17.6 | 291 | 57 | 8 |
| Deit-Base/16 | 81.8 | 17.6 | 291 | 57 | 8 |
| PVT-Large | 81.7 | 9.8 | 352 | 77 | 14 |
| ViL-Base | 83.2 | 13.4 | 145 | 35 | 5 |
| Swin-Base | 83.4 | 15.4 | 291 | 70 | 17 |
| Focal-Base | 84.0 | 16.4 | 138 | 44 | 11 |
ImageNet-1K 上的图像分类
| 模型 | 预训练 | 是否使用卷积 | 分辨率 | top-1 精度 | top-5 精度 | 参数量 | FLOPs | 检查点 | 配置文件 |
|---|---|---|---|---|---|---|---|---|---|
| Focal-T | IN-1K | 否 | 224 | 82.2 | 95.9 | 28.9M | 4.9G | 下载 | yaml |
| Focal-T | IN-1K | 是 | 224 | 82.7 | 96.1 | 30.8M | 5.2G | 下载 | yaml |
| Focal-S | IN-1K | 否 | 224 | 83.6 | 96.2 | 51.1M | 9.4G | 下载 | yaml |
| Focal-S | IN-1K | 是 | 224 | 83.8 | 96.5 | 53.1M | 9.7G | 下载 | yaml |
| Focal-B | IN-1K | 否 | 224 | 84.0 | 96.5 | 89.8M | 16.4G | 下载 | yaml |
| Focal-B | IN-1K | 是 | 224 | 84.2 | 97.1 | 93.3M | 16.8G | 下载 | yaml |
COCO 数据集上的目标检测与实例分割
Mask R-CNN
| 主干网络 | 预训练 | 学习率调度 | 参数量 | FLOPs | box mAP | mask mAP |
|---|---|---|---|---|---|---|
| Focal-T | ImageNet-1K | 1x | 49M | 291G | 44.8 | 41.0 |
| Focal-T | ImageNet-1K | 3x | 49M | 291G | 47.2 | 42.7 |
| Focal-S | ImageNet-1K | 1x | 71M | 401G | 47.4 | 42.8 |
| Focal-S | ImageNet-1K | 3x | 71M | 401G | 48.8 | 43.8 |
| Focal-B | ImageNet-1K | 1x | 110M | 533G | 47.8 | 43.2 |
| Focal-B | ImageNet-1K | 3x | 110M | 533G | 49.0 | 43.7 |
RetinaNet
| 主干网络 | 预训练 | 学习率调度 | 参数量 | FLOPs | box mAP |
|---|---|---|---|---|---|
| Focal-T | ImageNet-1K | 1x | 39M | 265G | 43.7 |
| Focal-T | ImageNet-1K | 3x | 39M | 265G | 45.5 |
| Focal-S | ImageNet-1K | 1x | 62M | 367G | 45.6 |
| Focal-S | ImageNet-1K | 3x | 62M | 367G | 47.3 |
| Focal-B | ImageNet-1K | 1x | 101M | 514G | 46.3 |
| Focal-B | ImageNet-1K | 3x | 101M | 514G | 46.9 |
其他检测方法
| 主干网络 | 预训练 | 方法 | 学习率调度 | 参数量 | FLOPs | box mAP |
|---|---|---|---|---|---|---|
| Focal-T | ImageNet-1K | Cascade Mask R-CNN | 3x | 87M | 770G | 51.5 |
| Focal-T | ImageNet-1K | ATSS | 3x | 37M | 239G | 49.5 |
| Focal-T | ImageNet-1K | RepPointsV2 | 3x | 45M | 491G | 51.2 |
| Focal-T | ImageNet-1K | Sparse R-CNN | 3x | 111M | 196G | 49.0 |
ADE20K 数据集上的语义分割
| 主干网络 | 预训练 | 方法 | 分辨率 | 迭代次数 | 参数量 | FLOPs | mIoU | mIoU (多尺度) |
|---|---|---|---|---|---|---|---|---|
| Focal-T | ImageNet-1K | UPerNet | 512x512 | 16万 | 62M | 998G | 45.8 | 47.0 |
| Focal-S | ImageNet-1K | UPerNet | 512x512 | 16万 | 85M | 1130G | 48.0 | 50.0 |
| Focal-B | ImageNet-1K | UPerNet | 512x512 | 16万 | 126M | 1354G | 49.0 | 50.5 |
| Focal-L | ImageNet-22K | UPerNet | 640x640 | 16万 | 240M | 3376G | 54.0 | 55.4 |
使用指南
- 请按照 get_started_for_image_classification.md 的说明开始进行图像分类。
- 请按照 get_started_for_object_detection.md 的说明开始进行目标检测。
- 请按照 get_started_for_semantic_segmentation.md 的说明开始进行语义分割。
引用
如果您觉得本仓库对您的项目有帮助,请考虑使用以下 BibTeX 格式引用:
@misc{yang2021focal,
title={Focal Self-attention for Local-Global Interactions in Vision Transformers},
author={Jianwei Yang and Chunyuan Li and Pengchuan Zhang and Xiyang Dai and Bin Xiao and Lu Yuan and Jianfeng Gao},
year={2021},
eprint={2107.00641},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
致谢
我们的代码库基于 Swin-Transformer 构建。感谢原作者精心组织的代码!
贡献
本项目欢迎贡献和建议。大多数贡献都需要您同意贡献者许可协议(CLA),声明您有权并确实授予我们使用您贡献的权利。有关详细信息,请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人会自动判断您是否需要提供 CLA,并相应地标记 PR(例如状态检查、评论)。只需按照机器人提供的指示操作即可。对于使用我们 CLA 的所有仓库,您只需完成一次此流程。
本项目已采用 Microsoft 开源行为准则。更多信息请参阅 行为准则常见问题解答 或发送电子邮件至 opencode@microsoft.com 提出任何其他问题或意见。
商标
本项目可能包含项目、产品或服务的商标或徽标。未经授权使用 Microsoft 商标或徽标必须遵守并遵循 Microsoft 商标与品牌指南。在本项目的修改版本中使用 Microsoft 商标或徽标不得造成混淆或暗示 Microsoft 的赞助。任何第三方商标或徽标的使用均受其各自政策的约束。
常见问题
相似工具推荐
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)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。