Yolo算法的演进—YoloCS有效降低特征图空间复杂度(附论文下载)

news2024/11/8 9:05:13

点击蓝字 关注我们

关注并星标

从此不迷路

计算机视觉研究院

1bc4ca4f44686636633e878231fcfa4f.gif

4d94c44620e7b73a0bc4c0d8c1829838.gif

公众号ID计算机视觉研究院

学习群扫码在主页获取加入方式

cdc37857af0f3eab4afacbe6357c4966.png

论文地址:YOLOCS: Object Detection based on Dense Channel Compression for Feature Spatial Solidification (arxiv.org)

计算机视觉研究院专栏

Column of Computer Vision Institute

通过压缩特征图的空间分辨率,提高了对象检测的准确性和速度。本文的主要贡献在于引入了一种新的特征空间固化方法,能够有效地降低特征图的时空复杂度,提高对象检测的效率和准确性。

d8ede2e14458a4d98c743eb14f504282.gif

01

总  述

在今天分享中,研究者检查了在特征纯化和梯度反向传播过程中信道特征和卷积核之间的关联,重点是网络内的前向和反向传播。因此,研究者提出了一种称为密集通道压缩的特征空间固化方法。根据该方法的核心概念,引入了两个用于骨干网络和头部网络的创新模块:用于特征空间固化结构的密集通道压缩(DCFS)和非对称多级压缩解耦头部(ADH)。当集成到YOLOv5模型中时,这两个模块表现出非凡的性能,从而产生了一个被称为YOLOCS的改进模型。

fa3ee131281a2707a01266817b402d29.png  cea8dcc9021062aa311e88aea6fe255b.png

在MSCOCO数据集上评估,大、中、小YOLOCS模型的AP分别为50.1%、47.6%和42.5%。在保持与YOLOv5模型的推理速度显著相似的情况下,大、中、小YOLOCS模型分别以1.1%、2.3%和5.2%的优势超过YOLOv5的AP。

02

背  景

近年来,目标检测技术在计算机视觉领域受到了广泛关注。其中,基于单发多框算法的目标检测技术(Single Shot Multi Box Detector,SSD)和基于卷积神经网络的目标检测技术(Convolutional Neural Networks,CNN)是两种最常用的目标检测技术。然而,由于单发多框算法的精度较低,而基于卷积神经网络的目标检测技术的计算复杂度较高,因此,寻找一种高效且精度较高的目标检测技术成为了当前研究的热点之一。

1348f41b481947e8c9d66d3b4ce8c96c.png

Dense Channel Compression(DCC)是一种新型的卷积神经网络压缩技术,它通过对卷积神经网络中的特征图进行空间固化,从而实现对网络参数的压缩和加速。然而,DCC技术在目标检测领域的应用尚未得到充分的研究。

bec1b00682020ef21b742a51b59b70a0.png

因此,提出了一种基于Dense Channel Compression的目标检测技术,命名为YOLOCS(YOLO with Dense Channel Compression)。YOLOCS技术将DCC技术与YOLO(You Only Look Once)算法相结合,实现了对目标检测的高效且精度较高的处理。具体来说,YOLOCS技术通过DCC技术对特征图进行空间固化,从而实现对目标位置的精确定位;同时,YOLOCS技术利用YOLO算法的单发多框算法特点,实现对目标类别分类的快速计算。

03

新框架

  • Dense Channel Compression for Feature Spatial Solidification Structure (DCFS)

21cab30099885e31df6170ff66c65486.png

在提出的方法中(上图(c))中,研究者不仅解决了网络宽度和深度之间的平衡问题,还通过3×3卷积压缩了来自不同深度层的特征,在输出和融合特征之前将通道数量减少了一半。这种方法使研究者能够在更大程度上细化来自不同层的特征输出,从而在融合阶段增强特征的多样性和有效性。

此外,来自每一层的压缩特征都带有更大的卷积核权重(3×3),从而有效地扩展了输出特征的感受野。将这种方法称为特征空间固化的密集通道压缩。用于特征空间固化的密集通道压缩背后的基本原理依赖于利用较大的卷积核来促进通道压缩。该技术具有两个关键优点:首先,它扩展了前向传播过程中特征感知的感受域,从而确保了区域相关的特征细节被纳入,以最大限度地减少整个压缩阶段的特征损失。其次,误差反向传播过程中误差细节的增强允许更准确的权重调整。

为了进一步阐明这两个优点,使用具有两种不同核类型(1×1和3×3)的卷积来压缩两个通道,如下图:

11138c8ed172efbfd39eceafb64494ee.png

DCFS的网络结构如下图所示。采用三层瓶颈结构,在网络前向传播的过程中逐渐压缩信道。半通道3×3卷积应用于所有分支,然后是批处理归一化(BN)和激活函数层。随后,使用1×1卷积层来压缩输出特征通道,以匹配输入特征通道。

8859102ea8a1dac71cb050abc41e8aea.png

  • Asymmetric Multi-level Channel Compression Decoupled Head (ADH)

为了解决YOLOX模型中的解耦头问题,研究者进行了一系列的研究和实验。研究结果揭示了解耦头部结构的利用与相关损失函数之间的逻辑相关性。具体而言,对于不同的任务,应根据损失计算的复杂性调整解耦头的结构。此外,当将解耦的头部结构应用于各种任务时,由于最终输出维度的差异,将前一层的特征通道(如下图)直接压缩为任务通道可能会导致显著的特征损失。这反过来又会对模型的整体性能产生不利影响。

934c802405da79ecf5752e71d387f0b6.png

此外,当考虑提出的用于特征空间固化的密集通道压缩方法时,直接减少最终层中的通道数量以匹配输出通道可能会导致前向传播过程中的特征丢失,从而降低网络性能。同时,在反向传播的背景下,这种结构可能会导致次优误差反向传播,阻碍梯度稳定性的实现。为了应对这些挑战,引入了一种新的解耦头,称为非对称多级通道压缩解耦头(如下图(b))。

cdc6ba770c71369d56423dfe32aab9c6.png

具体而言,研究者深化了专用于目标评分任务的网络路径,并使用3个卷积来扩展该任务的感受野和参数数量。同时,沿着通道维度压缩每个卷积层的特征。该方法不仅有效地减轻了与目标评分任务相关的训练难度,提高了模型性能,而且大大减少了解耦头部模块的参数和GFLOP,从而显著提高了推理速度。此外,使用1卷积层来分离分类和边界框任务。这是因为对于匹配的正样本,与两个任务相关联的损失相对较小,因此避免了过度扩展。这种方法大大降低了解耦头中的参数和GFLOP,最终提高了推理速度。

04

实验可视化

Ablation Experiment on MS-COCO val2017

b98bc81cf01f8950c6bee5094decd1d6.png

Comparison of YOLOCS, YOLOX and YOLOv5- r6.1[7] in terms of AP on MS-COCO 2017 test-dev

d255e390adeb2b53d81cb122a489eb4f.png

16032ac149b7b0eb5e9ecd7e97e1ba95.png

© THE END 

转载请联系本公众号获得授权

f703b706823d07064f4eebe0a763530d.gif

计算机视觉研究院学习群等你加入!

ABOUT

计算机视觉研究院

计算机视觉研究院主要涉及深度学习领域,主要致力于目标检测、目标跟踪、图像分割等研究方向。研究院始终分享最新论文算法框架,平台着重”研究“和“实践”。后期会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

714b101ef4fb85cb4a7abf5e4a49ab26.png

fff35089a372c2cbe74b6c04968a3fb1.png

08356274e3a94fb82c70a17d91a71c90.png

1e7d898bff24d7e3d3e7c677830c1bcb.png

8bb1ee882cd3bcc762379a56b1a22fdd.png

点击“阅读原文”,立即合作咨询

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

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

相关文章

【6.12 代随_55day】判断子序列、不同的子序列

判断子序列、不同的子序列 判断子序列动态规划方法图解步骤代码 不同的子序列1.方法图解步骤代码 判断子序列 力扣连接:392. 判断子序列(简单) 动态规划方法 (这道题也可以用双指针的思路来实现,时间复杂度也是O(n)…

Linux变卡cpu占用高,已装curl、wget但提示命令找不到(挖矿病毒)

现象 服务器变卡,top cpu占用非常高,但是进程占用只有1% 下载安装htop查看 看样子中了挖矿病毒 解决方式 修改/etc/hosts 把dev.fugglesoft.me 指向127.0.0.1 F9 -> enter杀掉进程 又多出来一个执行sh的,修改病毒sh,vi进去随便…

Portraiture5.0滤镜插件中文升级版本下载及功能介绍

专注人像修图,打造完美摄影作品,Portrait5.0是款最新版的人脸图像后期处理软件。它可以帮助用户快速编辑修图,提供全方面的人物美白效果,让用户可以更轻松地修图,操作简单,方便快捷,非常不错。新…

Cilium 如何处理 L7 流量

还记得在 使用 Cilium 增强 Kubernetes 网络安全 示例中,我们通过设置网络策略限制钛战机 tiefighter 访问死星 deathstar 的 /v1/exhaust-port 端点,但放行着陆请求 /v1/request-landing。在提起 Cilium 时,都说其是使用 eBPF 技术推动的用于…

心法利器[85] | 算法技术和职业规划

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里&…

花3万买的大学申请文书,竟和ChatGPT写的一样?

正值高考毕业季,留学出国又成热门话题。眼下,选学校、写申请书是不少学生头等大事。在AI如火如荼的今年,这个老行当却有了新变化。 当学生纷纷用AI写申请书,留学机构开始缩减业务,中介用AI写文书“糊弄”学生&#xf…

哈夫曼树和哈夫曼编码

一.哈夫曼树 1.哈夫曼树 哈夫曼树是一种用于编码的树形结构。它是通过将频率最低的字符反复组合形成的二叉树,使得出现频率高的字符具有较短的二进制编码,而出现频率低的字符具有较长的编码。 在哈夫曼树中,每个叶子节点都代表一个字符&am…

chatgpt赋能python:Python图形填充颜色教程

Python图形填充颜色教程 Python是一种简单易学、高效的编程语言,广泛应用于数据分析、机器学习、Web开发等领域。其中,图形处理是Python编程领域的一个重要方面。在很多情况下,我们需要填充图形颜色来增加图形的美观程度和可读性。本文将介绍…

使用OpenCV和MediaPipe实现姿态识别!

大家好,我是小F~ MediaPipe是一款由Google开发并开源的数据流处理机器学习应用开发框架。 它是一个基于图的数据处理管线,用于构建使用了多种形式的数据源,如视频、音频、传感器数据以及任何时间序列数据。 MediaPipe通过将各个感…

表示学习(Representation Learning) Part1--Pretext Text

文章目录 Representation LearningInferring structure(推断结构) Transformation predictionRotation predictionRelative transformation prediction ReconstructionDenoising AutoencodersContext encodersColorizationSplit-brain encoders Instance…

屏幕录像视频录制编辑软件TechSmith Camtasia 2023 for Mac 简体中文版

TechSmith Camtasia for Mac 中文版 是一款专业的屏幕录像视频录制编辑软件,非常容易就可以获得精彩的截屏视频。创建引人注目的培训,演示和演示视频。Camtasia 屏幕录制软件简化,直观,让您看起来像专业人士。利用Camtasia&#x…

SpringMVC 学习总结

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 1. 什么是 Spring MVC 1.1 Spring、Spring MV…

Dockerfile创建镜像

一、Docker镜像的创建 创建镜像有三种方法,分别为【基于已有镜像创建】、【基于本地模板创建】以及【基于Dockerfile创建】。 1.1 基于现有镜像创建 (1)首先启动一个镜像,在容器里做修改docker run -it centos:7 /bin/bash …

旧手机卖掉之前我们需要做这几个操作

随着科技的不断进步,人们使用的电子产品也在不断地迭代更新。当我们不再使用旧手机时,卖掉它可以省下一笔开支,但也需要注意保护个人隐私数据。因此,在售卖二手手机之前,正确清除旧手机中的历史数据变得至关重要。 首先…

Java网络开发(Tomcat)——从同步到异步 从jsp 到 js + axios + vue 实现 数据分页显示 数据增删改查

目录 引出一些固定的东西1.固定的响应格式2.name 变成 v-model 进行双向绑定3.下拉框选中--:value"type.id"4.vue导包固定写法5.script固定写法6.axios的get请求7.axios的post请求8.前端美化: 数据分页显示1.后端改成resp响应2.前端的修改要点&#xff08…

揭秘报表新玩法!标配插件不再单调,如何用柱形图插件让你的报表瞬间高大上!

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 图表作为一款用于可视化数据的工具,可以帮助我们更好的分析和理解数…

flutter自定义系列之简单的K线图绘制

上篇文章讲了flutter自定义的相关流程, 今天继续练习下flutter的自定义K线: 我们可以通过自定义Painter来实现一个简单的K线图界面: 创建一个自定义的Painter,用于绘制K线图: import dart:ui;import package:flutte…

聊聊多线程

摘要 开发过程中,总会遇到一些并发安全问题。本文总结出常用的数据结构哪些是安全的,哪些是不安全的以及他们为什么是不安全。 java中sychronize锁的原理: 常见的数据结构 类型 数据结构是否安全ArrayList数组 不安全HashMap数…

Mocha Pro:AdjustTrack 模块

跟踪时由于缺乏细节或有障碍物阻挡,跟踪点发生了漂移,或者一个或多个跟踪点可能会离开画面,此时可考虑使用 AdjustTrack (调整跟踪)模块手动设置关键帧来获得更精准的跟踪数据。 尤其是当要利用表面 Surface区域进行插…

随机数组归并问题

1 问题 生成两个任意的随机数组,并将这两个数组按照数字大小按顺序归并到一个新数组中。 2 方法 思路:定义三个数组,两个数组自己输入值,第三个数组用来作归并后的数组,先将两个数组的值全部赋给第三个数组&#xff0c…