4411s拆机(hp4411s拆机教程)

由于工作原因,项目中经常会遇到目标检测的任务,因此目标检测算法,如Yolov3、Yolov4算法经常被使用和关注。当然,很多实际项目的第一步都是先进行目标检测任

由于工作原因,项目中经常会遇到目标检测的任务,因此目标检测算法,如Yolov3、Yolov4算法经常被使用和关注。

当然,很多实际项目的第一步都是先进行目标检测任务,比如人脸识别、多目标跟踪、REID、客流统计等项目。因此,目标检测是计算机视觉项目中非常重要的一部分。

2018年Yolov3提出两年后,原作者放弃更新Yolo算法后,俄罗斯大神阿列克谢扛起了Yolov4的大旗。

在这里大白将项目中需要知道的Yolov3和Yolov4系列的相关知识点和代码做一个完整的总结,希望和大家一起学习和探讨。

版权声明:转载引用本文相关图片,需在评论区留言,先赞再拍照。本文有图,都是自己画的。如果需要高清图片,可以通过邮件发送信息,需要哪部分图片。蒋大白邮箱:jiangdabai@126.com

1.论文摘要

Yolov3论文标题:Yolov3:增量改进

Yolov3论文地址:arxiv.org/pdf/1804.0276

Yov4论文题目:Yolov4:物体检测的最佳速度和精度

Yolov4公司地址:arxiv.org/pdf/2004.1093

2.YoloV3核心基本内容

2.1网络结构的可视化

Yolov3是目标检测Yolo系列非常非常经典的算法,但是很多同学在拿到Yolov3或者Yolov4的cfg文件时,不知道如何直观的查看网络结构。如果只是看cfg的内容,肯定会显得很傻。

其实用netron查看Yolov3的网络结构图很方便,一目了然。

这里不多说了,如果需要安装可以移步另一篇大白文章:网络可视化工具netron的详细安装过程。

如果不想安装,也可以直接点击这个链接,查看Yolov3的可视化流程图。

2.2网络结构图

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

画网络结构图的灵感来自Yolov3的另一位作者的文章,包括下面Yolov4的结构图。的确,先从整体框架上理解Yolov3的流程,再去学习各个小块的知识点,会事半功倍。

上面的三个蓝框显示了Yolov3的三个基本组件:

CBL:Yolov3网络结构中的最小组件,由Conv+Bn+Leaky_relu激活函数三者组成。Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。ResX:由一个CBL和X个残差组件构成,是Yolov3中的大组件。每个Res模块前面的CBL都起到下采样的作用,因此经过5次Res模块后,得到的特征图是608->304->152->76->38->19大小。

其他基本操作:

Concat:张量拼接,会扩充两个张量的维度,例如26*26*256和26*26*512两个张量拼接,结果是26*26*768。Concat和cfg文件中的route功能一样。add:张量相加,张量直接相加,不会扩充维度,例如104*104*128和104*104*128相加,结果还是104*104*128。add和cfg文件中的shortcut功能一样。

主干中的卷积层数:

每个ResX包含1+2*X个卷积层,所以整个骨干网包含1+(1+2 * 1)+(1+2 * 2)+(1+2 * 8)+(1+2 * 8)+(1+2 * 4)= 52,再加上一个FC全连接。不过在目标探测Yolov3中,去掉了FC层,但为了方便起见,Yolov3的骨干网还是叫Darknet53结构。

2.3核心基本内容

Yolov3于2018年被发明并提出,成为目标检测一阶段中非常经典的算法,包括Darknet-53网络结构、anchor锚帧、FPN等优秀结构。

本文的主要目的是描述Yolov4和Yolov3算法的区别和创新点,但Yolov3的基础没有过多描述。

不过大白也在准备Yolov3算法的基础视频课程,非常通俗易懂,让小白可以简单明了的了解Yolov3的整个过程和每个算法的细节。制作完成后会在这里更新给大家查看。

在备课的过程中,大白在网上搜集和查看了几乎所有的Yolov3资料。在这里,我们整理了一些非常好的文章和视频。也可以点击查看,学习相关知识。

(1)视频:吴恩达目标探测Yolo介绍

https://www.bilibili.com/video/BV1N4411J7Y6? from = search & seid = 18074481568368507115

(2)文章:Yolo系列Yolo V3【深度解析】

https://blog.csdn.net/leviopku/article/details/82660381

(3)文章:一篇文章了解Yolov3。

https://blog.csdn.net/litt1e/article/details/88907542

相信看完之后,你会对Yolov3的基础知识点有一定的了解。

3.YoloV3相关代码

3.1 python代码

地址:https://github.com/ultralytics/Yolov3

3.2 C++代码

这里推荐Yolov4作者的darknetAB代码。与原作者代码相比,代码优化了很多。如果需要运行Yolov3网络,加载cfg时可以使用Yolov3.cfg。

地址:https://github.com/AlexeyAB/darknet

Tensorrt代码的3.3 python版本

除了算法研究,在实际项目中还需要将算法部署到项目中。比如模型在使用GPU服务器时需要tensorrt加速。

(1)1)Tensort中的加速案例

强烈建议使用张量软件中的Yolov3加速案例。路径位于tensort解压缩文件夹中的TensorTX/samples/python/yolov 3 _ ONNX。

对于案例中的代码,如果不了解,请参考下面文章中的详细描述:

地址:https://www.cnblogs.com/shouhuxianjian/p/10550262.html

2)Github上的tensorrt加速

除了tensorrt软件里的代码,github上还有其他作者的开源代码。

地址:https://github.com/lewes6369/TensorRT-Yolov3

3.4 C++版本的Tensorrt代码

在项目部署上,如果Tensorrt是C++版加速,一方面可以参考Alexey的github代码,另一方面可以参考以下其他作者的开源代码。

地址:https://github.com/wang-xinyu/tensorrtx/tree/master/Yolov3

4.YoloV4核心基本内容

4.1网络结构的可视化

OV4的网络结构也可以通过netron工具查看,大白也是对照其显示的可视化流程图绘制的下层网络结构图。

Netron可视化显示Yolov4网络结构可以参考大白的另一篇文章:netron可视化网络结构详细安装流程。

如果不想安装,也可以直接点击这个链接查看Yolov4可视化流程图。

4.2网络结构图

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

Yolov4的结构图与Yolov3相比,多了CSP结构和PAN结构。如果只是看直观的流程图,会觉得很复杂。但是,画完上面的图,你会觉得豁然开朗。其实整体架构和Yolov3一样,只是所有子结构都用了各种新的算法思想进行了改进。

首先,梳理一下Yolov4的五个基本组成部分:

CBM:Yolov4网络结构中的最小组件,由Conv+Bn+Mish激活函数三者组成。CBL:由Conv+Bn+Leaky_relu激活函数三者组成。Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。CSPX:借鉴CSPNet网络结构,由三个卷积层和X个Res unint模块Concate组成。SPP:采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合。

其他基本操作:

Concat:张量拼接,维度会扩充,和Yolov3中的解释一样,对应于cfg文件中的route操作。add:张量相加,不会扩充维度,对应于cfg文件中的shortcut操作。

主干中的卷积层数:

与Yolov3一样,再次计算骨干中的卷积层数。

每个CSPX包含3+2*X个卷积层,所以整个骨干网包含2+(3+2 * 1)+2+(3+2 * 2)+2+(3+2 * 8)+2+(3+2 * 8)+2+(3+2 * 4)

这里有些混乱。按照Yolov3设计的传统,这么多卷积层,骨干网不应该叫CSPDaeknet73吗????

4.3核心基本内容

Yolov4和Yolov3本质上是一样的,有些人可能会感到失望。

但我认为算法创新可以分为三种方式:

第一种:面目一新的创新,比如Yolov1、Faster-RCNN、Centernet等,开创出新的算法领域,不过这种也是最难的第二种:守正出奇的创新,比如将图像金字塔改进为特征金字塔第三种:各种先进算法集成的创新,比如不同领域发表的最新论文的tricks,集成到自己的算法中,却发现有出乎意料的改进

Yolov4兼具第二和第三项创新,结合并尝试了深度学习领域最新论文的20多项研究成果,不得不佩服作者Alexey在github代码库中的频繁维护。

目前Yolov4代码中有一万多颗星。据我所知,只有脸书的Detectron(v1-v2)和Yolo(v1-v3)官方代码库(已经停止更新)超过了这个数字。

所以Yolov4中的各种创新方式都值得仔细研究。

为了便于分析,Yolov4的整体结构分为四个部分:

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

大白主要从以上四个部分来阐述YoloV4的创新之处,让大家一目了然。

输入端:这里指的创新主要是训练时对输入端的改进,主要包括Mosaic数据增强、cmBN、SAT自对抗训练BackBone主干网络:将各种新的方式结合起来,包括:CSPDarknet53、Mish激活函数、DropblockNeck:目标检测网络在BackBone和最后的输出层之间往往会插入一些层,比如Yolov4中的SPP模块、FPN+PAN结构Prediction:输出层的锚框机制和Yolov3相同,主要改进的是训练时的损失函数CIOU_Loss,以及预测框筛选的nms变为DIOU_nms

总的来说,Yolov4对Yolov3的各个部分都进行了改进和优化,下面抛出作者的算法对比图。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

只对比Yolov3和Yolov4,在COCO数据集上,同样FPS在83左右时,Yolov4的AP为43,而Yolov3的AP为33,直接提高了10个百分点。

我不能接受。当然,对于不同的数据集,效果可能有所不同,但总体来说,改善效果是极好的。在此,大白将继续深入挖掘Yolov4的每一个创新点。

4.3.1投入创新

考虑到很多同学没有大量的GPU显卡,Yolov4在训练时提高了输入,使得单个GPU上的训练也有不错的效果。如数据增强马赛克、cmBN和SAT自我对抗训练。

但是我觉得cmBN和SAT的影响不大,所以我这里主要解释一下马赛克数据增强。

(1)镶嵌数据增强

Yolov4中使用的马赛克参考了2019年底提出的CutMix数据增强方法,但是CutMix只使用了两张图片进行拼接,而马赛克数据增强使用了四张图片,随机缩放,随机裁剪,随机排列进行拼接。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

首先,为什么要增强镶嵌数据?

在平时的项目训练中,小靶的AP一般远低于中靶和大靶。Coco数据集也包含了大量的小目标,但麻烦的是小目标分布不均匀。

首先看一下小、中、大目标的定义:2019年发表的论文《增强小物体探测》做了区分:

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

可以看出,小目标的定义是目标帧长宽0×0~32×32之间的物体。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

但在整体数据集中,小、中、大目标的比例并不均衡。如上表所示,Coco数据集中小目标的比例为41.4%,多于中目标和大目标。

而训练集中只有52.3%的图片有小目标,中等目标和大目标的分布相对更均匀。

针对这种情况,Yolov4的作者采用了镶嵌数据增强的方法。

有几个主要优点:

丰富数据集:随机使用4张图片,随机缩放,再随机分布进行拼接,大大丰富了检测数据集,特别是随机缩放增加了很多小目标,让网络的鲁棒性更好。减少GPU:可能会有人说,随机缩放,普通的数据增强也可以做,但作者考虑到很多人可能只有一个GPU,因此Mosaic增强训练时,可以直接计算4张图片的数据,使得Mini-batch大小并不需要很大,一个GPU就可以达到比较好的效果。

此外,发现另一位研究者的训练方法也值得借鉴。采用的数据增强方法类似于Mosaic,同样使用四幅图(非随机分布),但在训练和计算损失时,采用了“缺什么补什么”的思想:

在上一次迭代中,如果小物体造成的损失不足(比如小于某个阈值),下一次迭代将使用拼接图;不然用正常图训练也挺好玩的。

参考:https://www.zhihu.com/question/390191723? RF = 390194081

4.3.2骨干创新

(1)CSPDarknet53

CSPDarknet53是在Yolov3骨干网Darknet53的基础上,借鉴了2019年CSPNet的经验而设计的骨干结构,包含五个CSP模块。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

因为这里的CSP模块比较长,所以不放在这里。也可以点开Yolov4的netron网络结构图,对比一下,一目了然。

每个CSP模块前面的卷积核大小为3*3,因此可以用于下采样。

主干有五个CSP模块,输入图像是608*608,所以特征图的变化规律是:608->:304->;152->;76->;38->;19

经过五个CSP模块,得到一个19*19的特征图。

而且作者只在骨干中使用了Mish激活函数,在网络背后仍然使用了Leaky_relu激活函数。

我们来看看作者为什么要参考2019年的CSPNet,采用CSP模块?

CSP文件地址:arxiv.org/pdf/1911.1192

CSP的全称是Crossstage Parial Network,主要从网络结构设计的角度解决推理中计算量大的问题。

CSP作者认为推理计算高的问题是网络优化中梯度信息的重复造成的。

因此,首先使用CSP模块将基础层的特征映射分成两部分,然后通过一个跨级的层次结构将它们合并,这样可以减少计算量,保证精度。

因此,Yolov4在骨干网上采用CSPDarknet53网络结构,有三个优点:

优点:增强了CNN的学习能力,在保持准确性的同时做到了轻量化。

优点:减少计算的瓶颈

优点:降低内存成本

(2)Mish激活函数

Mish激活函数是2019年下半年提出的一个激活函数

地址:arxiv.org/abs/1908.0868

而Leaky_relu的激活函数图形对比如下:

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

Yolov4的主干使用了Mish激活函数,而背后的网络仍然使用leaky_relu函数。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

在Yolov4作者的实验测试中,使用CSPDarknet53网络对ImageNet数据集上的图像进行分类,发现有Mish激活函数的TOP-1和TOP-5的准确率比没有激活函数的略高。

因此,骨干网在设计Yolov4目标探测任务时,仍然使用Mish激活功能。

(3)跌落滑车

Yolov4中使用的Dropblock实际上类似于常见网络中的Dropout函数,也是一种缓解过拟合的正则化方式。

滴滴是2018年提出的,地址是arxiv.org/pdf/1810.1289.

传统的退网很简单,一句话就能说清楚:随机删除减少了神经元的数量,让网络更简单。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

而Dropblock类似于Dropout,如下图:

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

中间丢弃的方法会随机删除丢弃一些信息,但是Dropblock的研究者认为卷积层对这种随机丢弃并不敏感,因为卷积层通常是三层:卷积+激活+池层,池层本身作用于相邻的细胞。而且,即使随机丢弃,卷积层仍然可以从相邻的活动单元中学习到相同的信息。

因此,在全连接层上运行良好的Dropout在卷积层上并不运行良好。

所以右边Dropblock的研究人员干脆把整个局部删除丢弃。

其实这种方法是2017年cutout数据增强的一种方式。cutout是清除输入图像的某些区域,而Dropblock是将Cutout应用于每个特征图。此外,训练不是使用固定的归零比,而是从一个小的比值开始,该比值随着训练过程线性增加。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

Drop和Cutout的研究人员对比验证时,发现有几个特点:

优点:Dropblock的效果比Cutout好。

优点:Cutout只能作用于输入层,而Dropblock将Cutout应用于网络中的每一个特征图。

优点:Dropblock可以定制各种组合,在训练的不同阶段可以修改删除概率。与Cutout相比,它从空层面和时间层面都有更精细的改进。

Yolov4直接采用了更好的Dropblock,全面升级完善了网络的正则化过程。

4.3.3颈部创新

在目标检测领域,为了更好地提取融合特征,通常会在主干层和输出层插入一些层,这个部分称为颈部。相当于目标探测网的脖子,也很关键。

Yolov4的颈部结构主要采用SPP模块和FPN+PAN。

(1)SPP模块

实际上,SPP模块在Yolov3中已经存在。Yolov4的C++代码文件夹里有一个Yolov3_SPP的版本,但有些同学可能没用过。在Yolov4中,spp模块仍然位于主干网络之后:

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

在SPP模块中,作者使用了k={1*1,5*5,9*9,13*13}的最大池法,然后对不同比例尺的特征地图进行Concat操作。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

在“DC-SPP-Yolo”一文中:

还测试了Yolo目标探测的SPP模块。

正如Yolov4作者所做的研究,SPP模块在增加主要特征的接收范围和显著分离最重要的上下文特征方面比k*k最大池方法更有效。

Yolov4的作者发现,在COCO目标检测任务中,以0.5%为代价,AP50提高了2.7%,所以在Yolov4中也使用了SPP模块。

(2)+潘

潘的结构挺有意思的。在网上看了Yolov4对这部分的讲解,大部分都是泛泛而谈,而潘是借鉴PANet在图像分割领域的创新。有些同学可能不是很清楚。

我们先把这部分拆开,看看Yolov4是怎么设计的。

Yolov3结构:

让我们先来看看Yolov3中脖子的FPN结构。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

可以看到经过几次下采样,三个紫色箭头所指的地方,输出分别是76*76,38*38,19*19。

以及最终预测中用于预测的三个特征图①19*19*255,②38*38*255,③76*76*255。

让我们立体地画出颈部,更直观地看到这两部分是如何通过FPN结构融合在一起的。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

如图,FPN自上而下,通过上采样的方式传递融合高层特征信息,得到预测的特征图。

Yolov4结构:

除了FPN,Yolov4中的颈部也采用了潘结构:

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

CSPDarknet53中提到,每个CSP模块前面的卷积核是3*3,相当于下采样操作。

因此,可以看出,三个紫色箭头处的特征图分别为76*76、38*38和19*19。

以及最后预测用的三个特征图:①76*76*255,②38*38*255,③19*19*255。

让我们也看看颈部的立体图像,看看这两个部分是如何通过FPN+潘结构融合。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

与Yolov3的FPN图层不同,Yolov4还在FPN图层后面添加了一个自下而上的要素金字塔。

有两种PAN结构。

结合这种操作,FPN层自顶向下传达强语义特征,而特征金字塔自底向上传达强定位特征。对联合起来从不同的主干层聚集不同检测层的参数。这个操作真的很肤浅。

FPN+潘在18年借鉴了的PANet,当时主要用于图像分割领域,但Alexey将其分割应用于Yolov4,进一步提高了特征提取的能力。

但是,这里有几点需要注意:

注1:

直接预测了Yolov3的FPN层输出的三个不同大小的特征图① ② ③。

但是在Yolov4的FPN层中,只使用最后的76*76特征图①,预测的特征图②和③经过两次PAN结构后输出。

这里的区别还体现在cfg文件上,很多同学之前都不太懂。

比如Yolov3.cfg的最后三层Yolo层,

第一个Yolo层是最小的特征图19*19,mask=6,7,8,对应最大的锚框。

第二Yolo层是中等特征图38*38,mask=3,4,5,对应于中等锚框。

第三个Yolo层是最大的特征图76*76,mask=0,1,2,对应最小的锚框。

Yolov4.cfg正好相反。

第一个Yolo层是最大的特征图76*76,mask=0,1,2,对应最小的锚框。

第二Yolo层是中等特征图38*38,mask=3,4,5,对应于中等锚框。

第三个Yolo层是最小的特征图19*19,mask=6,7,8,对应最大的锚框。

注2:

在PANet网络的原始PAN结构中,两个特征图的合并是通过快捷操作,而在Yolov4中,采用concat(route)操作,并且融合后的特征图的大小发生了变化。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

你也可以在这里查看Yolov4的netron网络图,很有意思。

4.3.4预测创新

CIOU _ loss

目标检测任务的损失函数一般由两部分组成:分类损失函数和包围盒区域损失函数。

近年来,包围盒Regeression损失的发展过程是:平滑L1损失->: IoU损失(2016)-& gt;GIoU Loss(2019)-& gt;欧弟损失(2020)-& gt;CIoU损失(2020年)

先从最常用的IOU_Loss开始,做个对比拆解分析,看看Yolov4为什么选择CIOU_Loss。

a.IOU_Loss

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

可以看出,欠条丢失其实很简单,主要是交集/并集,但其实有两个问题。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

1:在状态1的情况下,当预测框和目标框不想相交时,IOU=0,不能反映两个框之间的距离。此时损失函数不可导,IOU_Loss无法优化两个盒子不相交的情况。

问题2:在状态2和状态3的情况下,当两个预测框大小相同,两张借条相同时,IOU_Loss无法区分两者交集的不同。

所以2019年出现了GIOU来做改进。

b.GIOU_Loss

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

你可以看到右边。

在GIOU_中加入了交集尺度的度量,缓解了单纯IOU的尴尬。

但为什么只说解脱?

因为还有一个不足之处:

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

问题:状态1、2和3都是预测框在目标框内并且预测框的大小相同的情况。此时预测框和目标框的差集是一样的,所以这三个状态的GIOU值也是一样的。此时GIOU退化为IOU,相对位置关系无法区分。基于这个问题,AAAI提出了2020年的欧弟损失。

c.欧弟损失

一个好的目标盒回归函数应该考虑三个重要的几何因素:重叠面积、中心距和纵横比。

针对IOU和GIOU的问题,笔者从两个方面进行了思考。

一:如何最小化预测框和目标框的归一化距离?

二:预测框和目标框重叠时,回归如何更准确?

为了解决第一个问题,提出了欧弟损耗(Distance_IOU_Loss)。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

欧弟损失考虑了重叠面积和距中心点的距离。当目标盒子包裹预测盒子时,直接测量两个盒子之间的距离,因此欧弟_Loss收敛更快。

但是就像之前好的目标框回归函数说的,不考虑长宽比。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

比如上面三种情况,目标框包裹预测框,本来欧弟_Loss就可以工作。

但是预测框中心点的位置是一样的,所以根据欧弟_Loss的计算公式,三者的值都是一样的。

为了解决这个问题,CIOU_Loss再次被提出。不说了,科学永远是在解决问题,在进步!!

d.CIOU_Loss

CIOU_Loss和欧弟_Loss前面的公式是一样的,只是在此基础上增加了一个影响因子,考虑了预测框和目标框的长宽比。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

其中v是衡量纵横比一致性的参数。我们也可以将其定义为:

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

这样,CIOU_Loss考虑了在目标帧回归函数中应该考虑的三个重要几何因素:重叠面积、距中心点的距离和纵横比。

我们来综合一下各个损失函数的区别:

IOU_Loss:主要考虑检测帧和目标帧的重叠面积。

GIOU_Loss:在IOU的基础上,解决包围盒不重合的问题。

欧弟_洛斯:在IOU和GIOU的基础上,考虑包围盒中心点之间的距离信息。

CIOU_Loss:在欧弟的基础上,考虑包围盒长宽比的比例信息。

Yolov4采用CIOU_Loss的回归方法,使得预测盒回归更快更准。

(2)欧弟国家管理系统

Nms主要用于筛选预测盒。在常见的目标检测算法中,一般采用常见的nms方法,而Yolov4则借鉴了D/CIOU loss的上述论文:arxiv.org/pdf/1911.0828.

计算出的IOU部分被欧弟替换的方式:

让我们来看看实际案例。

深入浅出Yolo系列之Yolov3&Yolov4核心基础知识完整讲解

在重叠图像的摩托车检测中,由于考虑了包围盒中心点的位置信息,中间的摩托车也可以回归。

因此,欧弟nms在重叠目标检测方面优于传统nms。

一般来说,YOLOv4的论文被称为“良心之作”。近年来,深度学习领域的最新研究tricks被移植到Yolov4中进行验证测试,大大提高了Yolov3的准确率。

虽然没有什么新的创新,但很多改进值得借鉴。借用Yolov4作者的总结。

Yolov4主要带来了三个新的贡献:

(1)提出了一种高效强大的目标检测模型,利用1080Ti或2080Ti可以训练出超快速准确的目标检测器。

(2)在探测器训练过程中,验证了一些最前沿的研究成果对目标探测器的影响。

(3)改进了SOTA方法,使其更有效,更适合于单个GPU的训练。

5.YoloV4相关代码

5.1 python代码

地址:https://github.com/Tianxiaomo/pytorch-Yolov4

作者的训练和测试推理代码已经完成。

5.2 C++代码

Yolov4作者Alexey的代码,俄罗斯大神,应该是独立研究者,算法更新的频率令人佩服。

在Yolov3作者Joseph Redmon宣布停止更新Yolov3算法后,Alexey凭借对Yolov3算法的不断探索和研究,赢得了YOLOV3作者的认可,发布了Yolov4。

地址:github.com/AlexeyAB/darknet

Tensorrt代码的5.3 python版本

目前tensorflow版本有效:weights->;pb- >余压发电

地址:https://github.com/hunglc007/tensorflow-Yolov4-tflite

版本5.4 C++的Tensorrtrt代码

地址:https://github.com/wang-xinyu/tensorrtx/tree/master/Yolov4

作者定义了mish激活功能的插件层,加速后Tensorrt相当快。

6.下载相关数据集

在项目中,应该会有很多目标检测算法,比如人脸识别,比如疫情期间的口罩人脸识别,比如流量统计,人群统计等等。

所以大白也会在这里总结出值得一试的好的目标探测数据集,方便有需要的同学下载。

6.1遮罩遮挡人脸数据集

数据集详情:由武汉大学多媒体研究中心赞助,是目前世界上最大的面具覆盖的人脸数据集。

分为真实面具脸和模拟面具脸两部分。真实面具脸包含525人的5000张面具脸和90000张正常脸。模拟人脸面具包含10,000人和500,000个模拟人脸数据集。

应用:人脸检测,人脸识别

地址:https://github . com/x-张洋/真实世界面具脸数据集

6.2宽脸人脸数据集

数据集详情:由香港中文大学赞助,包含3万张图片,40万张人脸。

应用:人脸检测

地址:http://shuoyang1213.me/WIDERFACE/WiderFace_Results.html

6.3较宽的人挤场景行人数据集

数据集细节:各种场景中拥挤场景的行人检测数据集包含13382张图片,共计40万个不同遮挡程度的人体。

应用:人体检测

地址:http://www.cbsr.ia.ac.cn/users/sfzhang/WiderPerson/

由于工作原因,会收集大量各种公共应用场景的数据集。如果同学们需要其他场景或者其他项目,也可以给jiangdabai@126.com留言或者发邮件,这里会更新相应的数据集。

7.不断更新

在深度学习的图像领域,肯定会涉及到目标检测。在目标检测中,Yolov3是一个非常经典的算法,必须学习。有些同学,尤其是初学的同学,刚开始学的时候会觉得yolo算法很繁琐。

但是我发现网上很多教程其实都比较笼统,不适合小白学习。

所以大白也快没电了。正在准备Yolov3和Yolov4以及相关的基础入门视频,让大家看完之后了解整体流程和各种算法细节。可以先收藏,后期制作后会在这里更新。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/131862.html

发表回复

登录后才能评论