YOLOv4

WIN10+YOLOv4,windows上完美执行YOLOv4目标检测 YOLOv4项目实战!! 直接上教程! 一步一步教你win10下目标检测! 阅读详情

关于YOLOv4的个人理解

背景

在这里插入图片描述
从上述图中,我们可以看出YOLOv4在于v3拥有相同的速度上,精度有了质的飞跃。这得益于本文将当时各种最先进的检测技术运用到了其中,主要分为以下几个方面:模型结构上加入SPP、PAN等其他模块,正负样本的判定规则,不同的定位损失。

思想

本文的核心思想与v3基本上一致,无论是grid还是多尺度预测特征图都是一样的。不一样的地方仅是调整了anchor尺寸,原本的v3中采用的anchor尺寸为(10 × 13), (16 × 30), (33 × 23), (30 × 61), (62 × 45), (59 ×119), (116 × 90), (156 × 198), (373 × 326),而在v4中依旧512*512的图像作了相应的调整:(12×16),(19×36),(40×28),(36×75),(76×55),(72×146),(142×110),(192×243),(459×401)。

模型结构

在这里插入图片描述
以上模型结构并不是本人绘制的,但可作为参考。可以看到模型的输入为整张图像416 * 416,模型的输出仍然为3中不同尺寸的预测特征图。输入输出的大小与v3是一样的,不同的仅是中间特征提取模块的设计,但这并不是本文所要讲解的重点,我只对v4是怎么训练模型以及怎么预测作详细介绍(对模型结构的选择感兴趣的读者,可以阅读原文中作者给出的详细解释,我就不再赘述了)。

训练

老规矩,既然是训练模型,那么就需要介绍文章中用到了那些损失函数(这在v4的原文中,作者并没有给出相关的说明),但大体上与v3还是相同的,分为有目标边界框损失L1、目标置信度损失L2、无目标置信度损失L3、目标类别损失L4。其中只有L1是与v3中的目标边界框损失是不同的,因此我也只会对该损失作出详细解释,其余可以阅读我以往的v3文章。

  • L1
    以下为L1损失的相关公式:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    该损失之所以被称为边界框损失,是因为它的作用相当于v1、v2、v3中的目标中心点损失+目标宽高损失,用一个损失替换掉了两个损失,文中所采用的损失为CIOU损失(关于该损失,其实它是有一个进阶过程的,我会将其单独放到一篇博客中进行讲解),此处我只讲该损失是怎么计算的,以及每一个变量的含义是什么。
    1ijobj1_{i j}^{obj}1ijobj​:该变量为正负样本的判定准则参数,正样本为1,否则为0。在v4中正负样本的判定规则与之前有着很大的不同,接下来我会详细介绍。首先由于作者将预测的bounding box的偏移量预测公式作了修改,致使偏移量的大小由[0~1]转变成了[-0.5,1.5],这么做的原因是:作者发现只有当txt_xtx​变量趋近于无穷的时候,中心点才能够取到当前grid的左上角、右下角,因此为了缓解这个问题,使用了额外参数进行缩放,下图为新的偏移公式:
    在这里插入图片描述
    在这里插入图片描述
    宽高预测规则不变。
    在这里插入图片描述
    我们先来回顾以下v3是怎么判定正负样本的:
    首先每一个GT只能对应一个预测的bounding box,先将所有的anchor与GT计算IOU,将其中最大的anchor对应的预测bounding box标定为正样本,后除正样本外,如果存在anchor与一个GT的IOU超过规定的阈值(默认为0.5),则被标定为忽略样本(不参与任何的损失计算),其余则为负样本。
    而在v4当中由于我们预测的中心点偏移的范围发生了变化,所以需要对此进行改变,并且在v4中允许一个GT同时标定多个预测的bounding box为正样本(只要满足相应的条件即可),判定规则如下只要被标定为正样本的anchor与GT的IOU大于设定的阈值(v4中默认为0.3),并且GT的中心点坐标落在相距grid左上角坐标的[-0.5,1.5]之内就可以被选为正样本,那么由原本的每一个GT只能标定一个grid内的anchor变成了可以标定该grid周围多个grid内的anchor(并且需要注意的是:grid扩展的部分只能是原先grid的上、下、左、右四个部分,不存在左上,左下,右上,右下的grid),具体样式如下图所示。于是我此处产生了一个疑惑:如果一个anchor同时满足了多个GT,那么该如何计算损失呢,这里给出我认为的做法:选取其中IOU最大的计算损失,至于忽略样本这边论文中并没有给出详细的介绍我猜测是不需要考虑忽略样本,因为按照我们上述的新的正样本判定准则,我们将会得到大量的正样本,自然就可以解决之前由于正负样本不平衡带来的影响,因此除去正样本,剩下的都被标为负样本。
    在这里插入图片描述
    CIOU:该变量表示除了预测的bounding box与GT计算IOU值,还需要考虑到中心点距离,宽高比问题。因此在上述的CIOU公式中,c2c^2c2表示使用最小矩形框将预测的bounding box与GT 框住的对角线长度的平方,而d2d^2d2表示预测的bounding box与GT的中心点坐标的欧氏距离:(x−xg)2+(y−yg)2(x-x_g)^2+(y-y_g)^2(x−xg​)2+(y−yg​)2。

测试阶段

与前几个版本相同,不再做任何的赘述。

总结

如理解上存在纰漏,敬请指正,谢谢!

YOLOv4 与 YOLOv5 YOLOv5 提供了多个模型规模选项,包括 YOLOv5s(small),YOLOv5m(medium),YOLOv5l(large)和 YOLOv5x(extra large),适合不同的计算资源环境。虽然 YOLOv5 的很多概念沿用了 YOLOv4 的设计思路,但其通过 PyTorch 框架的实现简化了开发和部署流程,并且在移动端、嵌入式设备等对计算资源要求较高的场景中,展示了较为优异的表现。:在某些高精度要求的任务中,YOLOv5 的精度可能略逊于 YOLOv4,特别是在复杂的场景下。 阅读详情

相关推荐

YOLO系列:YOLOv4-YOLOv5

桌面版: https://lutzroeder.github.io/netron/数据增强: 调整亮度、 对比度、 色调、 随机缩放、 剪切、 翻转、 旋转。亲民政策 , 单GPU就能训练的非常好 , 接下来很多小模块都是这个出发点。比较好理解 , 坐标回归预测值都在0-1之间 , 如果在grid边界怎么表示?做人留一面日好相见 ,柔和一点的NMS , 更改分数而且直接剔除。使用之后效果分析(右图) :簇内更紧密 , 簇间更分离。消融实验,感觉能做的都让他给做了 ,这工作量不轻。

2402_86476216的博客 1879

TFlite (一)yolov4 / yolov4-tiny 模型转化

环境: python 3.6.8 依赖: tensorflow-gpu 2.3.0rc0 opencv-python 4.1.1.26 lxml tqdm absl-py matplotlib easydict pillow 步骤: Weights ---> TF ---> TFlite 一、下载模型与参数 yolov4.weights:下载 yolov4.cfg:下载 yolov4-tiny.weights:下载 yolov4-ti...

_yuki_ 4311

CANOE DIVA 工程怎样在具体服务前增加前置条件

然后会在CANoe的Test Module视窗中发现一个跟系统条件相关的Test Module模块,在该模块中有生成跟系统条件相关的CAPL 脚本。这里需要根据你的实际项目进行更改,diva工程加载到canoe的工程的时候,会同步加入你创建的cdd文件,这里示例的ABS_ESP 就是你的cdd的ECU命名,后面就是具体的前置条件服务。4、配置完成后,测试用例就会如下图Trace窗口所示,在每一次10 02请求之前都会调用CAPL Function的PreconditionCheck函数中定义的脚本。

weixin_45940007的博客 1956

Yolov4训练自己的数据集,史上最详细教程(本人多次使用训练,亲测效果不错,小白都可以学会)

Yolov4训练自己的数据集,史上最详细教程(本人多次使用训练,亲测效果不错,小白都可以学会。 代码运行环境Ubuntu18.04+python3.6+显卡1080Ti+CUDA10.0+cudnn7.5.1+OpenCV3.4.6+Cmake3.12.2,详细环境配置安装步骤就不讲解拉,网上教程一大堆。 从github克隆下载源码,链接地址:https://github.com/AlexeyAB/darknet 训练肯定需要使用GPU加速,那么得打开项目里面的makefile文件修改一些参数的值,1-4

weixin_41444791的博客 1万+

【3d打印】基于Klipper的3d打印远程上位机系统(Qt),klipper源码,通信解析,打印参数设置

基于Klipper的3d打印远程上位机系统(Qt),klipper源码,通信解析,打印参数设置(启庞Kp3s V1)

共享IT之美,共创机器未来 3189

5分钟搞定DataDome滑块验证码:最新Capsolver API实战教程(含代理配置)

本文提供了一份利用Capsolver API快速自动化破解DataDome滑块验证码的实战教程。文章深入剖析了DataDome验证码的环境指纹与行为分析机制,并重点详解了确保成功率的住宅代理配置、API集成步骤及令牌使用等核心环节,帮助开发者高效集成稳定可靠的自动化解决方案。

milk8的博客 491

RV1126上yolov3_416的性能原因

model input num: 1, output num: 3 input tensors: index=0 name=input_0 n_dims=4 dims=[1 3 416 416] n_elems=519168 size=519168 fmt=0 type=3 qnt_type=2 fl=0 zp=0 scale=0.003922 output tensors: index=0 name=output_199 n_dims=4 dims=[1 255 13 13] n_elems=43095.

glory的博客 623

Ambari 3.0.0 + BigTop 3.3.0 源码编译与集群部署指南(Kylin V10 / aarch64)

仅仅是针对“应用商店目录(Applications Catalog)”的一个外围附属子模块(它不是 YARN 监控大盘,不影响 YARN UI 网页的主体使用),我们可以采用。自带的 Node 二进制是 x86_64 版本,在 ARM64(aarch64)容器上无法执行(Exit value: 126)。:Ambari Server/Agent 使用 JDK 17,BigTop 大数据组件(Hadoop/HBase/Spark 等)使用 JDK 8。,源码中包含 x86 特定的原生二进制文件。

amumu1992的博客 480

yolo_v3

一.概述 YOLO算法的基本思想是:首先通过特征提取网络对输入图像提取特征,得到一定size的feature map,比如13*13,然后将输入图像分成13*13个grid cell,接着如果ground truth中某个object的中心坐标落在哪个grid cell中,那么就由该grid cell来预测该object,因为每个grid cell都会预测固定数量的bounding box(YO...

bestrivern的博客 2431

继电器的选型规范

触点是继电器中最重要的结构件,触点的使用寿命受触点材料、触点上的电压及电流值(特别是接通时及断开时的电压、电流波形)、负载种类、切换频率、环境情况、接触形式、触点回跳现象等的影响,触点失效多以触点的材料转移、粘连、异常消耗、接触电阻增大等故障现象出现,使用时需要注意。为了稳定工作, DC 型继电器的线圈两端所加电压推荐使用波纹变化率小于±5%的线圈额定电压,否则继电器会工作不稳定,引起触点的粘接或异常损耗,特别是在继电器的驱动电路上连接有电动机、螺线管、变压器等器件时,这种情况更为明显。

qq_43416206的博客 1878

使用FloodRisk2插件进行洪水风险评估

入汛以来,长江流域持续的强降雨使得沿岸多地成为洪水风险极高地区,抗洪、抢险、救灾继新冠病毒之后成为又一个攻坚阵地。如何科学地评估洪水风险,是快速决策的关键。 实际生活中,根据风险是否可控,一般将洪水风险大致分为两类:一类是通过数据分析可以得出其发生的可能性和后果,如强降雨引发的区域性洪水、水库/大坝溃决洪水等。这类洪水可以通过有关资料分析和设定一定条件计算得到可能的损失后果,也就是说,风险可以预判。另一类洪水风险基本是未知的,如滑坡堵塞河道形成堰塞湖引发的洪水,无法预知事件发生的地点和规模,具体的洪水风险无

QGISClass的博客 2877

yolov4-tiny训练自己的模型并部署到RK的NPU上推理

文章目录前言一、安装darknet训练框架二、模型转换二、RKNN推理 前言 使用yolov4-tiny训练西瓜检测模型,部署到RKNPU上推理Python单线程速度35FPS以上 一、安装darknet训练框架 本人使用得是这里的darknet Readme里有详细写明数据准备,cfg修改,训练步骤等,本文不在赘述。 二、模型转换 训练完成后得到yolov4-yiny.cfg和yolov4-tiny.weight, 转换为yolov4-tiny.rknn from PIL import Image i

zengwb的博客 7981

86、高斯过程:学习、应用与自动相关性确定

本文介绍了高斯过程回归的基本原理及其在实际应用中的关键技术,重点探讨了通过最大化对数似然函数来学习模型超参数的方法,并详细阐述了自动相关性确定(ARD)技术如何用于评估输入变量的重要性。文章涵盖了从协方差函数定义、梯度计算到优化算法的应用流程,并通过流程图和表格形式总结了核心步骤与公式。此外,还讨论了贝叶斯处理方式及异方差问题的建模策略,展示了高斯过程在复杂数据建模中的灵活性与强大能力。

android的专栏 114

关于yolov4的结构对比学习(yolov4/yolov4-tiny/scale yolov4)

目录 一、yolov4中的基础结构: 1.Dark layer 2.rCSP(普通结构without SPP): 3.rCSP(SPP) 4.CSPUP 二、三种yolov4的结构对比: 三、yolov4-tiny的基础结构: 主要目的是分析一下各种yolov4的结构,不解析原理,只是可视化一些结构的模块。 首先明确一些前提: AB大神的darknet中提供的cfg包括:yolov4、yolov4-tiny和yolov4x-mish (2020/11/24) WongKinYiu的sc

weixin_38715903的博客 1万+

微信小程序 - 实现客户支付订单连接小票打印机自动打印订单小票功能,微信小程序如何对接小票打印机自动打印小票,小程序收到新订单的时候可以联动商家打印出小票/单据/标签/发货单/电子面单等(详细教程)

微信小程序调用小票打印机,小程序接单后小票机自动打印订单,微信小程序云开发订单微信支付与小票和标签打印的完整高效流程,如何实现微信订单连接小票打印机并自动接单打印,微信小程序连接打印机打印单据小票打印,微信小程序云开发调用小票打印机实现方案,微信小程序怎么配置小票打印机,微信支付电子小票,外卖小程序实战-接单后小票机自动打印订单,微信小程序连接蓝牙打印小票,打印购物小票,调用小票打印机打印小票,微信订单如何连接小票打印机并实现自动接单打印,实现微信订单连接小票打印机并自动接单打印,微信小程序小票打印机打印教

🏆 前端领域优质创作者 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

YOLOv4团队最新开源!YOLOv4改进版!!!Scaled-YOLOv4解读

原班人马力作!

王博(Kings)的博客 6124

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

YOLOv1~v4入门

一、开山之作:YOLOv1 1.1 简介 在YOLOv1提出之前,R-CNN系列算法在目标检测领域独占鳌头。R-CNN系列检测精度高,但是由于其网络结构是双阶段(two-stage)的特点,使得它的检测速度不能满足实时性,饱受诟病。为了打破这一僵局,设计一种速度更快的目标检测器是大势所趋。 2016年,Joseph Redmon、Santosh Divvala、Ross Girshick等人提出了一种单阶段(one-stage)的目标检测网络。它的检测速度非常快,每秒可以处理45帧图片,能够轻松地实时运行。

青鸠的博客 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

一文读懂YOLOv5 与 YOLOv4

作者:William来源:自动驾驶全栈工程师知乎专栏链接:https://www.zhihu.com/people/william.hyin/columnsYOLO之父Joseph Re...

我爱计算机视觉 4万+

YOLOv4网络详解

YOLOv4是2020年Alexey Bochkovskiy等人发表在CVPR上的一篇文章,并不是Darknet的原始作者Joseph Redmon发表的,但这个工作已经被Joseph Redmon大佬认可了。之前我们有聊过YOLOv1~YOLOv3以及Ultralytics版的YOLOv3 SPP网络结构,如果不了解的可以参考之前的视频。

霹雳吧啦Wz 6万+

从YoLov3到Scaled-YoLov4

从YoLov3到Scaled-YoLov4 参考视频: Pytorch 搭建自己的YoloV4目标检测平台 yolo系列理论合集 YOLOv4-理论 YoLov4和Scaled-YoLov4代码github: Pytorch YoLoV4 and Scaled-YoLoV4 YOLOv3: Backbone:DarkNet53 取消了pooling层,改用卷积核步长进行降采样(可解释深度没有ResNet深,但效果却更好) 利用多尺度特征进行目标检测(采用SSD中anchor的思想) 类别

weixin_38420127的博客 2827

yolov4与yolov5的区别

不同点: 1. yolov4采用了较多的数据增强方法(图像增强方法(Data Augmentation)_YMilton的专栏-优快云博客,博客中方法都使用),而yolov5进行了3中数据增强:缩放、色彩空间调整与Mosaic数据增强。 2. yolov5锚点框是基于训练数据集自动学习的,而yolov4没有自适应锚点框。 3. yolov5采用的激活函数包括leakyReLU和Sigmoid,yolov5的中间隐藏层使用的是leakyReLU激活函数,最后的检测层使用的是Sigmoid激活函数。而y

YMilton的专栏 2万+

YOLOv4算法详解

YOLOv4: Optimal Speed and Accuracy of Object Detection-论文链接-代码链接 目录1、需求解读2、YOLOv4算法简介3、YOLOv4算法详解3.1 YOLOv4网络架构3.2 YOLOv4实现细节详解3.2.1 YOLOv4基础组件3.2.2 输入端细节详解3.2.3 基准网络细节详解3.2.3 Neck网络细节详解3.2.4 Head网络细节详解 1、需求解读   作为一种经典的单阶段目标检测框架,YOLO系列的目标检测算法得到了学术界与工业界们的广泛

WZZ18191171661的博客 3万+

从YOLOv3 更新到YOLOv4

从YOLOv3 更新到YOLOv4 引言 引言 之前一直使用的是vs 2017 + opencv 340 + cuda9.1 & cudnn 7.0 ,在有大佬接盘yolov3 更新yolov3 之后。老板让我跟着更新一下,看了一下, 大概需要做的就是更新一下cuda, 用了cuda 9.1尝试过,也相应的更改了 ...

qq_38852782的博客 1614

YOLOV4与YOLOV3的区别

YOLOV4与YOLOV3的区别 20年的11月份的时候,正式开始接触v4。时间过去了小半年了,最近突然忘记了v4里面的所谓那些tricks,所以特地做一篇blog(怕过段时间又忘记了~)。 首先,先大概的说下二者之间的差别: 1.特征提取网络的不同 2.激活函数的不同 3.loss的不同 4.数据处理的不同 5.学习率的不同 参考: https://blog.youkuaiyun.com/weixin_44791964/article/details/106533581 https://blog.youkuaiyun.com/

weixin_42206075的博客 1万+

YOLOv1-YOLOv4

一、开山之作:YOLOv1 1.1 简介 在YOLOv1提出之前,R-CNN系列算法在目标检测领域独占鳌头。R-CNN系列检测精度高,但是由于其网络结构是双阶段(two-stage)的特点,使得它的检测速度不能满足实时性,饱受诟病。为了打破这一僵局,设计一种速度更快的目标检测器是大势所趋。 2016年,Joseph Redmon、Santosh Divvala、Ross Girshick等人提出了一种单阶段(one-stage)的目标检测网络。它的检测速度非常快,每秒可以处理45帧图...

xiaobumi123的博客 2970

YOLOv3 与 YOLOv4 总结

目标检测在计算机视觉领域中具有至关重要的地位,YOLO(You Only Look Once)系列算法以其高效性和准确性而备受关注。以下是对 YOLOv3 和 YOLOv4 的总结。YOLOv3 是对 YOLOv2 的进一步改进和优化,在保持快速检测速度的同时,提高了检测精度。它仍然采用将目标检测问题转化为回归问题的思路,将输入图像划分成网格,每个网格预测多个边界框及其对应的类别概率和置信度。YOLOv4 是在 YOLOv3 的基础上进行了大量的改进和优化,进一步提高了检测精度和速度。

djdkfkfw的博客 1543
上一篇: YOLOv3
下一篇: Convolution
hu_Mrs
博客等级 码龄6年 3粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值