RegNetY-8GF图像分类模型regnety_080_tv.tv2_in1k初探:ImageNet-1k预训练的终极轻量CNN指南

原创2026-10-19 17:29:571,696 阅读

RegNetY-8GF图像分类模型regnety_080_tv.tv2_in1k初探:ImageNet-1k预训练的终极轻量CNN指南

📌 模型速览

regnety_080_tv.tv2_in1k 是 timm 生态中的一款 RegNetY 架构图像分类模型,参数量仅约 39.4M,计算量约 8.5 GMACs,在 ImageNet-1k(1000 类)数据集上预训练,Top-1 精度达到 82.59%、Top-5 精度 96.25%(输入 224×224)。对于追求"小模型、高精度、低算力"的新手和普通用户来说,它是轻量级 CNN 分类器中性价比极高的一档选择。

一句话总结:用不到 40M 参数,换接近大模型级别的图像分类精度。

🧩 什么是 RegNetY?为什么它"轻量"?

RegNet 系列(RegNetX / RegNetY / RegNetZ)来自论文《Designing Network Design Spaces》(CVPR 2020),核心思想是用一套规则自动生成网络结构,让网络规模(宽度和深度)可以平滑调节:

  • RegNetY:在规整的"bottleneck"结构基础上,通道数可以逐块平滑变化,表达能力更强,是三者中精度最高的系列;
  • 8GF:指该配置在标准输入下的计算量约为 8 GFLOPs 量级,属于轻量级定位;
  • 相比同级别模型,它的卷积结构规整,在 CPU、GPU、移动端推理上都更容易加速。

timm 的 RegNet 实现还内置了多项增强(见 README.md):随机深度(stochastic depth)、梯度检查点、分层学习率衰减、可配置输出步长(dilation)、可切换激活与归一化层等,方便后续做迁移学习。

📊 核心参数一览

项目 数值 说明
参数量 39.4 M 权重文件体积很小,下载快
计算量 8.5 GMACs 推理速度快,适合端侧部署
激活量 19.7 M 显存占用低
输入尺寸 224 × 224 支持非固定输入(fixed_input_size: false)
分类类别 1000 类 ImageNet-1k 标准分类头
Top-1 / Top-5 82.59% / 96.25% 224 输入下的官方指标
许可证 BSD-3-Clause 可自由用于商业项目

以上信息可以从仓库中的 config.json 直接查到,其中 architecture 字段为 regnety_080_tv,num_classes 为 1000,pretrained_cfg.tag 为 tv2_in1k(即 torchvision 第二套训练配方在 ImageNet-1k 上得到的权重)。

📁 仓库文件说明

整个仓库结构非常精简,核心就是"说明文档 + 配置文件 + 两种权重格式":

文件 作用
README.md 模型卡片:模型详情、使用示例、同系列模型对比表
config.json 模型配置:架构、类别数、输入尺寸、归一化参数等
model.safetensors 新版安全张量格式的预训练权重(推荐)
pytorch_model.bin 传统 PyTorch 格式权重,兼容旧版加载方式

两个权重文件都通过 Git LFS 管理(见 .gitattributes),克隆仓库时会自动拉取完整权重,无需额外下载。

🚀 快速上手:三步跑通 regnety_080_tv.tv2_in1k

1️⃣ 一键加载并做图像分类

得益于 timm 的 create_model 接口,只需一行代码就能加载预训练权重:

import timm

model = timm.create_model('regnety_080_tv.tv2_in1k', pretrained=True)
model = model.eval()

完整的分类推理示例(读取图片、自动构建变换、输出 Top-5 概率)可参考 README.md 中的 "Image Classification" 小节。

2️⃣ 提取特征图(做目标检测、分割的骨干网)

加一个 features_only=True 参数,模型就会输出 5 层逐级下采样的特征图(112→56→28→14→7),可以直接接到 DETR、Mask R-CNN 等下游任务头上:

model = timm.create_model('regnety_080_tv.tv2_in1k',
                          pretrained=True,
                          features_only=True)

3️⃣ 提取图像向量(做检索、聚类)

设置 num_classes=0 去掉分类头,输出就是 2016 维的图像 Embedding,适合做图片相似度检索。

⚙️ 数据预处理:这些参数别搞错

模型对输入的预处理参数已固化在 config.json 中,手动加载权重时容易踩坑:

  • 均值 / 标准差:mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225](ImageNet 标准归一化);
  • 输入插值:训练权重时使用 bicubic 插值,推理建议保持一致;
  • Center Crop 比例:crop_pct=0.965,评估时先缩放再中心裁剪;
  • 池化层:pool_size=[7,7],对应 224 输入下的 7×7 全局平均池化。

用 timm 自带的 resolve_model_data_config + create_transform 可以自动生成正确变换,避免手动配置出错。

🔍 权重版本怎么选?(tv2_in1k vs ra3 vs pycls)

模型名后缀代表训练来源,这是新手最常混淆的地方:

后缀 含义 适用建议
tv2_in1k torchvision 第二套配方(含 EMA 等改进),ImageNet-1k 本仓库版本,官方推荐默认选择
ra3_in1k timm 训练,AdamW + 3 种增广 同规格下精度略高,但体积/版本生态以官方为准
pycls_in1k 旧版原始 PyTorch 实现训练 仅用于复现对比

同系列还有 regnety_032 / 040 / 064 / 120 / 160 等规格,数字越大模型越大。如果你的算力有限或需要移动端部署,可以按需选择更小的 040/064;若追求精度上限,同尺寸下优先 tv2_in1k 或 ra3_in1k 配方(对比数据见 README.md 的 Model Comparison 表格)。

❓ 常见问题(FAQ)

Q1:输入必须是 224×224 吗? 不是。fixed_input_size 为 false,支持其他分辨率(如 288),但精度指标仅在 224 下给出,改分辨率后精度会小幅波动。

Q2:能用于商业项目吗? 可以。许可证为 BSD-3-Clause(见 config.json 中 license 字段),商用友好。

Q3:safetensors 和 bin 权重选哪个? 两者内容等价,推荐 model.safetensors:加载更快、更内存安全;老版本代码用 pytorch_model.bin 即可。

Q4:微调自定义数据集要改什么? 默认分类头是 1000 类(head.fc)。微调时把 num_classes 改成你的类别数,并适当调低学习率,从 stem(stem.conv)到分类头逐层冻结是常见做法。

✅ 写在最后

regnety_080_tv.tv2_in1k 是"轻量级 CNN 图像分类"的典型代表:39.4M 参数、8.5 GMACs、82.59% Top-1,兼顾速度、体积与精度,BSD 许可证商用无忧。无论你是做图像分类基线、下游任务的特征骨干,还是想快速验证一个想法,它都是一个上手成本极低的起点 🎯。

登录后查看全文
regnety_080_tv.tv2_in1k