Lite-HRNet
Lite-HRNet 是一款专为人体姿态估计设计的高效轻量级高分辨率神经网络。它旨在解决移动端或资源受限设备上,现有轻量模型(如 MobileNet、ShuffleNet)在保持低计算量的同时难以兼顾高精度与高分辨率特征处理的痛点。
该工具特别适合从事计算机视觉算法研发的工程师、研究人员,以及需要在嵌入式设备或边缘端部署姿态识别应用的技术团队。其核心创新在于巧妙地将 ShuffleNet 的高效模块引入 HRNet 架构,并针对传统洗牌块中耗时的 1x1 卷积瓶颈,提出了一种名为“条件通道加权”的轻量级单元。这一设计不仅将计算复杂度从平方级降低为线性级,还能利用 HRNet 并行分支中多分辨率的特征信息,在不增加显著负担的前提下实现跨通道和跨分辨率的信息高效交互。
实验数据显示,Lite-HRNet 在 COCO 和 MPII 等主流数据集上,以极少的参数量(最低仅 0.7M)和计算开销,取得了优于同类轻量网络的精度表现。此外,该架构具备良好的通用性,也能轻松迁移至语义分割任务,是追求高性能与低功耗平衡的理想选择。
使用场景
某智能健身镜初创团队需要在低功耗嵌入式设备上实时捕捉用户动作,以提供精准的姿态纠正反馈。
没有 Lite-HRNet 时
- 推理延迟高:部署 MobileNet 或标准 HRNet 等模型时,在边缘芯片上帧率不足 15 FPS,导致动作指导出现明显卡顿,用户体验极差。
- 精度与速度难平衡:为了提升速度强行压缩模型,导致关键点定位模糊,无法准确识别深蹲角度或手臂伸展细节,纠错建议频繁出错。
- 算力资源浪费:传统轻量级网络中大量的 1x1 卷积运算成为计算瓶颈,占用了宝贵的内存带宽,使得设备发热严重且电池续航骤减。
- 多尺度适应弱:当用户距离镜头远近变化时,模型难以兼顾高分辨率细节与全局上下文,容易丢失肢体末端的关键点信息。
使用 Lite-HRNet 后
- 实时流畅运行:凭借条件通道加权(Conditional Channel Weighting)单元替代昂贵的 1x1 卷积,Lite-HRNet 在同等硬件上将帧率提升至 30+ FPS,实现丝滑的实时交互。
- 小模型高精度:仅用约 1.1M 参数量即可在 COCO 数据集上达到 64.8% AP,精准捕捉细微关节变化,确保健身动作评估的专业度。
- 极致能效优化:线性复杂度的通道加权机制大幅降低 FLOPs,显著减少设备功耗与发热,让智能镜子可长时间稳定运行而不降频。
- 多分辨率融合强:天然的高分辨率并行架构有效利用多尺度信息,无论用户站在镜前还是后退,均能稳定输出高质量的人体骨架数据。
Lite-HRNet 成功打破了边缘设备上“高精度”与“低延迟”不可兼得的僵局,让专业级姿态估计真正落地到消费级硬件中。
运行环境要求
- Linux
需要 NVIDIA GPU(开发测试使用 8 张 V100),CUDA 9.2+(若从源码编译 PyTorch 则支持 CUDA 9.0+)
未说明

快速开始
Lite-HRNet:一种轻量级高分辨率网络
简介
这是 Lite-HRNet:一种轻量级高分辨率网络 的官方 PyTorch 实现。在本工作中,我们提出了一种用于人体姿态估计的高效高分辨率网络——Lite-HRNet。我们首先将 ShuffleNet 中的高效 Shuffle 块简单地应用于 HRNet(高分辨率网络),从而在性能上超越了诸如 MobileNet、ShuffleNet 和 Small HRNet 等流行的轻量级网络。然而,我们发现 Shuffle 块中广泛使用的逐点(1x1)卷积成为了计算瓶颈。为此,我们引入了一种轻量级单元——条件通道加权,以替代 Shuffle 块中昂贵的逐点(1x1)卷积。通道加权的复杂度与通道数呈线性关系,远低于逐点卷积的二次时间复杂度。我们的解决方案从所有通道以及 HRNet 并行分支中已有的多尺度特征中学习权重,并利用这些权重作为跨通道和跨尺度信息交换的桥梁,从而弥补了逐点卷积的作用。实验结果表明,Lite-HRNet 在人体姿态估计任务上优于现有的轻量级网络。此外,Lite-HRNet 还可以以同样的轻量化方式轻松应用于语义分割任务。
结果与模型
COCO val2017 数据集上的结果(检测器在 COCO val2017 上的人体 AP 为 56.4)
| 架构 | 输入尺寸 | 参数量 | FLOPs | AP | AP50 | AP75 | AR | AR50 | 模型下载 |
|---|---|---|---|---|---|---|---|---|---|
| Naive Lite-HRNet-18 | 256x192 | 0.7M | 194.8M | 0.628 | 0.855 | 0.699 | 0.691 | 0.901 | GoogleDrive 或 OneDrive |
| Wider Naive Lite-HRNet-18 | 256x192 | 1.3M | 311.1M | 0.660 | 0.871 | 0.737 | 0.721 | 0.913 | GoogleDrive 或 OneDrive |
| Lite-HRNet-18 | 256x192 | 1.1M | 205.2M | 0.648 | 0.867 | 0.730 | 0.712 | 0.911 | GoogleDrive 或 OneDrive |
| Lite-HRNet-18 | 384x288 | 1.1M | 461.6M | 0.676 | 0.878 | 0.750 | 0.737 | 0.921 | GoogleDrive 或 OneDrive |
| Lite-HRNet-30 | 256x192 | 1.8M | 319.2M | 0.672 | 0.880 | 0.750 | 0.733 | 0.922 | GoogleDrive 或 OneDrive |
| Lite-HRNet-30 | 384x288 | 1.8M | 717.8M | 0.704 | 0.887 | 0.777 | 0.762 | 0.928 | GoogleDrive 或 OneDrive |
MPII 验证集上的结果
| 架构 | 输入尺寸 | 参数量 | FLOPs | 均值 | 均值@0.1 | 模型下载 |
|---|---|---|---|---|---|---|
| Naive Lite-HRNet-18 | 256x256 | 0.7M | 259.6M | 0.853 | 0.305 | GoogleDrive 或 OneDrive |
| Wider Naive Lite-HRNet-18 | 256x256 | 1.3M | 418.7M | 0.868 | 0.311 | GoogleDrive 或 OneDrive |
| Lite-HRNet-18 | 256x256 | 1.1M | 273.4M | 0.854 | 0.295 | GoogleDrive 或 OneDrive |
| Lite-HRNet-30 | 256x256 | 1.8M | 425.3M | 0.870 | 0.313 | GoogleDrive 或 OneDrive |
运行环境
代码使用 Python 3.6 在 Ubuntu 16.04 上开发。需要 NVIDIA GPU。代码是在 8 张 NVIDIA V100 GPU 卡上开发并测试的。其他平台或 GPU 卡尚未经过全面测试。
快速入门
环境要求
- Linux(Windows 尚未得到官方支持)
- Python 3.6+
- PyTorch 1.3+
- CUDA 9.2+(若从源码编译 PyTorch,CUDA 9.0 亦可兼容)
- GCC 5+
- mmcv(请安装最新版本的 mmcv-full)
- Numpy
- cv2
- json_tricks
- xtcocotools
安装
a. 安装 mmcv,我们建议您按照以下方式安装预编译的 mmcv。
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
请将 URL 中的 {cu_version} 和 {torch_version} 替换为您所需的版本。例如,要安装带有 CUDA 11 和 PyTorch 1.7.0 的最新 mmcv-full,可以使用以下命令:
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
如果在安装过程中需要编译,请确保 CUDA 版本和 PyTorch 版本与 mmcv-full 安装命令中的版本完全一致。例如,PyTorch 1.7.0 和 1.7.1 被视为不同的版本。 有关不同 MMCV 版本与不同 PyTorch 和 CUDA 版本的兼容性,请参阅 这里。
可选地,您也可以通过以下命令从源码编译 mmcv:
git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
MMCV_WITH_OPS=1 pip install -e . # 此步骤后将安装包含 CUDA 操作的 mmcv-full 包
# 或者 pip install -e . # 此步骤后将安装不包含 CUDA 操作的 mmcv 包
cd ..
或者直接运行:
pip install mmcv-full
# 或者:pip install mmcv
重要提示: 如果您已经安装了 mmcv,请务必先运行 pip uninstall mmcv。如果同时安装了 mmcv 和 mmcv-full,将会出现 ModuleNotFoundError。
b. 安装构建依赖
pip install -r requirements.txt
准备数据集
建议将数据集根目录创建符号链接到 $LITE_HRNET/data。
如果您的文件夹结构不同,可能需要修改配置文件中的相应路径。
对于 COCO 数据集,请从 COCO 下载下载,训练和验证 COCO 关键点任务时需要使用 2017 年的训练集和验证集。HRNet-Human-Pose-Estimation 提供了 COCO val2017 的人员检测结果,用于复现我们的多人姿态估计结果。请从 OneDrive 下载。
将下载的文件解压到 $LITE_HRNET/data 目录下,使其呈现如下结构:
lite_hrnet
├── configs
├── models
├── tools
`── data
│── coco
│-- annotations
│ │-- person_keypoints_train2017.json
│ |-- person_keypoints_val2017.json
|-- person_detection_results
| |-- COCO_val2017_detections_AP_H_56_person.json
│-- train2017
│ │-- 000000000009.jpg
│ │-- 000000000025.jpg
│ │-- 000000000030.jpg
│ │-- ...
`-- val2017
│-- 000000000139.jpg
│-- 000000000285.jpg
│-- 000000000632.jpg
│-- ...
对于 MPII 数据集,请从 MPII Human Pose Dataset 下载。
我们已将原始标注文件转换为 JSON 格式,请从 mpii_annotations 下载。
将其解压到 $LITE_HRNET/data 目录下,使其呈现如下结构:
lite_hrnet
├── configs
├── models
├── tools
`── data
│── mpii
|── annotations
| |── mpii_gt_val.mat
| |── mpii_test.json
| |── mpii_train.json
| |── mpii_trainval.json
| `── mpii_val.json
`── images
|── 000001163.jpg
|── 000003072.jpg
训练与测试
所有输出(日志文件和检查点)都将保存到工作目录中,
该目录由配置文件中的 work_dir 指定。
默认情况下,我们在每个 epoch 结束后都会对模型进行验证,您可以通过修改训练配置中的 interval 参数来调整验证频率:
evaluation = dict(interval=5) # 每 5 个 epoch 验证一次模型。
根据 线性缩放规则,如果您使用不同数量的 GPU 或每 GPU 使用不同数量的视频,则需要将学习率设置为与批量大小成比例。例如,4 张 GPU 每张 2 个视频时 lr=0.01,而 16 张 GPU 每张 4 个视频时 lr=0.08。
训练
# 使用单张 GPU 训练
python tools/train.py ${CONFIG_FILE} [可选参数]
# 使用多张 GPU 训练
./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [可选参数]
可选参数包括:
--validate(强烈推荐):在训练过程中每隔 k 个 epoch 进行一次评估(默认值为 5 个 epoch)。--work-dir ${WORK_DIR}:覆盖配置文件中指定的工作目录。--resume-from ${CHECKPOINT_FILE}:从之前的检查点文件恢复训练。--gpus ${GPU_NUM}:使用的 GPU 数量,仅适用于非分布式训练。--seed ${SEED}:为 Python、NumPy 和 PyTorch 的随机状态设置种子,以生成随机数。--deterministic:如果指定此选项,将为 CUDNN 后端设置确定性选项。JOB_LAUNCHER:用于分布式作业初始化的启动器。允许的选项有none、pytorch、slurm、mpi。特别是,如果设置为none,将以非分布式模式进行测试。LOCAL_RANK:本地排名 ID。如果未指定,将被设置为 0。--autoscale-lr:如果指定此选项,将根据 线性缩放规则自动按 GPU 数量缩放学习率。
resume-from 和 load-from 的区别:
resume-from 会加载模型权重和优化器状态,并且继承指定检查点的 epoch。通常用于恢复意外中断的训练过程。
load-from 只加载模型权重,训练 epoch 将从 0 开始。通常用于微调。
示例:
在 COCO train2017 数据集上训练
./tools/dist_train.sh configs/top_down/lite_hrnet/coco/litehrnet_18_coco_256x192.py 8
在 MPII 数据集上训练
./tools/dist_train.sh configs/top_down/lite_hrnet/mpii/litehrnet_18_mpii_256x256.py 8
测试
您可以使用以下命令测试数据集。
# 单 GPU 测试
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}] [--eval ${EVAL_METRIC}] \
[--proc_per_gpu ${NUM_PROC_PER_GPU}] [--gpu_collect] [--tmpdir ${TMPDIR}] [--average_clips ${AVG_TYPE}] \
[--launcher ${JOB_LAUNCHER}] [--local_rank ${LOCAL_RANK}]
# 多GPU测试
./tools/dist_test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM} [--out ${RESULT_FILE}] [--eval ${EVAL_METRIC}] \
[--proc_per_gpu ${NUM_PROC_PER_GPU}] [--gpu_collect] [--tmpdir ${TMPDIR}] [--average_clips ${AVG_TYPE}] \
[--launcher ${JOB_LAUNCHER}] [--local_rank ${LOCAL_RANK}]
可选参数:
RESULT_FILE:输出结果的文件名。若未指定,则不会将结果保存到文件。EVAL_METRIC:对结果进行评估的指标。允许的值取决于数据集。NUM_PROC_PER_GPU:每个GPU上的进程数。若未指定,则单个GPU上仅分配一个进程。--gpu_collect:若指定,识别结果将通过GPU通信进行收集。否则,结果将被分别保存到不同GPU的TMPDIR中,并由rank 0的工作节点进行汇总。TMPDIR:用于从多个工作节点收集结果的临时目录,当未指定--gpu_collect时可用。AVG_TYPE:用于对测试片段进行平均的选项。若设置为prob,则在平均片段得分之前会先应用softmax;否则直接对片段得分进行平均。JOB_LAUNCHER:分布式任务初始化启动器。允许的选项包括none、pytorch、slurm、mpi。特别地,若设置为none,则将以非分布式模式进行测试。LOCAL_RANK:本地排名ID。若未指定,则默认为0。
示例:
使用8个GPU在COCO数据集上测试LiteHRNet-18,并评估mAP。
./tools/dist_test.sh configs/top_down/lite_hrnet/coco/litehrnet_18_coco_256x192.py \
checkpoints/SOME_CHECKPOINT.pth 8 \
--eval mAP
获取计算复杂度
您可以使用以下命令来计算单个模型的复杂度。
python tools/summary_network.py ${CONFIG_FILE} --shape ${SHAPE}
参数:
SHAPE:输入尺寸。
示例:
测试输入分辨率为256x256的LiteHRNet-18的复杂度。
python tools/summary_network.py configs/top_down/lite_hrnet/coco/litehrnet_18_coco_256x192.py \
--shape 256 256 \
致谢
感谢以下项目和团队:
引用
如果您在研究中使用了我们的代码或模型,请引用如下文献:
@inproceedings{Yulitehrnet21,
title={Lite-HRNet: A Lightweight High-Resolution Network},
author={Yu, Changqian and Xiao, Bin and Gao, Changxin and Yuan, Lu and Zhang, Lei and Sang, Nong and Wang, Jingdong},
booktitle={CVPR},
year={2021}
}
@inproceedings{SunXLW19,
title={Deep High-Resolution Representation Learning for Human Pose Estimation},
author={Ke Sun and Bin Xiao and Dong Liu and Jingdong Wang},
booktitle={CVPR},
year={2019}
}
@article{WangSCJDZLMTWLX19,
title={Deep High-Resolution Representation Learning for Visual Recognition},
author={Jingdong Wang and Ke Sun and Tianheng Cheng and
Borui Jiang and Chaorui Deng and Yang Zhao and Dong Liu and Yadong Mu and
Mingkui Tan and Xinggang Wang and Wenyu Liu and Bin Xiao},
journal={TPAMI}
year={2019}
}
常见问题
相似工具推荐
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)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。