计算机视觉—YOLO V4

news2024/11/22 18:55:58

计算机视觉—YOLO V4

  • 1、YOLO V4
    • 1.1、网络结构
      • 1.1.1、BackBone:CSPDarknet53
      • 1.1.2、Neck:SPP结构
      • 1.1.3、Neck:PAN结构
      • 1.1.4、YOLO v4整体结构
    • 1.2、优化策略

1、YOLO V4

原论文下载地址:https://arxiv.org/abs/2004.10934

1.1、网络结构

相比之前的YOLOv3,改进了下Backbone,在Darknet53中引入了CSP模块(来自CSPNet)。在Neck部分,采用了SPP模块(Ultralytics版的YOLOv3 SPP就使用到了)以及PAN模块(来自PANet)。Head部分没变还是原来的检测头。
YOLO v4的网络结构包括的三部分:

  1. Backbone: CSPDarknet53
  2. Neck: SPP,PAN
  3. Head: YOLO v3

在这里插入图片描述

1.1.1、BackBone:CSPDarknet53

在YOLO v3中使用的主干网络是 Darknet53,在YOLO v4中运用的主干网络叫:CSPDarknet53,引入了CSP结构
CSP结构有什么具体的作用呢?原论文是这么说的:(换句话说就是YOLO v4的优点)

  • Strengthening learning ability of a CNN(增强CNN学习能力)
  • Removing computational bottlenecks(降低计算瓶颈)
  • Reducing memory costs(减少内存使用)

也就是说加入CSP结构以后不仅从网络上做了提升,还在物理性能上做了优化,减少显存的使用。

1、这个CSP结构来自于CSPDenseNet这篇论文,具体结构如何:如下图
在这里插入图片描述

通过CNN特征抽取的到特征层:

  1. 对于输入的特征层,首先分成两部分Part1,Part2(在通道方向进行均分操作)
  2. 对Part2分支首先通过一系列的DenseBlock,在通过Transition
  3. 将Patr1和Part2的输出进行一个融合,也就是concat拼接
  4. 拼接以后在通过Transition

但是YOLO v4中的CSP结构和CSPDenseNet的优点不一样:
在这里插入图片描述

  1. 分割方式不一样:在CSP模块之前进行一个下采样,下采样的结果进行两次1 x 1 x C(输入通道数的一半)的卷积,作为两个Part
  2. 在part2上接一系列的ResBlock,在通过1 x 1 x C的卷积层
  3. part2的结果与part1进行concat通道数上的拼接
  4. 拼接后的结果进行 1 x 1 x 2C的卷积

2、知道了CSP的结构以后,看一下CSPDarknet53的整体结构:
还是用上面提到的UP主的杰作

k代表卷积核的大小
s 代表步距
c 代表通过该模块输出的特征层channels
注意,CSPDarknet53 Backbone中所有的激活函数都是Mish激活函数
在这里插入图片描述
注意每一个ResBlock中的通道数发生了变化,作者在DownSample中的ResBlock就展开画了。并且DownSample1中的part分支并没有减半。从DownSample2才开始减半。

1.1.2、Neck:SPP结构

在这里插入图片描述

  1. 将特征层输入进行三个不同大小池化核的MaxPool2d
  2. 将1得到的三个输出与SPP输入特征层进行Concat拼接

通过SSP结构在一定程度上解决多尺度问题

1.1.3、Neck:PAN结构

PAN(Path Aggregation Network)结构其实就是在FPN(从顶到底信息融合)的基础上加上了从底到顶的信息融合,如下图(b)所示。图中最左边的部分就是BackBlone主干网络。
在这里插入图片描述
但YOLOv4的PAN结构和原始论文的融合方式又略有差异,如下图所示。图(a)是原始论文中的融合方式,即特征层之间融合时是直接通过相加的方式进行融合的,但在YOLOv4中是通过在通道方向Concat拼接的方式进行融合的。
在这里插入图片描述

1.1.4、YOLO v4整体结构

还是采用UP主:太阳花的小绿豆的图片https://blog.csdn.net/qq_37541097/article/details/123229946?spm=1001.2014.3001.5502
在这里插入图片描述

1.2、优化策略

待更新。。。。。。。。。。

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

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

相关文章

Windows中安装GCC教程

GCC的安装教程 GCC简介 GCC编译器通常在Linux系统下使用,一般来说大部分发行的系统会默认安装,GCC编译器使用gcc指令在终端进行shell操作。 对于新接触Linux的朋友来说,简单的在Windows中练习过渡一下应该就足够了。(我就是因为…

Apache IoTDB 荣获国家网信办 2022 年中国开源创新大赛决赛一等奖,三位核心研发荣获表彰!...

项目获得权威认可! 2023 年 5 月 15 日,2022 年中国开源创新大赛组委会对外公布“2022 中国互联网发展创新与投资大赛公益项目暨2022年中国开源创新大赛”决赛获奖名单,并于 2023 年 5 月 31 日在北京举办“2022年中国开源创新大赛总结发布活…

chatgpt赋能python:用Python编写FizzBuzz——解析最简单的编程题

用Python编写FizzBuzz——解析最简单的编程题 作为每个程序员的入门题目,FizzBuzz是一个简单但常见的问题。FizzBuzz要求我们用数字1到100来打印输出,但是当数字是3的倍数时,需要输出Fizz;当数字是5的倍数时,需要输出…

力扣高频SQL50题(基础版)——第三天

力扣高频SQL50题(基础版)——第三天 1 产品销售分析Ⅰ 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT p.product_name,s.year,s.price FROM Sales s INNER JOIN Product p …

chatgpt赋能python:Python几次方函数介绍

Python几次方函数介绍 Python作为一门高级编程语言,具有丰富的数学函数库。其中,几次方函数在许多数值计算、数据分析和科学计算中都得到广泛应用。Python中的几次方函数有多种实现方式,包括内置函数pow()、运算符**、NumPy库的numpy.power(…

(3)NUC 980 kenerl编译

解压 用到的配置文件位置: /NUC980-linux-4.4.y-master/arch/arm/configs/nuc980_defconfig 执行: 编译linux内核源码。了解其 配置文件在 arch/arm/configs/nuc980_defconfig (1) make nuc980_defconfig 载入配置文件 (2) make menuconfig --->Devi…

机器龙的制作

1. 功能说明 本文示例将实现R326样机机器龙边张合嘴巴、边煽动翅膀、边摆动尾巴运动的功能。 2. 结构说明 本项目使用的机器龙样机是用可以用探索者零件或者探索者兼容零件制作。样机主要由头部模块、翅膀模块、尾巴模块、四足行走模块四部分组成。其中头部模块由2自由度并联关…

从元宇宙到生成式AI:炒作、现实和未来前景

不久前,科技界充斥着一种被称为元宇宙的未来主义概念。这个相互关联的虚拟现实空间宇宙,个人可以在模拟环境中进行交互,被誉为技术的未来。如今围绕元宇宙的炒作已经彻底失败了。技术重点现在已经转向生成AI,重点是像GPT-4和谷歌的…

一文搞懂Flutter的手势事件——事件分发与冲突处理详解

本文字数:43617字 预计阅读时间:110分钟 前言 之前有两篇文章都围绕着runApp()进行展开,讲解了布局绘制的详细过程。 https://www.jianshu.com/p/2ef749ff4d40/https://www.jianshu.com/p/f37f8da235ec 那么接下来我们想详细的说一说Flutter是…

哔哩哔哩视频云画质与窄带高清AI落地实践

视频赛道卷到下半场,一定会面临体验与成本的对抗,尤其是在行业大环境“过冬”的背景下,想要在有限带宽下获得最佳的画质观感变得异常具备挑战性。从视频云业务场景的视角来看,如何有效解决cross-domain问题、如何突破低业务延迟下…

留学生用ChatGPT写论文?真的会被开除!!!

转眼进入6月,大家的论文完成的怎么样了?很多留学生都有这样的疑问,用ChatGPT写论文靠谱吗? 其实在最近,,ChatGPT被学生用来辅助写论文,已经不是什么新鲜事了。它作为新型人工智能,搜…

二十三种设计模式:状态模式

状态模式,就是把所有的状态抽象成一个个具体的类,然后继承一个抽象状态类,在每一个状态类内封装对应状态的行为,符合开放封闭原则,当增加新的状态或减少状态时,只需修改关联的类即可。很适合多分支行为方法…

SpringBoot使用flywaydb实现数据库版本管理【附源码】

一、项目背景 本文主要是配合SpringBoot使用用户输入的自定义数据源启动一文附带产出。前文主要介绍了SpringBoot无数据源启动,然后通过用户录入自定义数据库配置后,连接数据库的操作。但是当整个项目交给用户使用时,谁使用都不知道情况下&a…

JetBrains的.NET和ASP.NET集成开发环境Rider 2023版本在Linux系统的下载与安装配置教程

目录 前言一、Rider 安装二、使用配置总结 前言 Rider是一款专为.NET和ASP.NET开发人员设计的集成开发环境(IDE)。它提供了丰富的功能和工具,可以帮助开发人员更高效地编写、调试和部署.NET和ASP.NET应用程序。注:已在CentOS7.9和…

Java课程设计之购物车管理系统

一、项目准备 1、开发工具:JDK、Eclipse 2、需求分析: 包括商品管理和购物车管理。 1)商品管理主要功能 商品信息导入 显示所有商品信息 2)购物车主要功能 添加商品到购物车 修改购物车中的商品数量 显示购物车中的所有商…

运维小白必学篇之基础篇第六集:权限实验

权限实验 实验作业: 1、创建1.txt文件,修改1.txt文件权限为属主最大,属组读写,其他人无权限 2、单独为1.txt文件的属组赋予执行权限 3、修改1.txt的属组为a1 4、修改用户a2的登录shell为/bin/bash 5、创建a1用户,设置…

chatgpt赋能python:Python内置函数求和

Python内置函数求和 Python是一种易学易用的编程语言,是许多开发人员和数据分析师的首选语言。Python提供了多种内置函数来处理不同的任务,其中包括求和函数。本文将介绍Python中的内置求和函数以及如何使用它们。 Python内置求和函数 在Python中&…

【51单片机】AT24C20数据帧(I2C总线)

🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Love Story】 🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰 小吉先向大家道个歉,因为最近在期末…

“微商城”项目(4首页)

1.显示轮播图 首页和商品详情页都有图片轮播图展示&#xff0c;考虑到Vue组件代码的复用性&#xff0c;把轮播图相关代码单独放置在src\components\swiper.vue文件中。 在src\pages\Home.vue文件中&#xff0c;编写HTML结构代码&#xff0c;示例代码如下。 <template>…

大数据AI课程更新——6月AI绘画入门小课

在这个课程中&#xff0c;我们将探索人工智能在绘画领域的应用&#xff0c;学习如何利用AI技术创造出令人惊叹的艺术作品。无论你是对绘画有兴趣的初学者&#xff0c;还是已经有一定绘画基础的学生&#xff0c;本训练营都将为你提供一个展示创造力和实践技巧的平台。 2022年是A…