集智书童 | 炸裂 !轻量化YOLO | ShuffleNetv2与Transformer结合,重塑YOLOv7成就超轻超快YOLO

本文来源公众号“集智书童”,仅用于学术分享,侵权删,干货满满。

原文链接:炸裂 !轻量化YOLO | ShuffleNetv2与Transformer结合,重塑YOLOv7成就超轻超快YOLO

随着移动计算技术的迅速发展,在移动设备上部署高效的目标检测算法成为计算机视觉领域的一个关键研究点。本研究聚焦于优化YOLOv7算法,旨在提高其在移动平台上的操作效率和速度,同时确保高准确度。

通过结合高级技术,如组卷积、ShuffleNetV2和视觉 Transformer ,本研究有效减少了模型的参数数量和内存使用,简化了网络架构,并加强了在资源受限设备上的实时目标检测能力。

实验结果表明,改进后的YOLO模型表现出色,显著提升了处理速度同时保持了卓越的检测准确度。

1 Introduction

随着计算机视觉领域的迅速发展,目标检测在各种应用中变得至关重要,这些应用范围包括但不限于安全监控、自动驾驶和智慧医疗。尽管传统目标检测方法存在计算复杂度高和实时性能不足的问题,但基于深度学习算法已在准确性和实时性能方面取得了重大突破。其中,YOLO已成为一种经典的实时目标检测算法,它在计算速度和检测精度之间取得了平衡。然而,移动设备通常在计算能力、内存容量和能源消耗方面受限,这复杂化了深度学习模型的部署。

为了将这些YOLO模型适应到这些环境中,需要进一步的改进和优化。本文将深入探讨针对移动部署而优化的增强型YOLO模型的研究,重点关注网络结构优化、模型压缩与加速、鲁棒性增强以及在不同应用场景下的性能评估。

本研究的主要目标包括探索和理解YOLO算法及其变体在目标检测任务中的背景。本工作的重点将放在掌握YOLO算法的基本原理和核心机制,以及它在各种任务和场景下的表现。这包括但不限于对YOLO的网络架构、损失函数、训练策略的深入研究,以及与其他目标检测算法的比较分析。

考虑到移动设备的特性,本研究旨在设计和实施对YOLO模型的增强。针对移动设备的计算能力和内存限制,研究将努力优化YOLO模型的结构和算法。这可能涉及轻量级模型设计、高效算法实现和特定的硬件优化,所有这些都是旨在显著提高模型在移动设备上的性能和效率,同时保持检测精度。在标准数据集上验证和评估改进模型的表现,以及在真实移动设备上的操作效率,也将是重要的。

研究将进一步通过在标准数据集上的实验验证和在实际移动设备环境中的部署测试,来评估增强的YOLO模型的性能和效率。这一综合评估将有助于确保改进后的模型不仅在理论上取得进展,而且在实际应用中也能展示出可行性和有效性。

本文的主要贡献概括如下:

  1. 在增强的YOLO模型中,彻底借鉴并利用了ShuffleNet v2的设计理念。特别是,通道混洗与组卷积的结合有效地平衡了模型的复杂度与性能。这种设计不仅提升了模型的效率,还保持了强大的特征提取能力,使得在移动设备上能够实现实时目标检测。此外,通过融合如跳跃连接和深度可分离卷积等技术,进一步增强了模型的鲁棒性和准确度。

  2. 在针对YOLO模型的改进中,将视觉 Transformer (ViT)作为特征提取的核心组件,不仅增强了模型捕捉整体图像上下文信息的能力,而且显著提高了目标检测的准确性和效率。ViT的长距离依赖捕捉能力及其优秀的迁移学习特性,使该模型在处理复杂场景时更加高效,特别是在移动设备上的应用中,显示出显著的实时性能优势。

2 Related Work

2.1 ShuffleNet v2

ShuffleNet v2旨在实现高效的计算和减少模型复杂性的同时保持高性能,这是一项挑战性的任务,因为降低复杂性常常会冒着牺牲准确度的风险。然而,ShuffleNet v2通过几个关键创新成功地解决了这个问题。与前辈利用分组卷积来减少参数和计算量不同,ShuffleNet v2增强了每组内的特征交互,以提高模型的表示能力。

具体来说,它放弃了逐点卷积中的分组限制,允许所有通道参与1x1卷积,简化了网络结构,降低了内存访问成本,并增强了信息流。此外,通过减少瓶颈结构中的通道分割,它避免了与分组卷积相关的潜在信息瓶颈,实现了更平衡的计算负载分布并提升了模型效率。

此外,ShuffleNet v2优化了在ShuffleNet v1中引入的通道混洗机制,采用未分组的逐点卷积、通道分割和改进的特征融合策略,以实现更有效的组间信息交换,通过重新组织输入特征图的通道顺序,从而丰富了特征表示。

2.2 Vision Transformer (ViT)

视觉 Transformer (ViT)是一种创新的深度学习架构,专为计算机视觉任务而设计,它通过将最初为自然语言处理开发的Transformer结构适应到视觉领域,标志着一次重大的转变。ViT首先将输入图像分割成一系列的斑块,将这些斑块转换成捕捉局部图像特征的高维嵌入向量。

为了弥补Transformer固有的序列处理能力的不足,在这些嵌入向量中加入了位置编码,使ViT内的自注意力机制能够捕捉不同图像段之间的长距离依赖关系。Transformer编码器处理这些嵌入,关注各种图像方面,为多样的视觉任务提供健壮的特征表示。经过转换的向量,特别是通过一个特殊的“分类”嵌入向量用于分类任务,然后被用来输出最终的特定任务结果,显示了ViT在处理复杂视觉信息方面的适应性和有效性。

2.3 You Only Look Once (YOLO)

多年来,YOLO系列一直是最佳的单一阶段实时目标检测类别之一。YOLO将目标检测任务转化为一个回归问题,在一次前向传播中预测多个目标的位置和类别,实现了高速度的目标检测。经过多年的发展,YOLO已经发展成为一系列具有良好性能的快速模型。

基于 Anchor 框的YOLO方法包括YOLOv4,YOLOv5,和YOLOv7,而 Anchor 框自由方法有YOLOX和YOLOv6。考虑到这些检测器的性能, Anchor 框自由方法与基于 Anchor 框的方法表现相当, Anchor 框不再是限制YOLO发展的主要因素。

然而,所有YOLO变体生成了许多冗余的边界框,在预测阶段必须通过NMS(非极大值抑制)过滤掉,这显著影响了检测器的准确性和速度,与实时目标检测器的设计理论相冲突。

3 YOLO Model Architecture

3.1 Model Overview

这一章节重点介绍两个关键模块——动态组卷积Shuffle模块(DGSM)和动态分组卷积Shuffle Transformer (DGST)。

DGSM模块用于优化主干网络,通过结合组卷积和通道Shuffle技术,显著提高计算效率同时保持卓越的性能。而DGST模块,用于优化 Neck 网络,进一步融合了视觉 Transformer 、组卷积和通道Shuffle技术,实现了更高的计算效率和适应性。该模块还简化了网络结构,提高了检测效率。

3.2 Dynamic Group Convolution Shuffle Module (DGSM)

在DGSM中,图1所示的引入组卷积减少了模型的参数数量和计算需求,同时防止了过拟合,从而保持了网络的鲁棒性和泛化能力。此外,来自ShuffleNetV2的通道混洗技术有助于有效的组间特征信息交换,这对于保持网络的综合性表达能力至关重要。值得注意的是,在减少参数数量的同时,这种交换机制有助于保持特征的多样性和丰富性。

正如表1所示,新的DGSM模块可以根据不同层次的需求精确调整堆叠块的数量和通道数,取代原有的ELAN模块,形成一个新的 Backbone 网络。这种精细调整的控制和优化方法使模型在保持计算效率的同时,更有效地处理各种尺度的特征,显著提高了模型在实际应用中的适用性和性能。

3.3 Dynamic Group Convolution Shuffle Transformer (DGST)

动态组Shuffle Transformer (DGST)是一种创新结构,如图2所示,它将视觉 Transformer 与DGSM模块相结合,旨在进一步提高模型的计算效率和性能。DGST模块的核心是一个3:1划分策略,其中一部分进行组卷积和通道Shuffle操作,而卷积操作取代了全连接的线性层以实现相同的效果,用这个模块替换原始的 Neck 模块。这种设计不仅减少了计算需求,而且更好地适应了卷积神经网络的特性,潜在地为模型提供更优越的性能。

为了进一步优化整体网络架构,作者对检测Head(detection heads)的配置进行了调整,将原有的三个检测Head减少到两个,如图3所示。这项修改不仅减轻了模型的计算负担,还提高了检测效率。检测Head数量的减少意味着在后处理阶段有更少的数据需要处理,从而加快了整个模型的推理速度。

4 Experiment

4.1 Setups

本次实验所使用的数据集包含了1919张个人图像,包括带口罩和不带口罩的人像。数据集的收集涵盖了多个来源:

谷歌图片:通过谷歌搜索引擎获取了与佩戴口罩相关的公共图片。

必应搜索:利用必应搜索引擎收集了各种场景和背景中的行人图像。

Kaggle 数据集:从Kaggle平台上现有的数据集中选择了一组适合本实验的相关图像子集。

所有图像都已采用YOLO格式进行标注,标签指明了行人是否佩戴口罩。这种标注风格使得图像适用于训练YOLO目标检测模型,为本次实验提供了一个方便的数据基础。

数据集划分的策略是确保模型有效训练和公平评估的关键步骤。本次实验的数据划分如下:

训练集:用于模型训练的图像,占数据集的70%。

验证集:用于模型调整和超参数选择的图像,占数据集的15%。

测试集:用于最终模型评估的图像,也代表了数据集的15%。

4.2 Analysis

从表2可以看出,YOLO7 Tiny模型在训练损失方面表现出最佳性能,但它的GPU消耗也最高。当综合考虑GPU消耗和损失时,DGST+DGSM组合模型提供了一个更加平衡的选择。

YOLOv7 Tiny模型作为轻量级选项,在实验中展示了其独特的性能特点。在训练期间,该模型的GPU消耗为3.79G,是四个模型中最高的。其参数大小也是最大的,为6.01M,表明模型复杂性更高。推理时间为283.4ms,总时间为284.7ms,均为模型中最高,这可能意味着在实现更复杂或更详细的功能时,计算速度有所折中。

DGSM模型在实验中表现出了一定的优势。训练期间的GPU消耗为2.63G,参数大小为4.45M,表明模型复杂性适中。其单一推理时间为242.1ms,显示了合理的计算效率。尽管总时间略长,为243.9ms,但这可能反映了它在处理复杂情况时的稳定性。

DGST模型在实验中展现了其独特的优势。在训练过程中的GPU消耗为3.52G,略高于DGSM,但其参数大小为3.58M,略小于DGSM,表明其参数效率更高。其单次推理时间为190.5ms,总时间为191.6ms,均低于DGSM,这表明DGST在保持较低的计算负担的同时,还能维持良好的推理速度。

DGSM+DGST组合模型在几个关键指标上表现出色。在训练期间的GPU消耗为2.33G,相对较低,并且参数大小最小,为2.02M,显示出优秀的参数效率。推理时间为136.8ms,总时间为137.9ms,是所有模型中最快的,凸显了其卓越的计算速度和效率。

在表3中进一步分析四种模型配置在目标检测性能时,包括了诸如精确度、召回率以及mAP等指标,DGST模型获得了最高的F1得分(0.8524),表明在精确度和召回率之间取得了最佳的平衡。DGST+DGSM组合模型紧随其后,F1得分为0.8493,也显示出良好的平衡。

全面的对比突显了DGST+DGSM组合模型在mAP@.5和mAP@.5:.95上的卓越表现,这意味着在不同IoU阈值下具有出色的检测能力(见表4)。虽然DGST模型在某些指标上显示出竞争性的结果,但在更严格的评估标准下,组合模型表现出更加平衡和卓越的性能。

5 Conclusion

在将目标检测模型部署在移动设备上时,主要挑战包括有限的计算能力、内存限制和能源消耗问题。本研究进行了彻底的分析和讨论,确定了提高轻量级模型性能的关键方向。

6 参考

[1].Lightweight Object Detection: A Study Based on YOLOv7 Integrated with ShuffleNetv2 and Vision Transformer.

THE END!

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/742324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL集群

MYSQL集群 主从复制实验 1.将主从节点的防火墙全部关闭 ,安装数据库 2.在/etc/hosts 里添加两侧主机的IP和主机名(选做) 192.168.100.80 mysql8 192.168.100.81 mysql8b3.先让所有的mysql数据库的UUID保持不同(如果你时直接复制…

ECharts饼图图例消失踩的坑

在使用Echarts的饼图时,当时做法是在图例数小于8时显示全部的图例,在大于8的时候显示前8个图例。于是用了两种不同的方式处理。导致出现切换时间后图例不显示的情况。 错误过程: 在进行图例生成时采用了两种不同的方式: ①如果…

打造你的HTML5打地鼠游戏:零基础入门教程

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

3. Linux标准I/O库

Linux 标准 I/O(Standard I/O)库提供了一组函数,用于进行高级别的文件输入和输出操作。它建立在底层文件 I/O 系统调用之上,为开发者提供了更方便、更高级别的文件处理方式。以下是一些常用的 Linux 标准 I/O 库函数: …

Rust生命周期和生命周期声明‘作用Missing lifetime specifier

Missing lifetime specifier:报错说明缺失声明周期声明 Rust 生命周期机制是与所有权机制同等重要的资源管理机制。 之所以引入这个概念主要是应对复杂类型系统中资源管理的问题。 引用是对待复杂类型时必不可少的机制,毕竟复杂类型的数据不能被处理器…

如何开展自动化测试框架的构建

自动化测试框架的构建是一个系统性的过程,它涉及到多个层面的考虑和实施。以下是一些关键步骤和策略,帮助你开展自动化测试框架的构建: 需求分析: 深入了解业务需求,明确测试目标。分析现有的测试流程和测试用例&…

UDP连接树莓派时提高连接速度,降低卡顿感

背景 树莓派4B刷的是ubuntu20.4系统,使用win10自带的远程桌面连接和其连接,卡的一批,于是探索并记录下如何降低连接卡顿感 步骤一 点击显示选项, 降低显示配置和颜色深度: 步骤二 我的树莓派是通过电脑移动热点的方式…

Qt+FFmpeg+opengl从零制作视频播放器-13.打包为exe包发布软件

1.首先visual studio给生成程序添加桌面图标。 右键工程,添加新文件资源文件Resource.rc 选择导入文件,我这里导入了Player.ico文件。 添加后,在资源文件那里就可以看见ico文件。 然后编译release程序, 生成的可执行程序就带上了图标。 2.使用Qt 程序打包发布-windeployq…

用spark进行数据查询常用语法总结

文章目录 show:数据显示distinct:数据行数去重count:看行数select:查看具体列数据toDF:对字段命名(搭配常用与groupby--agg--toDF)withColumn:新增列名printSchema: 打印列名信息dropDuplicates&#xff1a…

AWS入门实践-AWS CLI工具的使用介绍

AWS CLI(Amazon Web Services Command Line Interface)是一个强大的工具,它允许您直接从命令行与AWS服务进行交互。这不仅可以加快许多任务的处理速度,而且还可以通过脚本自动化。 一、AWS CLI工具的安装 1、Windows 安装下载…

uniapp图片涂鸦插件(支持多种涂鸦方式,图片放大缩小)

工程地址https://gitee.com/geshijia/ct-graffiti ct-graffiti涂鸦组件使用说明 参考说明 参考链接:https://github.com/ylyuanlu/yl-graffiti 感谢作者的付出,给我提供了一些思路,并做了如下优化: 增加图片放大缩小移动功能添…

Qt+FFmpeg+opengl从零制作视频播放器-15.音视频一些知识

1.视频方面 本专栏只针对视频压缩数据为H.264的数据进行演示。 H264解码后的原始数据主要包括片(slice)、宏块(MB)以及YUV像素数据。 片是H264编码中的基本单元,它包含一帧图像的部分或全部数据。一个视频帧可以由一个或多个片组成,每个片最少包含一个宏块,最多可以包…

怎么读取springboot中的properties.yml配置文件里的配置值(亲测有效)

怎么读取springboot中的properties.yml配置文件里的配置值 test:username: name主配置类中加上 EnableConfigurationProperties(MailConfigProperties.class)类上加ConfigurationPropetise("test“),属性就会自动注入配置值; ConfigurationPropetise("…

第十四届蓝桥杯蜗牛

蜗牛 线性dp 目录 蜗牛 线性dp 先求到达竹竿底部的状态转移方程 求蜗牛到达第i根竹竿的传送门入口的最短时间​编辑 题目链接:蓝桥杯2023年第十四届省赛真题-蜗牛 - C语言网 关键在于建立数组将竹竿上的每个状态量表示出来,并分析出状态转移方程 in…

[实战]API防护破解之签名验签

前言: 传统的接口在传输的过程中,是非常容易被抓包进行篡改,从而进行中间人攻击。这时候我们可以通过对参数进行签名验证,如果参数与签名值不匹配,则请求不通过,直接返回错误信息,从而防止黑客…

混合A*源码解读(c++)

基于ros中通过slam建立的栅格地图&#xff0c;使用混合A*进行路径规划。 首先是run_hybrid_astar.cpp: #include "hybrid_a_star/hybrid_a_star_flow.h" #include "3rd/backward.hpp" #include <ros/ros.h>namespace backward { backward::SignalHa…

使用hashmap优化时间复杂度,leetcode1577

1577. 数的平方等于两数乘积的方法数 已解答 中等 相关标签 相关企业 提示 给你两个整数数组 nums1 和 nums2 &#xff0c;请你返回根据以下规则形成的三元组的数目&#xff08;类型 1 和类型 2 &#xff09;&#xff1a; 类型 1&#xff1a;三元组 (i, j, k) &#xff…

题目 3150: 冶炼金属

题目描述: 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V&#xff0c;V 是一个正整数&#xff0c;这意味着消耗 V 个普通金 属 O 恰好可以冶炼出一个特殊金属 X&#xff0c;当普通金属 O 的数目不足 V 时&#xff0c;无法…

OpenCV加载视频

一、加载视频 //视频路径QString appPath QCoreApplication::applicationDirPath();QString videoPath appPath "/vtest.avi";cv::VideoCapture capture;capture.open(videoPath.toStdString(),CAP_FFMPEG);//从摄像头读取//capture.open(0, CAP_DSHOW);cv::Mat f…

【趣味学算法】04_与谁结婚(逻辑推断|条件组合)

注&#xff1a; 本系列仅为个人学习笔记&#xff0c;学习内容为《算法小讲堂》&#xff08;视频传送门&#xff09;&#xff0c;通俗易懂适合编程入门小白&#xff0c;需要具备python语言基础&#xff0c;本人小白&#xff0c;如内容有误感谢您的批评指正 有三对情侣要结婚&…