【免费下载链接】Vision-RWKV
Vision-RWKV 是 OpenGVLab 开源的 RWKV 视觉识别系列,本指南带你从零上手其ImageNet 图像分类模型:覆盖 Tiny、Small、Base、Large 四个档位的预训练权重(in1k_224表示在 ImageNet-1K 上训练),从克隆仓库、挑选档位到加载推理,一篇讲透。
一、项目里有什么?四档分类模型一眼看懂
本仓库以“开箱即用”的预训练权重为主,四个 ImageNet 分类模型按参数量从小到大排列:
| 档位 | RWKV6 权重(ImageNet-1K) | Vision-RWKV 权重 | 推荐场景 |
|---|---|---|---|
| Tiny | vrwkv6_t_in1k_224.pth | vrwkv_t_in1k_224.pth | 端侧部署、快速实验 |
| Small | vrwkv6_s_in1k_224.pth | vrwkv_s_in1k_224.pth | 日常分类任务主力 |
| Base | vrwkv6_b_in1k_224.pth | vrwkv_b_in1k_224.pth | 精度与速度均衡 |
| Large | vrwkv_l_22kto1k_384.pth | — | 追求更高精度的离线任务 |
💡 命名速读:
in1k= ImageNet-1K 训练;224= 输入边长 224;in22k的 Large 模型(vrwkv_l_in22k_192.pth)则是 ImageNet-22K 预训练版,适合当作更强的初始化权重使用。
二、为什么是 RWKV:与 Transformer 视觉模型的差异
RWKV6 是类 RNN 架构,靠线性复杂度的递推 + Lerp 注意力处理 token 序列:
- 推理快:自回归式计算,序列越长优势越明显;
- 显存省:不需要维护与序列长度平方相关的注意力矩阵;
- 可迁移:图像按 ViT 方式切分成 patch 序列后,同样适用这套机制。
输入图像 (3, 224, 224) | v +---------------------------+ | RWKV-6 视觉骨干 | <--- vrwkv6_*_in1k_224.pth | patch 序列 · 线性复杂度 | +---------------------------+ | v +---------------------------+ | ViT Adapter(分类头) | <--- vrwkv_*_in1k_224.pth | 轻量适配 · 输出 1000 类 | +---------------------------+ | v ImageNet 类别概率简单说:RWKV6 负责“看懂”图像,Adapter 负责“说出类别”。这也正是仓库里同时提供vrwkv6_*和vrwkv_*两类文件的原因——前者是骨干权重,后者是接上 Adapter 后的完整分类模型,推理时优先加载vrwkv_*_in1k_224.pth即可。
三、准备工作:克隆仓库并下载四档模型
3.1 克隆仓库
git clone https://gitcode.com/OpenGVLab/Vision-RWKV cd Vision-RWKV3.2 检查权重是否齐全
ls vrwkv6_*_in1k_224.pth vrwkv_*_in1k_224.pth vrwkv_l_22kto1k_384.pth四个核心文件对应关系:
| 分类模型(含 Adapter) | 骨干(单独使用) |
|---|---|
| vrwkv_t_in1k_224.pth | vrwkv6_t_in1k_224.pth |
| vrwkv_s_in1k_224.pth | vrwkv6_s_in1k_224.pth |
| vrwkv_b_in1k_224.pth | vrwkv_b_in1k_224.pth |
权重均为标准 PyTorch 的.pth格式,可直接用torch.load读取。
四、快速上手:加载 Tiny 模型完成第一次推理
以下是最小可用的加载流程(以 Tiny 为例,其余档位替换权重路径即可):
import torch # 1. 加载 Tiny 分类模型(包含 RWKV-6 骨干 + ViT Adapter) state = torch.load("vrwkv_t_in1k_224.pth", map_location="cpu") model = build_vrwkv_tiny() # 模型定义见 OpenGVLab Vision-RWKV 源码 model.load_state_dict(state) model.eval() # 2. 构造输入:1 张 224x224 的 ImageNet 风格图像 x = torch.randn(1, 3, 224, 224) # 3. 推理 with torch.no_grad(): logits = model(x) print(logits.shape) # 输出 (1, 1000) 个类别的得分几点提示:
- 输入分辨率必须匹配权重:
224模型喂 224×224,in22k_192喂 192×192,22kto1k_384喂 384×384; - 推理务必
model.eval()并加torch.no_grad(),否则既费显存又可能引入 Dropout 扰动; - 想要 Top-5 结果,对
logits做torch.topk(logits, 5)再查 ImageNet 类别表即可。
五、怎么选档位:Tiny / Small / Base / Large 速查
| 你的诉求 | 推荐档位 | 权重文件 |
|---|---|---|
| 手机/嵌入式上跑 | Tiny | vrwkv_t_in1k_224.pth |
| GPU 实时分类 | Small | vrwkv_s_in1k_224.pth |
| 精度优先、算力充足 | Base | vrwkv_b_in1k_224.pth |
| 离线高难场景、冲精度 | Large | vrwkv_l_22kto1k_384.pth |
| 从零训练自己的视觉骨干 | Large (in22k) | vrwkv_l_in22k_192.pth |
经验法则:先用 Tiny 跑通流程,再用 Small 验证精度,最后按需升级 Base/Large。RWKV6 的线性复杂度让“换更大的模型”在推理端代价相对可控。
六、常见问题排查清单
| 症状 | 大概率原因 | 解决办法 |
|---|---|---|
size mismatch/ key 对不上 | 模型结构版本与权重复不一致 | 用与vrwkv_*_in1k_224.pth配套的代码版本 |
| 输出全是乱序高概率 | 输入未归一化或分辨率不对 | 按 ImageNet 标准做 resize + mean/std 归一化,核对 224 分辨率 |
| 显存不足 | 误用了 Large 384 输入 | 换回 224 档模型,或减小 batch size |
加载.pth报weights_only错误 | PyTorch 2.6+ 默认weights_only=True | 改为torch.load(path, weights_only=False) |
七、延伸:同一套骨干还能干别的
分类只是起点。仓库里另外两类权重展示了 RWKV 骨干的可迁移性:
- 实例分割(COCO):mask_rcnn_vrwkv_adapter_tiny_fpn_1x_coco.pth、mask_rcnn_vrwkv_adapter_small_fpn_1x_coco.pth、mask_rcnn_vrwkv_adapter_base_fpn_1x_coco.pth、mask_rcnn_vrwkv_adapter_large_fpn_1x_coco.pth
- 语义分割(ADE20K):upernet_vrwkv_adapter_tiny_512_160k_ade20k.pth、upernet_vrwkv_adapter_small_512_160k_ade20k.pth、upernet_vrwkv_adapter_base_512_160k_ade20k.pth、upernet_vrwkv_adapter_large_512_160k_ade20k.pth
可以看出,RWKV6 骨干 + 任务 Adapter 的组合方式在分类、检测分割任务间是统一的——把 ImageNet 上验证过的这套工作流,直接平移到自己的任务即可。
八、总结
- 四个档位、命名即配置:
vrwkv_{t|s|b}_in1k_224.pth对应 Tiny/Small/Base,Large 用 vrwkv_l_22kto1k_384.pth; vrwkv6_*是骨干权重,vrwkv_*是带 Adapter 的完整分类模型,推理优先加载后者;- 记住三件事:分辨率对齐权重、eval 模式推理、按算力选档位,你离跑通第一个 RWKV 图像分类应用只差一次
git clone。 </输出文章>
<输出文章>
Vision-RWKV图像分类实战:Tiny到Large四档模型在ImageNet上的使用指南
Vision-RWKV 是 OpenGVLab 开源的 RWKV 视觉识别系列,本指南带你从零上手其ImageNet 图像分类模型:覆盖 Tiny、Small、Base、Large 四个档位的预训练权重(in1k_224表示在 ImageNet-1K 上训练),从克隆仓库、挑选档位到加载推理,一篇讲透。
一、项目里有什么?四档分类模型一眼看懂
本仓库以"开箱即用"的预训练权重为主,四个 ImageNet 分类模型按参数量从小到大排列:
| 档位 | RWKV6 权重(ImageNet-1K) | Vision-RWKV 权重 | 推荐场景 |
|---|---|---|---|
| Tiny | vrwkv6_t_in1k_224.pth | vrwkv_t_in1k_224.pth | 端侧部署、快速实验 |
| Small | vrwkv6_s_in1k_224.pth | vrwkv_s_in1k_224.pth | 日常分类任务主力 |
| Base | vrwkv6_b_in1k_224.pth | vrwkv_b_in1k_224.pth | 精度与速度均衡 |
| Large | vrwkv_l_22kto1k_384.pth | — | 追求更高精度的离线任务 |
💡 命名速读:
in1k= ImageNet-1K 训练;224= 输入边长 224;in22k的 Large 模型(vrwkv_l_in22k_192.pth)则是 ImageNet-22K 预训练版,适合当作更强的初始化权重使用。
二、为什么是 RWKV:与 Transformer 视觉模型的差异
RWKV6 是类 RNN 架构,靠线性复杂度的递推 + Lerp 注意力处理 token 序列:
- 推理快:自回归式计算,序列越长优势越明显;
- 显存省:不需要维护与序列长度平方相关的注意力矩阵;
- 可迁移:图像按 ViT 方式切分成 patch 序列后,同样适用这套机制。
输入图像 (3, 224, 224) | v +-----------------------------+ | RWKV-6 视觉骨干 | <--- vrwkv6_*_in1k_224.pth | patch 序列 · 线性复杂度 | +-----------------------------+ | v +-----------------------------+ | ViT Adapter(分类头) | <--- vrwkv_*_in1k_224.pth | 轻量适配 · 输出 1000 类 | +-----------------------------+ | v ImageNet 类别概率简单说:RWKV6 负责"看懂"图像,Adapter 负责"说出类别"。这也正是仓库里同时提供vrwkv6_*和vrwkv_*两类文件的原因——前者是骨干权重,后者是接上 Adapter 后的完整分类模型,推理时优先加载vrwkv_*_in1k_224.pth即可。
三、准备工作:克隆仓库并下载四档模型
3.1 克隆仓库
git clone https://gitcode.com/OpenGVLab/Vision-RWKV cd Vision-RWKV3.2 检查权重是否齐全
ls vrwkv6_*_in1k_224.pth vrwkv_*_in1k_224.pth vrwkv_l_22kto1k_384.pth四个核心文件对应关系:
| 分类模型(含 Adapter) | 骨干(单独使用) |
|---|---|
| vrwkv_t_in1k_224.pth | vrwkv6_t_in1k_224.pth |
| vrwkv_s_in1k_224.pth | vrwkv6_s_in1k_224.pth |
| vrwkv_b_in1k_224.pth | vrwkv6_b_in1k_224.pth |
权重均为标准 PyTorch 的.pth格式,可直接用torch.load读取。
四、快速上手:加载 Tiny 模型完成第一次推理
以下是最小可用的加载流程(以 Tiny 为例,其余档位替换权重路径即可):
import torch # 1. 加载 Tiny 分类模型(包含 RWKV-6 骨干 + ViT Adapter) state = torch.load("vrwkv_t_in1k_224.pth", map_location="cpu") model = build_vrwkv_tiny() # 模型定义见 OpenGVLab Vision-RWKV 源码 model.load_state_dict(state) model.eval() # 2. 构造输入:1 张 224x224 的 ImageNet 风格图像 x = torch.randn(1, 3, 224, 224) # 3. 推理 with torch.no_grad(): logits = model(x) print(logits.shape) # 输出 (1, 1000) 个类别的得分几点提示:
- 输入分辨率必须匹配权重:
224模型喂 224×224,in22k_192喂 192×192,22kto1k_384喂 384×384; - 推理务必
model.eval()并加torch.no_grad(),否则既费显存又可能引入 Dropout 扰动; - 想要 Top-5 结果,对
logits做torch.topk(logits, 5)再查 ImageNet 类别表即可。
五、怎么选档位:Tiny / Small / Base / Large 速查
| 你的诉求 | 推荐档位 | 权重文件 |
|---|---|---|
| 手机/嵌入式上跑 | Tiny | vrwkv_t_in1k_224.pth |
| GPU 实时分类 | Small | vrwkv_s_in1k_224.pth |
| 精度优先、算力充足 | Base | vrwkv_b_in1k_224.pth |
| 离线高难场景、冲精度 | Large | vrwkv_l_22kto1k_384.pth |
| 从零训练自己的视觉骨干 | Large (in22k) | vrwkv_l_in22k_192.pth |
经验法则:先用 Tiny 跑通流程,再用 Small 验证精度,最后按需升级 Base/Large。RWKV6 的线性复杂度让"换更大的模型"在推理端代价相对可控。
六、常见问题排查清单
| 症状 | 大概率原因 | 解决办法 |
|---|---|---|
size mismatch/ key 对不上 | 模型结构版本与权重复不一致 | 用与vrwkv_*_in1k_224.pth配套的代码版本 |
| 输出全是乱序高概率 | 输入未归一化或分辨率不对 | 按 ImageNet 标准做 resize + mean/std 归一化,核对 224 分辨率 |
| 显存不足 | 误用了 Large 384 输入 | 换回 224 档模型,或减小 batch size |
加载.pth报weights_only错误 | PyTorch 2.6+ 默认weights_only=True | 改为torch.load(path, weights_only=False) |
七、延伸:同一套骨干还能干别的
分类只是起点。仓库里另外两类权重展示了 RWKV 骨干的可迁移性:
- 实例分割(COCO):mask_rcnn_vrwkv_adapter_tiny_fpn_1x_coco.pth、mask_rcnn_vrwkv_adapter_small_fpn_1x_coco.pth、mask_rcnn_vrwkv_adapter_base_fpn_1x_coco.pth、mask_rcnn_vrwkv_adapter_large_fpn_1x_coco.pth
- 语义分割(ADE20K):upernet_vrwkv_adapter_tiny_512_160k_ade20k.pth、upernet_vrwkv_adapter_small_512_160k_ade20k.pth、upernet_vrwkv_adapter_base_512_160k_ade20k.pth、upernet_vrwkv_adapter_large_512_160k_ade20k.pth
可以看出,RWKV6 骨干 + 任务 Adapter 的组合方式在分类、检测分割任务间是统一的——把 ImageNet 上验证过的这套工作流,直接平移到自己的任务即可。
八、总结
- 四个档位、命名即配置:
vrwkv_{t|s|b}_in1k_224.pth对应 Tiny/Small/Base,Large 用 vrwkv_l_22kto1k_384.pth; vrwkv6_*是骨干权重,vrwkv_*是带 Adapter 的完整分类模型,推理优先加载后者;- 记住三件事:分辨率对齐权重、eval 模式推理、按算力选档位,你离跑通第一个 RWKV 图像分类应用只差一次
git clone。
【免费下载链接】Vision-RWKV
相关推荐
使用 PaddleHub 部署 MobileNetV3 Large 图像分类模型:基于 SSLD 蒸馏的 ImageNet 预训练模块实战指南
使用 PaddleHub 部署 MobileNetV3 Large 图像分类模型:基于 SSLD 蒸馏的 ImageNet 预训练模块实战指南 导读 本文围绕
人工智能大模型微调模型推理服务jetson-inference 图像识别实战:使用 imageNet 与 imagenet 程序在 Jetson 上部署分类网络
jetson inference 图像识别实战:使用 imageNet 与 imagenet 程序在 Jetson 上部署分类网络 本文是 jetson inf
人工智能计算机视觉深度学习微调CNTK 实战:用 BN-Inception(Batch Normalized Inception)在 CIFAR-10 与 ImageNet 上训练图像分类模型
CNTK 实战:用 BN Inception(Batch Normalized Inception)在 CIFAR 10 与 ImageNet 上训练图像分类模
深度学习机器学习人工智能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考