YOLOV1-V9发展历程(1) (V1-V5)

张开发
2026/4/20 3:20:16 15 分钟阅读

分享文章

YOLOV1-V9发展历程(1) (V1-V5)
简介计算机视觉领域包含很多不同的方向从处理数据的类型上分为图片视频点云在2D图像的任务中再细分就分为单目标任务和多目标任务(如上图YOLO是用于解决多目标检测问题的计算机视觉算法相比于多阶段的目标检测算法YOLO单阶段目标检测方法一经问世就以其简单高效果的特点备受关注至今已经发展到yolov9下面将对yolov1-v9进行梳理.(由于本人不专门研究Object detect领域如有错误请您指出(内容来自B站同济子豪兄(特别鸣谢同济子豪兄Object Detection前情概述DPM人工特征滑动窗口R-CNN:先提取2000个候选框Region of interest这个过程称为region proposal再把2000个候选框送入CNN进行甄别最终再经过SVM和Boundbox regression进行分类或回归最终得到结果2000个候选框每个都要处理一遍要经过40s才能处理一张图片Fast-RCNN 先不着急提取候选框先把整个图像喂到一个CNN里面获得一个共享的特征所有的候选框都共享这一套特征这样可以加快一些速度到后来还有Faster-RCNN用一个单独的RPN网络来挑选候选框..总结两阶段优点1、准确 候选框多效果自然好一些缺点1、慢 2、候选框太小不能看到整个图像的全景管中窥豹会丢失信息背景|背景和前景之间的关系|不同物体之间的关系|全图的关系单阶段Yolo优点速度快不需要复杂的上下游产业链的协同也不需要对每一个工序单独的训练和优化是一个端到端完整统一的框架缺点但准确率不高对小目标和密集目标识别效果不好当然这是以前的说法了YOLOV1CVPR2016backbone先缩放到448*448*3的图像裁剪rgb经过一顿处理变成了一个7*7*1024大小的feature map经过一个7*7*1024拉平4096的线性层得到4096维的向量再过一个40961470的线性层得到一个1470维度的向量把该向量reshape成7*7*30的特征图Yolo测试过程(正向推断过程)yoloV1先把图像划分成S*S7*7的网格(gridcell)每个gridcell预测出b个boundbox预测框b2两个预测框地中心点落在gridsell里边无论预测框的形状只要bbox的中心点落在gridcell里就说明这个bbox是由这个gridcell生成的所以共生成了98个bbox每个bbox都包含四个位置参数和一个置信度参数包含物体的概率x,y,w,h,c)黑框框的粗细代表置信度的大小每个网格还能生成所有类别的条件概率假设包含某个物体的前提下是某一个类别的概率彩图将每个bbox的置信度乘以其对应的gridcell的条件概率就能得到每个bbox是各类别的概率结合bbox和gridcell的信息就可以获得最终的预测结果了这些信息都是从那个7*7*30维的向量中获取的S*S*5*BC7*7*30特征解读包含所有预测框的坐标置信度类别结果每个gridcell是30个数 组成是5520两个五表示两个预测框20表示条件概率在PASCOL中有20个类别30维的向量是一个gridcell的信息一共7*7个gridcell就是7*7个30输入一张图像Yolo能输出S*S个gridcell的信息每个gridcell包含两个bbox和20个条件概率的信息每个bbox又包含5个参数4个位置参数和一个置信度参数yolov1的缺点49个预测框最多预测49个物体小目标和密集目标效果差的原因中间这个图经过一系列后处理得到最终的预测结果。Yolo的后处理只有预测阶段需要后处理训练阶段不需要后处理训练阶段每个框都要算损失低置信度的框过滤掉重复的框过滤掉NMS先看狗这个类别的设阈值——置0——排序——NMS去重NMS取框比IOU和IOU阈值超过阈值保留概率大的框概率较低的框被认为是重复框将其概率置0低于阈值的都保留每一个框都和所有概率小于自己的框比IOU阈值跳过概率为0的框最后不为0的类别拎出来分拎出来就是最后的结果Yolo训练过程(反向传播)损失函数如下第二行中的根号的作用是使得误差对小框更敏感对大框更不敏感起到一种均衡的作用YOLOV1缺点1、map准确度低2、定位性能也比较差3、recall也比较低把全部目标全部检出的能力比较差因为7*749个gridcell每个gridcell最多预测出一个物体所以49个gridcell最多预测出49个物体4、预测小目标和密集目标效果差因为7*749个gridcell每个gridcell最多预测出一个物体所以49个gridcell最多预测出49个物体YOLOV2(YOLO9000:Better,Faster,Stronger)CVPR2017简介better比V1性能提升。准确率高Faster比V1更快StrongV2能检测9000多种类别YOLOV2对YOLOV1做出了改进Better1、BNBN层作用防止梯度消失或者梯度爆炸加快收敛BN层原理激活函数是tanhBN层方法BN层一般在线性层后在激活层前2、高分辨率判别器迁移学习(图片大小不匹配导致性能降低高分辨率判别器 目的是适应大分辨率的输入 直接在高分辨率图像上训练 弥补不同尺寸图像之间的gap3、AnchorV2-V5V1没有用Anchor的思想什么是Anchor给bbox一个先验的形状每个bbox的长宽不再是野蛮生长的而是具有一定的高宽比长得矮胖或者瘦高会使模型训练更加稳定有固定的形状匹配而不是谁与groundtruth的IOU大谁来匹配每一个预测框只需要预测出它相较于anchor的偏移量就可以了预测偏移量比从头那样瞎套要简单得多YoloV2的将每张图片划分成S*S个gridcellS13每个gridcell预测5个anchor分别对应了事先制定了五种长宽大小尺度不同的先验框每个anchor都对应一个预测框预测框只需要取预测它相对于anchor的偏移量就可以了Anchor思想应用在预测框坐标的预测方法中产生偏移量而不是直接预测框的中心点和宽高显示设置使得所选用损失函数的反向传播的优化过程中正确学习隐式学习到相对于锚框的偏移量和长宽缩放量见下文锚框不是用来限制框的形状而是给网络一个“靠谱的初始猜测”让它只学微调不学从零猜框从而收敛更快、更稳、定位更准。feature map的长宽应该设置成奇数否侧中心实体就要被最靠近中心得四个gridcell争抢模型输出得结构类别归anchor管了一个gridcell产生125个数5个anchor每个anchor25个数字这个图更加直观损失函数4、Dimension Clusters聚类确定anchor长宽比K-means5、Direct location prediction要限制预测框的位置防止预测框乱窜这个是Anchor思想应用的位置Anchor思想应用在预测框坐标的预测方法中产生偏移量而不是直接预测框的中心点和宽高显示设置使得所选用损失函数的反向传播的优化过程中正确学习隐式学习到相对于锚框的偏移量和长宽缩放量txtytwth是预测框的中线点相较于gridcell左上角点的偏移量以及预测框的宽高通过以下公式可对最终预测框的中心点位置限制在gridcell的内部以及对最终预测框的长宽比进行初始的限制 pw ph即为锚框初始设定的宽高。6、Fine-Grained Features整合不同尺度得特征有利于小目标的目标检测7、Multi-Scale Training能这么做的原因是有global average pooling而不是用的FNN这么做可以在速度和精度之间做权衡同准确度速度最快同速度准确度最高Faster更快改了骨干网络 V2 用Darknet19作为backbone V3用了darknet53ModelStronger类别更多不是重点联合训练不能简单融合类别互斥softnet互斥形成分层的softmax结构同级子节点做softmaxYOLOV3An incremental improvement2018.4V4 V5 YoloX都是对V3的小修小补 并没有什么本质上的创新基本的性能在V3就已经奠定了包括现在很多的业界的应用用的还是yoloV3 因为它本身已经是一个很经典很优秀的算法了唯一不太好的点就是它的论文写的不太正式而且他的很多内容都很难推敲各种网上的代码复现也是参差不齐yolov3对V1和V2进行了一系列改进解决了对小目标和密集目标检测不准确的问题yolov2的骨干网络是Darknet19有十九层Backbone Darknet-53(有52个卷积层和一个全连接层并且里面加了残差连接residual是残差链接不是单独的一层下采样是通过步长为2的卷积实现的当作为backbone时去除了全连接层就变成了卷积层的堆叠backbone是全卷积层因此可以兼容任意尺度的图像但输入图像必须是32的倍数因为要下采样32倍骨干网络性能不错可以和resnet152媲美它能够高效使用GPU它实现了精度和速度的一个权衡yolov3就以darknet作为骨干网络进行特征提取Model骨架提取特征颈部融合特征头获得最终的预测结果输入的是416*416*3输出的是三个尺度的featuremap目的是匹配多尺度的物体分别是13*13*25526*26*25532*32*2552553*85每个gridcell生成3个anchor每个anchor对应一个预测框855805xywhc 80是Coco数据集包含80个类别对应的条件类别概率左上角的就是Darknet53的骨干网络骨干网络分别抽取到了下采样32倍的特征下采样16倍的特征和下采样8倍的特征表示不同粒度的特征通过concat操作下采样16倍的特征融合了下采样32倍的特征下采样8倍的特征同时融合了下采样16倍的特征和下采样32倍的特征经过这种特征融合52*52*255的特征既发挥了深层网络的抽象特征也同时利用了细粒度的细节纹理特征。所以通过这种结构可以实现多尺度的特征融合和不同尺度物体的预测图片缩放方法1、不保留原来的长宽比例直接缩放成416*416resize会发生一些畸变2、在保留原始长宽比例的情况下给图片多余的部分加上灰框一些其他细节v1产生98个预测框检测小目标和密集目标的能力当然很差v2产生13*13*5yoloV3对一个图像产生10647个预测框3*13*1326*2652*52改善了对小目标和密集目标的检测性能对于yolov3来说输入的图片尺寸越大grid数越多输出的预测框的个数也越大。concat是先上采样再按照通道方向叠加上图展现了一下concat细节损失函数对于yoloV3来说于groundtruth IOU最大的框为正样本IOU低于某个阈值的框为负样本IOU处于中间位置的值不参与损失函数的计算训练过程测试过程YoloV3改进变种密集连接空间金字塔池化YOLOV4简介YoloV4是YoloV3的加强版其主要在YOLOV3的基础上添加了一些列的小改进。因此YOLOV4于YOLOV3整体的预测思路是没有差别的解码过程甚至一模一样YOLOV4的改进1、BackboneDarknet53—CSPDarknet532、Backbone应用SPP和PANet结构3、Dataset使用了Mosaic数据增强4、Loss使用了CIOU作为回归LOSS5、activatefunc使用了MISH激活函数Model与yolov3相同输入图像的大小可以不同SPP是利用不同尺寸的最大池化核来对输入进来的特征层进行最大池化池化后的结果在进行一个堆叠concat之后再进行三次卷积PANet是用特征金字塔对特征进行融合输出头与yolov3没有区别753*25255XYWHC20是针对VOC数据集来讲的有20个类YOLOV5简介模型效果带6的模型是处理更大尺寸的图片的带6的和普通的除了在输入分辨率上有区别在模型的搭建上也有一些区别右上角模型最大的下采样倍率是32倍所采用的预测特征层有三层P3P4P5和之前的yolov3和V4都是一样的左下角这几个针对更大分辨率的模型他们的下采样率达到了64倍因为输入的分辨率更大所要分的层次自然更多一些它所采用的预测特征层一共有四层P3P4P5P6网络结构backboneNew Csp-Darknet53NeckSPP-SPPFPN-New CSP-PANHeadYOLOv3 Head补充SiLU数据增强mosaic(将四张图片拼成一张图片)Copy paste仿射变换MixUp将两张图片按照一定透明程度混合成一张新的图片AlbenmentationAugment HSV随机调整色度饱和度明度Random horizontal filp随机水平翻转训练策略EMA给学习变量加上一个动量混合精度训练加快训练提高GPU利用率超参设置其他损失计算平衡不同尺度损失消除Grid敏感度匹配正样本Build Targets参考文献【精读AI论文】YOLO V1目标检测看我就够了_哔哩哔哩_bilibili【精读AI论文】YOLO V2目标检测算法_哔哩哔哩_bilibili【精读AI论文】YOLO V3目标检测附YOLOV3代码复现_哔哩哔哩_bilibili科普什么是YOLOV4目标检测算法_哔哩哔哩_bilibili睿智的目标检测30——Pytorch搭建YoloV4目标检测平台-CSDN博客YOLOv5网络详解_哔哩哔哩_bilibiliYOLOv5网络详解_yolov5网络结构详解-CSDN博客YOLOv5 模型结构详细讲解_哔哩哔哩_bilibili

更多文章