【YOLOv8改进】MobileViT 更换主干网络: 轻量级、通用且适合移动设备的视觉变压器 (论文笔记+引入代码)

简介: MobileViT是针对移动设备的轻量级视觉Transformer网络,结合CNN的局部特征、Transformer的全局注意力和ViT的表示学习。在ImageNet-1k上,它以600万参数实现78.4%的top-1准确率,超越MobileNetv3和DeiT。MobileViT不仅适用于图像分类,还在目标检测等任务中表现出色,且优化简单,代码已开源。YOLOv8引入了MobileViT块,整合卷积和Transformer结构,提升模型性能。更多详情可参考相关专栏和链接。

YOLO目标检测创新改进与实战案例专栏

专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLO基础解析+创新改进+实战案例

摘要

轻量级卷积神经网络(CNNs)已成为移动视觉任务的事实标准。它们的空间归纳偏差使它们能够跨不同视觉任务学习具有更少参数的表示。然而,这些网络在空间上是局部的。为了学习全局表示,基于自注意力的视觉Transformer(ViTs)已被采纳。与CNNs不同,ViTs是重量级的。在本文中,我们提出以下问题:是否可能结合CNNs和ViTs的优势构建一个轻量级且低延迟的网络用于移动视觉任务?为此,我们介绍了MobileViT,一个面向移动设备的轻量级通用视觉Transformer。MobileViT以不同的视角呈现了使用Transformer进行信息全局处理的方式。我们的结果表明,MobileViT在不同任务和数据集上明显优于基于CNN和ViT的网络。在ImageNet-1k数据集上,MobileViT以约600万参数实现了78.4%的top-1准确率,比MobileNetv3(基于CNN)和DeIT(基于ViT)准确率高出3.2%和6.2%。在MS-COCO目标检测任务中,MobileViT比MobileNetv3准确率高出5.7%,参数数量相近。我们的源代码是开源的,可在以下链接获取:https://github.com/apple/ml-cvnets。

创新点

MobileViT 是一种轻量级、通用且适用于移动设备的视觉Transformer网络

  1. 结合CNN、Transformer和ViTs的优势:MobileViT将CNN的空间局部性特征学习、Transformer的全局自注意力机制以及ViTs的视觉表示学习相结合,充分利用三者的优势,旨在构建轻量级、通用且适用于移动设备的视觉处理网络。
  2. 出色的性能表现:在ImageNet-1k数据集上,MobileViT在参数约为250万时优于MobileNetv2、ShuffleNetv2和MobileNetv3等传统CNNs,甚至比ResNet、DenseNet、EfficientNet等重量级CNNs表现更好。
  3. 通用用途:MobileViT不仅适用于图像分类任务,还在目标检测和语义分割等移动视觉任务中展现出优异的性能,表现出其通用性和多功能性。
  4. 简单且易于优化:与许多ViT变体需要复杂数据增强相比,MobileViT在基本数据增强下表现出更好的性能,易于优化和应用于新任务和数据集中。

MobileViT的创新设计使其成为当前领先的移动视觉处理网络之一,为移动设备上的视觉任务提供了全新的解决方案。

yolov8 引入


# MobileViT块的定义,整合了卷积和Transformer结构
class MobileViTBlock(nn.Module):
    def __init__(self, dim, depth, channel, kernel_size, patch_size, mlp_dim, dropout=0.):
        super().__init__()
        self.ph = patch_size  # 设置patch的高度
        self.pw = patch_size  # 设置patch的宽度
        self.conv1 = conv_nxn_bn(channel, channel, kernel_size)  # 第一个卷积层,用于提取特征
        self.conv2 = conv_1x1_bn(channel, dim)  # 通过1x1卷积调整通道数
        self.transformer = Transformer(dim, depth, 4, 8, mlp_dim, dropout)  # Transformer模块,用于处理序列化的patch
        self.conv3 = conv_1x1_bn(dim, channel)  # 通过1x1卷积恢复通道数
        self.conv4 = conv_nxn_bn(2 * channel, channel, kernel_size)  # 最后的卷积层,融合特征

    def forward(self, x):
        y = x.clone()  # 复制输入,用于后续与Transformer的输出融合
        x = self.conv1(x)  # 应用第一个卷积层
        x = self.conv2(x)  # 通过1x1卷积调整通道数
        _, _, h, w = x.shape  # 获取特征图的高度和宽度
        # 重组特征图以适应Transformer的输入格式
        x = rearrange(x, 'b d (h ph) (w pw) -> b (ph pw) (h w) d', ph=self.ph, pw=self.pw)
        x = self.transformer(x)  # 通过Transformer处理
        # 重新排列输出以恢复原始的特征图结构
        x = rearrange(x, 'b (ph pw) (h w) d -> b d (h ph) (w pw)', h=h // self.ph, w=w // self.pw, ph=self.ph,
                      pw=self.pw)
        x = self.conv3(x)  # 通过1x1卷积恢复通道数
        x = torch.cat((x, y), 1)  # 将Transformer的输出与原始特征图融合
        x = self.conv4(x)  # 应用最后的卷积层融合特征
        return x

task与yaml配置

详见:https://blog.csdn.net/shangyanaf/article/details/136962297

相关文章
|
3月前
|
机器学习/深度学习 人工智能
类人神经网络再进一步!DeepMind最新50页论文提出AligNet框架:用层次化视觉概念对齐人类
【10月更文挑战第18天】这篇论文提出了一种名为AligNet的框架,旨在通过将人类知识注入神经网络来解决其与人类认知的不匹配问题。AligNet通过训练教师模型模仿人类判断,并将人类化的结构和知识转移至预训练的视觉模型中,从而提高模型在多种任务上的泛化能力和稳健性。实验结果表明,人类对齐的模型在相似性任务和出分布情况下表现更佳。
88 3
|
7天前
|
机器学习/深度学习 人工智能 搜索推荐
PaSa:字节跳动开源学术论文检索智能体,自动调用搜索引擎、浏览相关论文并追踪引文网络
PaSa 是字节跳动推出的基于强化学习的学术论文检索智能体,能够自动调用搜索引擎、阅读论文并追踪引文网络,帮助用户快速获取精准的学术文献。
89 14
|
15天前
|
负载均衡 芯片 异构计算
NSDI'24 | 阿里云飞天洛神云网络论文解读——《LuoShen》揭秘新型融合网关 洛神云网关
NSDI‘24于4月16-18日在美国圣塔克拉拉市举办,阿里云飞天洛神云网络首次中稿NSDI,两篇论文入选。其中《LuoShen: A Hyper-Converged Programmable Gateway for Multi-Tenant Multi-Service Edge Clouds》提出超融合网关LuoShen,基于Tofino、FPGA和CPU的新型硬件形态,将公有云VPC设施部署到边缘机柜中,实现小型化、低成本和高性能。该方案使成本降低75%,空间占用减少87%,并提供1.2Tbps吞吐量,展示了强大的技术竞争力。
|
15天前
|
SQL Cloud Native API
NSDI'24 | 阿里云飞天洛神云网络论文解读——《Poseidon》揭秘新型超高性能云网络控制器
NSDI‘24于4月16-18日在美国加州圣塔克拉拉市举办,汇聚全球网络系统领域的专家。阿里云飞天洛神云网络的两篇论文入选,标志着其创新能力获广泛认可。其中,《Poseidon: A Consolidated Virtual Network Controller that Manages Millions of Tenants via Config Tree》介绍了波塞冬平台,该平台通过统一控制器架构、高性能配置计算引擎等技术,实现了对超大规模租户和设备的高效管理,显著提升了云网络性能与弹性。实验结果显示,波塞冬在启用EIP时的完成时间比Top 5厂商分别快1.8至55倍和2.6至4.8倍。
|
3月前
|
机器学习/深度学习 Web App开发 人工智能
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》这篇论文提出了一种基于YOLOv3-Tiny的轻量级目标检测模型Micro-YOLO,通过渐进式通道剪枝和轻量级卷积层,显著减少了参数数量和计算成本,同时保持了较高的检测性能。
63 2
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
|
3月前
|
机器学习/深度学习 编解码 算法
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
MobileNetV3是谷歌为移动设备优化的神经网络模型,通过神经架构搜索和新设计计算块提升效率和精度。它引入了h-swish激活函数和高效的分割解码器LR-ASPP,实现了移动端分类、检测和分割的最新SOTA成果。大模型在ImageNet分类上比MobileNetV2更准确,延迟降低20%;小模型准确度提升,延迟相当。
109 1
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
|
3月前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
140 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
3月前
|
算法 计算机视觉 Python
YOLOv8优改系列二:YOLOv8融合ATSS标签分配策略,实现网络快速涨点
本文介绍了如何将ATSS标签分配策略融合到YOLOv8中,以提升目标检测网络的性能。通过修改损失文件、创建ATSS模块文件和调整训练代码,实现了网络的快速涨点。ATSS通过自动选择正负样本,避免了人工设定阈值,提高了模型效率。文章还提供了遇到问题的解决方案,如模块载入和环境配置问题。
222 0
YOLOv8优改系列二:YOLOv8融合ATSS标签分配策略,实现网络快速涨点
|
3月前
|
机器学习/深度学习 计算机视觉 异构计算
YOLOv8优改系列一:YOLOv8融合BiFPN网络,实现网络快速涨点
本文介绍了将BiFPN网络应用于YOLOv8以增强网络性能的方法。通过双向跨尺度连接和加权特征融合,BiFPN能有效捕获多尺度特征,提高目标检测效果。文章还提供了详细的代码修改步骤,包括修改配置文件、创建模块文件、修改训练代码等,以实现YOLOv8与BiFPN的融合。
448 0
YOLOv8优改系列一:YOLOv8融合BiFPN网络,实现网络快速涨点
|
3月前
|
编解码 人工智能 文件存储
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
YOLOv7是一种新的实时目标检测器,通过引入可训练的免费技术包和优化的网络架构,显著提高了检测精度,同时减少了参数和计算量。该研究还提出了新的模型重参数化和标签分配策略,有效提升了模型性能。实验结果显示,YOLOv7在速度和准确性上超越了其他目标检测器。
79 0
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》

热门文章

最新文章