ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Kornia MobileViT 轻量级骨干网络实战:XXS/XS/S 三档配置、Stride-32 特征图与分类头搭建

Kornia MobileViT 轻量级骨干网络实战:XXS/XS/S 三档配置、Stride-32 特征图与分类头搭建 计算机视觉深度学习人工智能图像处理【免费下载链接】kornia 空间人工智能的几何计算机视觉库项目地址https://gitcode.com/kornia/kornia点击查看免费下载MobileViT 将 MobileNetV2 的局部卷积与以 patch 为 token 的轻量 Transformer 交替堆叠兼顾局部归纳偏置与全局感受野是面向分类、检测、分割等任务的通用轻量级骨干网络。Kornia 在kornia.models.vit_mobile中提供了xxs、xs、s三种尺寸的纯架构实现随机初始化、不含分类头输入任意图像即可得到 stride-32 的密集特征图。读完本文你将掌握 MobileViT 在 Kornia 中的实例化方式、三种模式的通道差异、底层模块结构以及如何在其上快速搭建分类器等下游任务头。一、MobileViT 架构概述MobileViT 的核心思想是以 Transformer 充当卷积先用局部卷积提取空间特征再将特征图按 patch 展开为 token 序列交给 Transformer 捕获全局依赖最后折叠回特征图并与残差分支融合。Kornia 文档docs/source/models/vit_mobile.rst明确将其定位为轻量级骨干网络交错堆叠 MobileNetV2 倒残差块MV2 Block与小型 Transformer 块全局感受野Transformer 将每个 patch 视为一个 token跨整个空间范围建立依赖纯架构实现仅提供随机初始化权重不含分类头返回 stride-32 的特征图。在 Kornia 中该模型适用于 Image Classification、Detection、Segmentation 三类下游任务可当作通用的特征提取 backbone 使用。二、快速开始实例化与推理根据 vit_mobile.rst 的示例最简用法只需三行代码import torch from kornia.models.vit_mobile import MobileViT mvit MobileViT(modexxs) # xxs, xs 或 s; 随机初始化 image torch.rand(1, 3, 256, 256) features mvit(image) # (1, 320, 8, 8) 特征图, stride 32对256×256的输入输出特征图空间尺寸为8×8即整体下采样 32 倍256 / 32 8。源码 kornia/models/vit_mobile.py 的 forward 流程为conv1 - mv2[0..4] - mvit[0] - mv2[5] - mvit[1] - mv2[6] - mvit[2] - conv2其中conv1使用 stride2 的 3×3 卷积下采样三个MV2Block(stride2)在mv2[1]、mv2[4]、mv2[6]处分别完成 2 倍下采样累计 stride 32最后由conv21×1 卷积投影到最终输出通道数。下面这张来自 docs/source/_static/img/models/vit_mobile.jpg 的示意图直观展示了256×256输入与 MobileViT-XXS 输出的(320, 8, 8)特征图平均绝对值激活热力图随机权重下该热力图尚无语义意义需训练模型或加载自己的 checkpoint 后才能反映真实特征响应。三、三种模式xxs / xs / s 的配置差异MobileViT(mode...)接受xxs、xs、s三个档位对应不同深度与宽度。从源码 vit_mobile.py 可以精确还原三种模式的超参数模式expansionTransformer 维度 dimsMV2 通道序列 channels含最终投影输出通道数xxs2[64, 80, 96][16, 16, 24, 24, 48, 48, 64, 64, 80, 80, 320]320xs4[96, 120, 144][16, 32, 48, 48, 64, 64, 80, 80, 96, 96, 384]384s4[144, 192, 240][16, 32, 64, 64, 96, 96, 128, 128, 160, 160, 640]640三种模式共享以下结构常数源码 vit_mobile.pykernel_size 3MobileViT 块内局部卷积核大小depth [2, 4, 3]三个 MobileViT 块内 Transformer 的层数depth三个MobileViTBlock的通道分别取自channels[5]、channels[7]、channels[9]Transformer 维度依次为dims[0]、dims[1]、dims[2]MLP 隐层维度依次为dims[0]*2、dims[1]*4、dims[2]*4最终输出由conv_1x1_bn(channels[-2], channels[-1])投影得到因此输出通道数即channels末元素。xxs的 expansion 为 2更轻量xs与s为 4。模式越大通道数、Transformer 维度与计算量逐级提升可按精度/算力预算选择。四、核心构造参数说明MobileViT.__init__的完整签名为vit_mobile.pyMobileViT(mode: str xxs, in_channels: int 3, patch_size: Tuple[int, int] (2, 2), dropout: float 0.0)各参数含义与取值约束modexxs、xs或s决定网络宽度与深度默认xxsin_channels输入图像的通道数默认 3RGBpatch_sizeTransformer 的 patch 尺寸默认(2, 2)。注意输入图像尺寸必须能被 patch_size 整除——从 MobileViTBlock.forward 的nh, nw h // self.ph, w // self.pw可以看出特征图高度与宽度必须为 patch 高宽的整数倍否则整除截断会产生错误的空间对齐dropoutTransformer 内部的 dropout 比率默认 0.0传入各MobileViTBlock并最终作用于Attention的输出投影与FeedForwardvit_mobile.py、L98-L109。由于是纯架构实现创建后权重为随机初始化且模型内部使用 BatchNorm见下方模块解析实际部署时建议按常规流程训练或加载预训练 checkpoint。五、添加下游任务头以分类头为例文档 vit_mobile.rst 给出了标准的特征图 池化 线性层组合方式。因为 backbone 输出的是(B, C, H/32, W/32)的密集特征图接分类头时需要先做空间池化import torch import torch.nn as nn from kornia.models.vit_mobile import MobileViT classifier nn.Sequential( MobileViT(modexxs), nn.AdaptiveAvgPool2d(1), nn.Flatten(), nn.Linear(320, 1000), ) logits classifier(torch.rand(1, 3, 256, 256)) # (1, 1000)关键点在于nn.Linear的输入维度必须与所选模式的输出通道数严格对应xxs→320xs→384s→640同理检测、分割等任务可直接消费这个 stride-32 的骨干特征接入各自的任务头。六、源码模块解析从局部卷积到全局注意力vit_mobile.py 以清晰的模块化方式实现了完整的 MobileViT各构件如下1. 基础卷积与归一化L24-L31conv_1x1_bn(inp, oup)1×1 卷积 BatchNorm SiLUconv_nxn_bn(inp, oup, kernal_size3, stride1)N×N 卷积 BatchNorm SiLU。2. Transformer 三件套L34-L177PreNorm在功能模块前先做nn.LayerNorm(dim)即 Pre-LN 结构Attention标准多头自注意力默认heads8、dim_head64to_qkv一次投影出 Q/K/V 后按头数切分Softmax 归一化后加权聚合FeedForwardLinear - SiLU - Dropout - Linear - Dropout的两层 MLPTransformer按depth堆叠「PreNorm(Attention) 残差」与「PreNorm(FeedForward) 残差」即x attn(x) x; x ff(x) xL174-L177每个 MobileViT 块中的 Transformer 使用heads4、dim_head8见 L271。3. MV2BlockMobileNetV2 倒残差块L180-L238按expansion扩展通道后执行 3×3 深度可分离卷积groupshidden_dim再投影回输出通道。当stride 1且输入输出通道相同时启用残差连接use_res_connect否则直接输出卷积结果。4. MobileViTBlock局部卷积与全局注意力的融合L241-L313forward 分三步完成Transformer 即卷积的语义局部表示conv13×3→conv21×1 投影到dim全局表示将(b, d, h, w)特征图 reshape 为(b, (ph·pw), (nh·nw), d)的 token 序列patch 展开送入 Transformer 建模跨 patch 的全局依赖再折叠回(b, d, h, w)融合conv3投影回原通道后与残差输入y沿通道维拼接torch.cat((x, y), 1)最后由conv43×3混合输出。七、测试验证与使用约束仓库测试 tests/models/test_mobile_vit.py 对三种模式做了 smoke 验证可作使用参考pytest.mark.parametrize(B, [1, 2]) pytest.mark.parametrize(image_size, [(128, 128)]) pytest.mark.parametrize(mode, [xxs, xs, s]) pytest.mark.parametrize(patch_size, [(2, 2)]) def test_smoke(self, device, dtype, B, image_size, mode, patch_size): channel {xxs: 320, xs: 384, s: 640} img torch.rand(B, 3, ih, iw, devicedevice, dtypedtype) mvit MobileViT(modemode, patch_sizepatch_size).to(device, dtype) out mvit(img) assert out.shape (B, channel[mode], 4, 4)该测试同时验证了三件事128×128输入得到4×4特征图再次印证stride 32的设计三种模式的输出通道数{xxs: 320, xs: 384, s: 640}与上文表格完全一致支持批大小B 1, 2并在指定device/dtype下运行说明模型可无缝迁移到 GPU 与混合精度场景。使用约束小结输入空间尺寸需能被 32 整除保证最终 stride-32 特征图完整且需能被patch_size整除保证 patch 展开对齐接分类头时线性层输入维度必须匹配所选模式的输出通道数。八、论文与出处本实现对应论文《MobileViT: Light-weight, General-purpose, and Mobile-friendly Vision Transformer》作者 Sachin Mehta、Mohammad Rastegari其核心动机是结合 CNN 的局部归纳偏置与 ViT 的全局建模能力构建适合移动端的轻量低延迟网络。论文面向图像分类、目标检测、语义分割等任务并在 ImageNet、MS-COCO、PASCAL VOC 等数据集上验证。Kornia 的实现参考了社区mobilevit-pytorch项目vit_mobile.py相关块级组件如 MV2 倒残差块、Transformer分别注明参考 MobileNetV2 与 ViT 论文的公开实现。如果你需要在 Kornia 中快速获得一个随机初始化、可直接替换为下游任务骨干的轻量级视觉 TransformerMobileViT(mode...)是开箱即用的选择三档模式按需取舍stride-32 输出特征图适配分类、检测与分割配合AdaptiveAvgPool2d与Linear即可在数行代码内搭建完整模型。赞分享计算机视觉深度学习人工智能图像处理【免费下载链接】kornia 空间人工智能的几何计算机视觉库项目地址https://gitcode.com/kornia/kornia点击查看免费下载相关推荐Kornia 中的 MobileViT用 PyTorch 构建轻量级视觉 Transformer 骨干网络Kornia 中的 MobileViT用 PyTorch 构建轻量级视觉 Transformer 骨干网络 MobileViT 将 MobileNetV2 的计算机视觉人工智能深度学习图像处理Transformers 骨干网络Backbone实战指南从 AutoBackbone 加载到特征图提取Transformers 骨干网络Backbone实战指南从 AutoBackbone 加载到特征图提取 本文基于 Transformers 仓库官方文档人工智能深度学习机器学习预训练微调NLP计算机视觉语音多模态Transformers 中的 PP-LCNet面向文档方向与表格分类的轻量 CNN 图像分类与骨干网络实战指南Transformers 中的 PP LCNet面向文档方向与表格分类的轻量 CNN 图像分类与骨干网络实战指南 PP LCNetPaddlePaddle人工智能深度学习机器学习预训练微调NLP计算机视觉语音多模态上一篇2024技术写作工具精选awesome-writing推荐的10款高效文档工具下一篇构建个人游戏串流中心Sunshine技术解析与实践指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表