[Extensive Reading]目标检测(object detection)系列(十六)YOLOv4:平衡速度与精度

2023-05-16

简介

YOLOv4是YOLO之父Joseph Redmon宣布退出计算机视觉的研究之后推出的YOLO系列算法,其作者Alexey Bochkovskiy也参与了YOLO之前系列算法,《YOLOV4: Optimal Speed and Accuracy of Object Detection》,其主要贡献在于对近些年CNN领域中最优秀的优化策略,从数据处理、主干网络、网络训练、激活函数、损失函数等各个方面都有着不同程度的优化,组合出一个精度与速度兼备的结构。

框架原理

检测器通用结构

一个目标检测器总是由下列几个部分组成:

  • input:图像,图像金字塔等
  • backbone:VGG16,Resnet-50,ResNeXt-101,Darknet53
  • neck:FPN,PANet,Bi-FPN
  • dense prediction:Dense Prediction:RPN,YOLO,SSD,RetinaNet,FCOS
  • sparse prediction:Faster RCNN,Fast RCNN,R-CNN

two-stage的结构会比one-stage多出一个sparse prediction的步骤,也就是区域建议后的再次预测过程,这也就是为什么yolo很像是faster rcnn的rpn。
在这里插入图片描述

YOLOv4结构

在这里插入图片描述
YOLOv4的结构和YOLOv3很类似,下图是YOLOv3的,首先YOLOv4换了backbone,由Darknet53换成了CSPDarknet53,Neck的部分修改比较大,dense prediction的部分保持不变,但是由于前面两个部分都修改了,所以最后三个特征图的尺寸略有变化。
在这里插入图片描述

backbone

CSPDarknet53是Darknet53结合了CSPNet,CSPNet实际上是基于Densnet的思想,复制基础层的特征映射图,通过dense block发送副本到下一个阶段,从而将基础层的特征映射图分离出来。这样可以有效缓解梯度消失问题(通过非常深的网络很难去反推丢失信号) ,支持特征传播,鼓励网络重用特征,从而减少网络参数数量。
在这里插入图片描述

  • 增强 CNN 的学习能力,使得在轻量化的同时保持准确性;
  • 降低计算瓶颈;
  • 降低内存成本。

neck

目标检测器由特征提取中的 backbone 和用于目标检测的 head 组成。 为了检测不同尺度的目标,将使用具有不同空间分辨率特征图生成层次结构。为了丰富输入到 head 的信息,来自自底向上和自顶向下的相邻特征映射按元素方式相加或连接在一起,然后作为 head 的输入。因此,head 输入将包含自底向上的丰富空间信息和自顶向下的丰富语义信息。我们将这一部分称为 neck。

SPP

SPP即为空间金字塔池化操作,开始的时候是为了在two-stage结构中统一不同的区域建议到相同的维度,但是在YOLOv4中作者将其用于增加主干网络的感受野,显著的分离最重要的上下文特征。 YOLOv4 的作者在使用 608 * 608 大小的图像进行测试时发现,在 COCO 目标检测任务中,以 0.5% 的额外计算代价将 AP50 增加了 2.7%。

PAN

在这里插入图片描述
YOLOv3中天然的存在fpn,其实就是原来的neck部分,像上图中的红框内,把它转一下,其实就是个类似FPN的结构:
在这里插入图片描述
而PAN, 是在FPN的基础上引入了一条捷径(绿色路径), 这种捷径连接使细粒度的局部信息可用于顶层。
在这里插入图片描述
而YOLOv4的PAN在这个基础上又加了一些修改,其实就是把PAN的加操作换成了拼接操作,这个和YOLOv3是一致的。
在这里插入图片描述

bag of tricks

Mosaic

Mosaic 是一种数据增强方法,将 4 张训练图像组合成一张进行训练,这增强样本的丰富程度。另外,每个 mini-batch 包含大量的图像(是原来 mini-batch 所包含图像数量的 4 倍),因此,在估计均值和方差时减少了对 large mini-batch sizes 的需求。

Mish

YOLOv4 的骨干网络中都使用了 Mish 激活函数,而其他部分则使用 Leaky_ReLU 函数。Mish 是光滑的非单调激活函数。

CIoU loos

YOLOv4使用CIoU loss,CIoU就是在DIoU的基础上增加了检测框尺度的loss,增加了长和宽的loss,这样预测框就会更加的符合真实框。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Extensive Reading]目标检测(object detection)系列(十六)YOLOv4:平衡速度与精度 的相关文章

随机推荐

  • matlab关于GPU警告报错

    电脑配置 xff1a RTX3050 xff0c i5十二代 xff0c CUDA11 6 matlab2020a 报错信息 运行神经网络训练时 xff0c 显示警告信息 xff1a Warning The CUDA driver must
  • 错误使用 network/subsasgn>network_subsasgn net.b{2} must be a 2-by-1 matrix.解决方法

    使用生物算法优化bp时出现以下报错 1 错误使用 network subsasgn gt network subsasgn net b 2 must be a 2 by 1 matrix 2 出错 索引 第 14 行 net 61 netw
  • 网络基础(网络发展背景(IP地址,端口,协议,字节序))

    了解网络发展背景 对局域网 广域网的概念有基本认识 了解网络协议的意义 重点理解 TCP IP 五层结构模型 学习网络传输的基本流程 理解封装和分用 在 IP 数据包头部中 有两个 IP 地址 分别叫做源 IP 地址 和目的 IP 地址 端
  • 网络编程套接字

    能够实现一个简单的 udp 客户端 服务器 实现一个简单的 tcp 客户端 服务器 单连接版本 多进程版本 多线程版本 套接字编程 主要讲解的就是如何编写一个网络通信程序 1 网络通信的数据中都会包含一个完整的五元组 sipsportdip
  • 网络基础2

    网络基础2 应用层 amp 传输层典型协议 应用层 自定制协议 私有协议 xff0c HTTP协议 传输层 UDP amp TCP协议 应用层 负责应用程序之间的数据沟通 应用层协议其实是面向程序员的协议 xff0c 因为应用程序是程序员写
  • ubuntu服务器通过iso进行系统升级

    ubuntu服务器通过iso进行系统升级 1 添加iso文件源 xff1a sudo mount t iso9660 o loop ubuntu 18 04 6 live server amd64 iso media cdrom 挂在镜像文
  • ROS学习(1):gazebo保存加载世界

    roslaunch文件分析 xff08 古月居大神提供 xff0c 来源于ROS机器人开发实践视频 xff09 96 view mbot gazebo play ground launch lt launch gt lt 设置launch文
  • connect to host port 22: Connection refused

    Windows 使用SSH连接树莓派 xff1a 提示 xff1a 这里简述项目相关背景 xff1a 今天练习发现使用MobaXterm可以正常连接到树莓派 xff0c 但是使用windows终端就不可以连接 xff0c 显示connect
  • 8本游戏开发书籍推荐

    很多刚刚接触游戏开发的朋友经常问我 xff1a 如何开始学习游戏开发 xff1f 我从事游戏开发行业很多年了 xff0c 坦率地讲 xff0c 开发游戏充满挑战性 xff0c 需要开发人员具备大量的技能与积极的创新精神 希望这篇小文能帮助朋
  • windows通过SSH控制树莓派

    windows通过SSH控制树莓派 xff1a 因学习需要在windows系统下对树莓派进行SSH连接 xff0c 包括SSH密钥生成 密钥传输及公钥保存等 Windows下密钥的产生 在Windows下使用 ssh keygen生成公钥和
  • raspistill command not found

    raspistill command not found xff1a 提示 xff1a 这里简述项目相关背景 xff1a 今天使用树莓派来调用摄像头 xff0c 摄像头为树莓派官方摄像头 xff0c 在升级系统和配置后发现使用raspist
  • 树莓派I2C基本用法

    文章目录 一 I2C二 I2C配置1 I2C02 I2C13 I2C34 I2C45 I2C56 I2C6 三 I2C工具总结 一 I2C 树莓派默认打开I2C功能 xff0c 如果I2C没有打开 xff0c 可以使用命令sudo rasp
  • 树莓派RTC

    文章目录 一 RTC准备二 RTC芯片三 为什么使用hwclock显示找不到硬件总结 一 RTC准备 在使能树莓派RTC之前 xff0c 需要先为树莓派RTC模块安装电池 xff08 一般为纽扣电池 xff09 二 RTC芯片 树莓派4B使
  • 树莓派debian11更换国内源

    更换国内源 修改文件 etc apt sources list deb https mirrors tuna tsinghua edu cn debian bullseye main contrib non free span class
  • cpptools占用率过高

    问题描述 使用vscode发现在系统中cpptools CPU占用率达到百分百 电脑发生严重卡顿 解决方案 xff1a 此问题的出现是因为使用了C C 43 43 这个插件 xff0c 如果直接禁用此插件就可以解决这个问题 如果希望使用这个
  • ROS话题的定义和使用

    ROS话题的定义和使用 自定义话题消息 自定义话题消息主要包括以下步骤 xff1a 定义msg文件在package xml中添加功能中依赖在CMakeList txt中添加编译规则编译生成语言相关文件 编写 msg文件 进入要定义 msg文
  • 如何在VScode中利用git来下载GitHub上的源码

    一 Git安装与下载 官网下载地址 xff1a Git Downloads https git scm com downloads xff08 注意安装时选择的默认编辑器选择vscode xff0c 然后修改安装路径其他默认下一步就ok了
  • PhpStorm 2018 安装及破解方法

    https blog csdn net u012278016 article details 81772566
  • mitmproxy笔记

    mitmproxy证书在http mitm it下载 或者在 mitmproxy ubuntu安装mitmproxy xff0e 可以到官网下载二进制文件 xff0e pip安装出了问题 xff0e Firfox和Chrome有各自独立的证
  • [Extensive Reading]目标检测(object detection)系列(十六)YOLOv4:平衡速度与精度

    简介 YOLOv4是YOLO之父Joseph Redmon宣布退出计算机视觉的研究之后推出的YOLO系列算法 xff0c 其作者Alexey Bochkovskiy也参与了YOLO之前系列算法 xff0c YOLOV4 Optimal Sp