hiera
Hiera 是一款由 Meta 研究团队推出的分层视觉 Transformer 模型,专为图像和视频理解任务设计。它在保持架构极度简洁的同时,实现了比当前最先进模型更快的推理速度和更高的准确率。
传统视觉 Transformer(如 ViT)通常在整个网络中维持固定的空间分辨率和特征数量,导致计算资源分配不够高效:早期层不需要过多特征,而后期层则无需过高分辨率。虽然此前的分层模型(如 Swin、MViT)试图解决这一问题,但往往通过堆叠复杂模块来弥补结构偏差,反而拖慢了整体速度。Hiera 的创新之处在于摒弃了这些“花哨”的设计,采用简单的分层结构,让模型在训练过程中自动学习不同阶段所需的空间表示,从而在保证性能的同时大幅降低计算开销。
这款工具特别适合从事计算机视觉研究的科研人员、需要高效部署模型的开发者,以及希望在不牺牲精度的前提下提升推理速度的工程团队。凭借其清晰的代码实现、对 PyTorch Hub 和 Hugging Face 的良好支持,Hiera 为构建快速且强大的视觉系统提供了一个可靠而优雅的基础选择。
使用场景
某自动驾驶初创公司的算法团队正在开发实时路况感知系统,需要在边缘设备上对高清视频流进行毫秒级的目标检测与分类。
没有 hiera 时
- 推理延迟过高:传统的层级式 Vision Transformer(如 Swin)因架构中堆砌了大量专用模块来弥补空间偏差,导致在嵌入式芯片上推理速度慢,难以满足实时性要求。
- 资源消耗巨大:为了维持高精度,模型不得不保持较高的计算量(FLOPs),使得车载工控机发热严重且能耗激增,影响整车续航。
- 部署调优困难:复杂的网络结构包含大量“花哨”的设计细节,工程师在将其移植到不同硬件平台时,需要花费大量时间进行算子优化和显存管理。
- 精度与速度难平衡:团队往往被迫在降低图像分辨率以换取速度,或牺牲检测精度以满足帧率之间做痛苦的取舍,无法兼得。
使用 hiera 后
- 推理速度显著提升:hiera 去除了不必要的复杂模块,采用简洁的分层设计,在同等精度下推理速度大幅提升,轻松实现高清视频流的实时处理。
- 计算效率更优:通过让模型自动学习空间特征而非手动添加偏置,hiera 在早期层减少特征数、后期层降低分辨率,显著降低了整体算力需求和功耗。
- 工程落地更简单:凭借“无额外装饰”的简洁架构,hiera 极易通过 Torch Hub 或 Hugging Face 集成,大幅缩短了从实验代码到生产环境的部署周期。
- 性能全面超越:在 ImageNet 及多种下游任务中,hiera 不仅比传统模型更快,还实现了更高的检测准确率,打破了以往“快就不准”的僵局。
hiera 通过极简的分层架构设计,成功解决了视觉大模型在边缘端部署时速度与精度难以兼得的核心痛点。
运行环境要求
- 未明确说明必需,但性能测试基于 NVIDIA A100 (fp16)
- 若使用 PyTorch 2.0+ 可获得更快的推理速度(利用 scaled dot product attention)
未说明

快速开始
Hiera:一款去繁从简的层次化视觉Transformer
这是我们ICML 2023口头报告论文的官方实现:
Hiera:一款去繁从简的层次化视觉Transformer
Chaitanya Ryali*,
Yuan-Ting Hu*,
Daniel Bolya*,
Chen Wei,
Haoqi Fan,
Po-Yao Huang,
Vaibhav Aggarwal,
Arkabandhu Chowdhury,
Omid Poursaeed,
Judy Hoffman,
Jitendra Malik,
Yanghao Li*,
Christoph Feichtenhofer*
ICML '23 口头报告 | GitHub | arXiv | BibTeX
*: 共同第一作者。
什么是Hiera?
Hiera 是一种快速、强大且最重要的是简单的层次化视觉Transformer。它在广泛的图像和视频任务中均优于当前最先进水平,同时速度也快得多。
它是如何工作的?

像ViT这样的视觉Transformer在整个网络中使用相同的空间分辨率和特征数量。但这样做效率不高:早期层并不需要那么多特征,而后期层也不需要那么高的空间分辨率。先前的层次化模型,如ResNet,通过在开始时使用较少的特征、在结束时使用较低的空间分辨率来解决这一问题。
已经出现了一些采用这种层次化设计的特定领域视觉Transformer,例如Swin或MViT。然而,在追求ImageNet-1K上完全监督训练下的最先进结果的过程中,这些模型为了弥补ViT缺乏的空间偏差,不断增加专门模块,导致模型越来越复杂。尽管这些改进确实产生了效果良好、浮点运算量诱人的模型,但从底层来看,增加的复杂性反而使这些模型整体变得更慢。
我们证明,许多这样的冗余部分其实是不必要的。与其通过架构调整手动添加空间偏置,不如直接让模型自己学习这些偏置。通过使用MAE进行训练,我们可以简化或移除现有Transformer中的所有这些复杂模块,并在此过程中提高精度。最终得到的就是Hiera——一种极其高效且简单的架构,它在多项图像和视频识别任务中都超越了当前最先进水平。
最新消息
- [2024.03.02] 代码许可证已放宽至更宽松的Apache 2.0!模型许可证保持不变。
- [2023.06.12] 增加了更多in1k模型和一些视频示例,请参阅inference.ipynb(v0.1.1)。
- [2023.06.01] 初始发布。
更多详情请参阅变更日志。
安装
Hiera需要一个相对较新的torch版本。之后,您可以通过pip安装Hiera:
pip install hiera-transformer
本仓库应支持最新的timm版本,但timm是一个不断更新的包。如果您在使用较新版本的timm时遇到问题,请提交issue。
从源码安装
如果使用torch hub,则无需安装hiera包。但是,如果您想基于Hiera进行开发,从源码安装可能是个不错的选择:
git clone https://github.com/facebookresearch/hiera.git
cd hiera
python setup.py build develop
模型库
请注意,模型权重与代码采用不同的许可证。更多详情请参阅模型许可证。
Torch Hub
在这里,我们提供了Hiera的模型检查点。列出的每个模型都可以在torch hub上访问,即使未安装hiera-transformer包亦可,例如以下代码会初始化一个在ImageNet-1K上预训练并微调的基础模型:
model = torch.hub.load("facebookresearch/hiera", model="hiera_base_224", pretrained=True, checkpoint="mae_in1k_ft_in1k")
如果您只需要带有MAE预训练的模型,可以将checkpoint替换为"mae_in1k"。此外,如果您还想加载MAE解码器(例如继续预训练),可以在模型名称前加上mae_,例如:
model = torch.hub.load("facebookresearch/hiera", model="mae_hiera_base_224", pretrained=True, checkpoint="mae_in1k")
注意: 我们的MAE模型是使用归一化的像素损失训练的。这意味着在模型预测之前,补丁已经被归一化了。如果您想可视化预测结果,就需要使用可见的补丁对其进行反归一化处理(这可能会奏效,但并不完美),或者直接使用真实标签进行反归一化。更多模型名称及对应的checkpoint名称见下文。
Hugging Face Hub
此仓库也支持 🤗 hub。在安装了 hiera-transformer 和 huggingface-hub 包后,您可以简单地运行如下代码来加载模型:
from hiera import Hiera
model = Hiera.from_pretrained("facebook/hiera_base_224.mae_in1k_ft_in1k") # 先用 MAE 预训练再在 ImageNet-1K 上微调的模型
model = Hiera.from_pretrained("facebook/hiera_base_224.mae_in1k") # 仅 MAE 预训练,未微调
请使用下方模型库中的 <model_name>.<checkpoint_name>。
如果您想保存模型,可以使用 model.config 作为配置文件,例如:
model.save_pretrained("hiera-base-224", config=model.config)
图像模型
| 模型 | 模型名称 | 预训练模型 (IN-1K MAE) |
微调模型 (IN-1K 监督学习) |
IN-1K Top-1 (%) |
A100 fp16 速度 (im/s) |
|---|---|---|---|---|---|
| Hiera-T | hiera_tiny_224 |
mae_in1k | mae_in1k_ft_in1k | 82.8 | 2758 |
| Hiera-S | hiera_small_224 |
mae_in1k | mae_in1k_ft_in1k | 83.8 | 2211 |
| Hiera-B | hiera_base_224 |
mae_in1k | mae_in1k_ft_in1k | 84.5 | 1556 |
| Hiera-B+ | hiera_base_plus_224 |
mae_in1k | mae_in1k_ft_in1k | 85.2 | 1247 |
| Hiera-L | hiera_large_224 |
mae_in1k | mae_in1k_ft_in1k | 86.1 | 531 |
| Hiera-H | hiera_huge_224 |
mae_in1k | mae_in1k_ft_in1k | 86.9 | 274 |
每个模型的输入为 224×224 的图像。
视频模型
| 模型 | 模型名称 | 预训练模型 (K400 MAE) |
微调模型 (K400) |
K400 (3×5 视图) Top-1 (%) |
A100 fp16 速度 (clip/s) |
|---|---|---|---|---|---|
| Hiera-B | hiera_base_16x224 |
mae_k400 | mae_k400_ft_k400 | 84.0 | 133.6 |
| Hiera-B+ | hiera_base_plus_16x224 |
mae_k400 | mae_k400_ft_k400 | 85.0 | 84.1 |
| Hiera-L | hiera_large_16x224 |
mae_k400 | mae_k400_ft_k400 | 87.3 | 40.8 |
| Hiera-H | hiera_huge_16x224 |
mae_k400 | mae_k400_ft_k400 | 87.8 | 20.9 |
每个模型的输入为 16 帧 224×224 的视频帧,时间步长为 4。
注意: 此处列出的速度是在 未使用 PyTorch 优化的缩放点积注意力机制 的情况下测得的。如果您使用的是 PyTorch 2.0 或更高版本,您的推理速度可能会比这里列出的速度更快。
使用方法
本仓库实现了运行 Hiera 模型进行推理的代码。该仓库仍在开发中。目前我们已有的功能和未来计划如下:
- 图像推理
- 实现 MAE
- 视频推理
- 实现 MAE
- 完整的模型库
- 训练脚本
有关如何使用 Hiera 的示例,请参阅 examples。
推理
有关如何准备推理数据的示例,请参阅 examples/inference。
您可以通过 torch hub 或 🤗 hub 实例化模型,也可以通过 从源码安装并运行以下代码来实例化模型:
import hiera
model = hiera.hiera_base_224(pretrained=True, checkpoint="mae_in1k_ft_in1k")
然后您可以像其他模型一样进行推理:
output = model(x)
视频推理的方式相同,只需使用 16x224 的模型即可。
注意:为了提高效率,Hiera 在网络开始时会对 token 进行重新排序(参见 hiera_utils.py 中的 Roll 和 Unroll 模块)。因此,默认情况下,token 并不是按空间顺序排列的。如果您希望将中间特征图用于下游任务,可以在运行模型时传递 return_intermediates 标志:
output, intermediates = model(x, return_intermediates=True)
MAE 推理
默认情况下,这些模型不包含 MAE 解码器。如果您希望使用解码器或计算 MAE 损失,可以通过以下方式实例化一个带有 MAE 的版本:
import hiera
model = hiera.mae_hiera_base_224(pretrained=True, checkpoint="mae_in1k")
当您对模型进行推理时,它将返回一个四元组 (loss, predictions, labels, mask),其中 predictions 和 labels 仅对应于 被删除的 tokens。返回的 mask 将在 token 可见时为 True,而在 token 被删除时为 False。您可以通过在推理时传入 mask_ratio 来更改掩码比例:
loss, preds, labels, mask = model(x, mask_ratio=0.6)
对于图像,默认的掩码比例是 0.6,但对于视频则应设置为 0.9。详情请参阅论文。
注意: 我们在 MAE 预训练中使用 归一化的像素目标,这意味着在模型预测之前,每个 patch 都会单独进行归一化处理。因此,在可视化之前,您需要使用真实值对它们进行反归一化处理。详细信息请参阅 hiera_mae.py 中的 get_pixel_label_2d 函数。
基准测试
我们提供了一个便于基准测试的脚本。请参阅 examples/benchmark,了解如何使用它。
缩放点积注意力
PyTorch 2.0 引入了优化的缩放点积注意力,它可以显著加速 Transformer 模型。我们在最初的基准测试中并未使用这一功能,但由于这是一种无需额外工作即可实现的性能提升,因此本仓库会在可用时自动启用它。要享受这一优势,请确保您的 PyTorch 版本为 2.0 或更高。
训练
即将推出。
引用
如果您在工作中使用了 Hiera 或此代码,请引用以下文献:
@article{ryali2023hiera,
title={Hiera: A Hierarchical Vision Transformer without the Bells-and-Whistles},
author={Ryali, Chaitanya and Hu, Yuan-Ting and Bolya, Daniel and Wei, Chen and Fan, Haoqi and Huang, Po-Yao and Aggarwal, Vaibhav and Chowdhury, Arkabandhu and Poursaeed, Omid and Hoffman, Judy and Malik, Jitendra and Li, Yanghao and Feichtenhofer, Christoph},
journal={ICML},
year={2023}
}
许可证
本项目的代码采用Apache License, Version 2.0 许可,而模型权重则采用知识共享署名-非商业性使用 4.0 国际许可协议 许可。
有关代码许可证的更多详细信息,请参阅 LICENSE;有关模型权重许可证的更多详细信息,请参阅 LICENSE.models。
贡献
请参阅 contributing 和 行为准则。
版本历史
v0.1.42024/03/02v0.1.32024/03/02v0.1.22023/07/21v0.1.12023/06/13v0.1.02023/06/02常见问题
相似工具推荐
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)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。