news 2026/10/20 11:07:38

focalnet_tiny_lrf.ms_in1k 模型解剖:从 stem.proj 到 head.fc 的架构模块逐层完整解读

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
focalnet_tiny_lrf.ms_in1k 模型解剖:从 stem.proj 到 head.fc 的架构模块逐层完整解读

【免费下载链接】focalnet_tiny_lrf.ms_in1k

项目地址:https://ai.gitcode.com/hf_mirrors/timm/focalnet_tiny_lrf.ms_in1k
点击查看免费下载

focalnet_tiny_lrf.ms_in1k 是一个基于 Focal Modulation Network(FocalNet)的图像分类模型,由 Microsoft 作者团队在 ImageNet-1k 上预训练。本文带你逐层解剖它的内部结构——从最底层的stem.proj卷积,到 4 个 stages 里的聚焦调制模块,再到最终的head.fc分类头,帮你完整理解这个仅 28.6M 参数的轻量级视觉骨干网络是如何工作的。

📊 模型速览:一张表看懂关键指标

在深入结构之前,先看 README.md 中记录的核心参数:

指标数值说明
参数量28.6 M轻量级,适合部署
计算量4.5 GMACs224×224 输入下
激活值17.8 M显存占用友好
输入分辨率224 × 224ImageNet 标准
输出类别1000 类ImageNet-1k
特征维度768num_features
许可证MIT可商用

💡 命名解码:tiny= 最小尺寸;lrf=LongRangeFocus,指每个调制模块使用 3 级多尺度窗口(对应 3/5/7 卷积核),比srf变体(2 级)的"聚焦范围"更远;ms_in1k= Microsoft 官方权重、ImageNet-1k 预训练。

🗺️ 整体架构总览:四级特征金字塔

focalnet_tiny_lrf.ms_in1k 的数据流是一条"分辨率递减、通道数递增"的清晰链路:

模块路径输出分辨率输出通道作用
stem56 × 56964 倍下采样入口
layers.056 × 56962 个 FocalNetBlock
layers.128 × 281922× 下采样 + 2 个 Block
layers.214 × 143842× 下采样 + 6 个 Block
layers.37 × 77682× 下采样 + 2 个 Block
norm+head768 维向量1000归一化 + 全局池化 + 分类

整个网络共12 个 FocalNetBlock(2+2+6+2),其中layers.2承担了最重的"细粒度建模"任务。用features_only=True加载时,四个 stage 输出的特征图正是上表中的[96,56,56] / [192,28,28] / [384,14,14] / [768,7,7],可直接用于检测、分割等下游任务。

🔬 第 1 层解剖:stem —— 一切从 stem.proj 开始

stem是整个网络的"入口",config.json 中"first_conv": "stem.proj"指名的就是它:

  • stem.proj:一个 4×4 卷积核、stride=4 的下采样卷积,把 224×224×3 的原始图像直接压缩为 56×56×96 的特征图。相比传统"3×3 卷积 + 池化"的两步下采样,它一步到位且更平滑。
  • stem.norm:紧跟的 LayerNorm2d,对 96 个通道做逐点归一化,稳定数值范围。

📌 做迁移学习/剪枝时,stem.proj就是需要优先关注的"第一层卷积"——它决定了模型看到的第一个特征表征。

⚙️ 第 2 层解剖:FocalNetBlock —— 网络的基本积木

每个 stage 内部的单元都是FocalNetBlock,内部结构为经典的"双残差 + 双归一化":

x → norm1 → FocalModulation → + 残差(LayerScale + DropPath) → norm2 → Conv-MLP(mlp_ratio=4) → + 残差(LayerScale + DropPath)

三个值得注意的设计:

  1. LayerScale2d:每个残差分支乘以一个初始 1e-4 的可学习缩放因子,让小模型在训练初期更稳定;
  2. DropPath(随机深度):训练时以一定概率整体"丢弃"残差分支,缓解过拟合;
  3. Conv 版 MLP:FFN 部分用 1×1 卷积实现而非线性层,保持全卷积架构,不要求固定输入尺寸。

🎯 第 3 层解剖:FocalModulation —— 灵魂所在

FocalNet 的核心创新就在FocalModulation模块,它回答的问题是:如何不用昂贵的全局注意力,也能高效捕捉多尺度上下文?

以 focalnet_tiny_lrf 为例(focal_level=3、focal_window=3、focal_factor=2):

  • 一次 1×1 投影三分:输入先经过f投影,被切分为q(查询)、ctx(上下文)、gates(门控权重)三份;
  • 3 级多尺度卷积 + 全局平均:ctx分别流过 3×3、5×5、7×7 三个逐通道深度卷积(GELU 激活),再叠加一个跨全图 H×W 的平均池化分支——即"由近及远"四个感受野层次;
  • 门控加权求和:各级上下文按gates的门控权重相加,得到自适应的上下文ctx_all;
  • 聚焦调制:q * h(ctx_all),用上下文对查询做逐点调制,最后经 1×1 投影proj输出。

💡 直观理解:传统自注意力是"每个像素看所有像素"(O(N²) 复杂度),而 FocalModulation 用几个小卷积 + 全局平均就实现了类似效果,这正是 4.5 GMACs 超低计算量的来源。lrf命名正来源于此——相比srf的 2 级,它多了一级更大的 7×7 感受野。

📐 第 4 层解剖:四个 stage 的节奏设计

layers.0 ~ layers.3遵循统一的节奏:先下采样、后堆 Block:

stage下采样downsampleBlock 数设计意图
layers.0无(stem 已 4× 降)2高分辨率下学习纹理
layers.12×(96→192 通道)2过渡,扩大感受野
layers.22×(192→384 通道)6算力最重,学语义
layers.32×(384→768 通道)2高层抽象,接分类头

每个下采样层同样由stride-2 卷积 + LayerNorm2d构成,与stem保持同一风格。整体形成 56→28→14→7 的空间金字塔,通道数 96→192→384→768 逐级翻倍。

🏁 第 5 层解剖:head —— 终点站 head.fc

数据流最后经过两个收尾模块:

  • norm:对 7×7×768 的特征图做最后一层 LayerNorm2d,把数值稳定在head.fc最舒服的区间;
  • head(ClassifierHead):内部是全局平均池化 → 展平 →head.fc。head.fc即 config.json 中"classifier": "head.fc"所指的那一层 768→1000 的全连接,输出 ImageNet 1000 类的 logits。

💡 换成目标检测等任务时,通常就是保留到layers.3的输出、丢弃整个head,再挂自定义分支。

🚀 上手使用:三种加载姿势

权重文件位于 model.safetensors(safetensors 格式,约 114.6 MB)与 pytorch_model.bin,均通过 timm 加载。前置数据配置(ImageNet 均值/标准差、90% 中心裁剪)可直接从 config.json 的pretrained_cfg中读取。

① 图像分类(完整模型)

model = timm.create_model('focalnet_tiny_lrf.ms_in1k', pretrained=True) output = model(x) # (batch, 1000)

② 提取多级特征图(features_only)

model = timm.create_model('focalnet_tiny_lrf.ms_in1k', pretrained=True, features_only=True) feats = model(x) # [96×56×56, 192×28×28, 384×14×14, 768×7×7]

③ 生成图像 Embedding(去掉分类头)

model = timm.create_model('focalnet_tiny_lrf.ms_in1k', pretrained=True, num_classes=0) emb = model(x) # (batch, 768)

⚠️ 注意:推理前务必用timm.data.create_transform生成与config.json一致的归一化变换,否则会明显掉点。

✅ 一句话总结

focalnet_tiny_lrf.ms_in1k 用stem 四级下采样 + 12 个"聚焦调制 + 卷积 MLP"Block + 单线性分类头的极简结构,以 28.6M 参数、4.5 GMACs 的代价,实现了多尺度全局上下文建模——是轻量视觉骨干中"算得少、看得全"的代表,适合对推理速度敏感的分类与特征提取场景。

【免费下载链接】focalnet_tiny_lrf.ms_in1k

项目地址:https://ai.gitcode.com/hf_mirrors/timm/focalnet_tiny_lrf.ms_in1k
点击查看免费下载

相关推荐

上一篇:MXNet mxnet.test_utils 测试工具包:从数据生成到算子验证的完整实战指南
下一篇:MXNet numpy 统计例程(Statistics Routines)全指南:从最值、均值到相关性与直方图

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 11:07:03

钓鱼攻击为何是网络安全基础?原理、演练与防御全解析

1. 为什么学习网络安全要先啃钓鱼这块硬骨头做安全这行越久,越会承认一个事实:大多数真正打穿企业的入侵,不是靠什么0day漏洞,而是靠一封做得足够逼真的邮件。钓鱼在渗透测试里的地位,就像心肺功能对运动员那样基础——…

作者头像 李华
网站建设 2026/10/20 11:06:40

Kimi AI 一本通:从入门到进阶的长文本处理与智能体实战指南

简介:《KiMi Ai 一本通指南》是一份面向AI工具初学者与进阶用户的系统化学习资料,围绕Kimi智能助手与Kimi智能体展开,帮助读者从基础对话到高阶应用全面掌握这一国产AI工具。内容覆盖长文本对话技巧、文档与图片解析、联网搜索、角色扮演、PP…

作者头像 李华
网站建设 2026/10/20 11:02:50

YOLO11结合HAFB-1实现五种羊品种自动识别与边缘部署

从去年底开始,我一直在做牧业场景下的视觉识别项目,其中最有意思也最折磨人的就是“把不同品种的羊自动分出来”。我们项目组代号为“基于YOLO11-HAFB-1的五种羊品种分类识别系统”,这个系统不是简单套一个目标检测模型完事,而是把…

作者头像 李华
网站建设 2026/10/20 11:01:15

大模型训练工程实践指南:从数据管线到分布式稳定跑通

“大模型训练”这四个字,放在项目计划书里是一句话,落到工程现场就是一整套体系:数据、架构、算法、分布式、稳定性,任何一个环节掉链子,整个训练都可能停摆。我见过不少项目把预训练想成“拼算力”,结果几…

作者头像 李华