yolov1-v5学习笔记及源码解读

深度学习网络分类

深度学习经典检测方法 通常分为
two-stage(两阶段):Faster-rcnn Mask-Rcnn系列
one-stage(单阶段):YOLO系列
在这里插入图片描述

one-stage:
最核心的优势:速度非常快,适合做实时检测任务
但是缺点也是有的,效果通常情况下不会太好
在这里插入图片描述
two-stage
速度通常较慢(5FPS),但是效果通常还是不错的
非常实用的通用框架MaskRcnn

在这里插入图片描述

评价指标

IOU(预测框与真实框得交并比):
在这里插入图片描述

准确率(Precision)、召回率(Recall)
准确率又称为查准率、召回率又称为查全率。两者为一对矛盾得度量。一般来说,查准率高查全率往往偏低。而查全率高时,查准率较低。我们要做的是尽可能让两者都高。
在这里插入图片描述
在这里插入图片描述

map(mean Average Precision)平均的平均精确度:首先是一个类别内,求平均精确度(Average
Precision),然后对所有类别的平均精确度再求平均(mean Average Precision)。
参考:目标检测测评指标——mAP
在这里插入图片描述

原理

yolov1

论文地址:https://arxiv.org/pdf/1506.02640.pdf
在这里插入图片描述
在这里插入图片描述

网络架构如下图,就是一个简单得卷积操作(整张图作为网络的输入,直接在输出层回归bounding box的位置和bounding box所属的类别)

在这里插入图片描述
在这里插入图片描述
对于网络最后输出得参数含义(7730):
在这里插入图片描述

损失函数:

非极大值抑制(NMS),就是说在所有得检测到的预测框中,先将置信度最高的框选出来,然后比较和该框IOU较大的框,其IOU达到一定阈值则将该框去掉,然后接着找出剩下得置信度第二大得预测框继续上述步骤,直到遍历所有预测框。
在这里插入图片描述在这里插入图片描述

总结:
在这里插入图片描述
关于yolov1得更详细介绍可以参看【深度学习YOLO V1】深刻解读YOLO V1(图解)

yolov2

论文地址:https://arxiv.org/abs/1612.08242

改进:在这里插入图片描述
网络框架:
在这里插入图片描述

(1) 批规范化 Batch Normalization
在这里插入图片描述

(2) 更大得分辨率 在这里插入图片描述

(3)使用Anchor Box
在YOLOv1中,输入图片最终被划分为77网格,每个单元格预测2个边界框。YOLOv1最后采用的是全连接层直接对边界框进行预测,其中边界框的宽与高是相对整张图片大小的,而由于各个图片中存在不同尺度和长宽比(scales and ratios)的物体,YOLOv1在训练过程中学习适应不同物体的形状是比较困难的,这也导致YOLOv1在精确定位方面表现较差。YOLOv2借鉴了Faster R-CNN中RPN网络的先验框(anchor boxes,prior boxes,SSD也采用了先验框)策略。
YOLOv2做了以下改变:
(1)删掉全连接层和最后一个pooling层,使得最后的卷积层可以有更高分辨率的特征;
(2)缩减网络,用416
416大小的输入代替原来448448。这样做是希望希望得到的特征图都有奇数大小的宽和高,奇数大小的宽和高会使得每个特征图在划分cell的时候就只有一个中心cell。因为大的目标一般会占据图像的中心,所以希望用一个中心cell去预测,而不是4个中心cell。网络最终将416416的输入下采样32倍变为1313大小的feature map输出,查看.cfg文件可以看到有8个pooling层。
YOLOv1中将输入图像分成7
7的网格,每个网格预测2个bounding box,一共只有772=98个box。 YOLOv2中引入anchor boxes,输出feature map大小为1313,每个cell有5个anchor box预测得到5个bounding box,一共有1313*5=845个box。增加box数量是为了提高目标的定位准确率
在这里插入图片描述
利用anchor Box虽然map没啥大得变化,但是由于先验框变多,查全率提高了不少,也就是之前可能有遮挡得目标漏检得到了改进。
在这里插入图片描述

(4)Directed Location Prediction
在yolov1中作者直接使用偏移量,而在v2中,采用相对于网格得相对坐标(拿先验框进行滑动学习最好位置)
在这里插入图片描述
在v2中的坐标位置都是相对于当前所在网格的左上点位置坐标的(只能在当前的网格中进行偏移,所以有助于收敛)下图中的坐标都是按照32比例缩小的:在这里插入图片描述

(5)Fine-Grained Features
感受野越大对于小目标的特征就越不明显,为了检测好小目标,在v2中将前面卷积得到的小的感受野的特征和最后大感受野特征进行整合:
在这里插入图片描述
关于感受野得概念:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(6)多尺度Multi-Scale
在这里插入图片描述

可参考:
YOLOv2 论文笔记
论文笔记1 --(YOLOv2)YOLO9000:Better,Faster,Stronger

yolov3

论文地址:https://arxiv.org/pdf/1804.02767.pdf
指标:
在这里插入图片描述

最大的改进就是网络结构,使其更适合小目标检测
特征做的更细致,融入多持续特征图信息来预测不同规格物体
先验框更丰富了,3种scale,每种3个规格,一共9种
softmax改进,预测多标签任务

网络结构:
在这里插入图片描述

多尺度: 为了能检测到不同大小的物体,设计了3个scale
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

可参考:【yolov3详解】一文让你读懂yolov3目标检测原理

yolov4

论文地址:https://arxiv.org/pdf/2004.10934v1.pdf

算法性能:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据处理上采用了:
使得我们在batch很小的情况下也能采用多图特征进行学习 在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
相比之前所采用过的随机dropout,本次采用dropblock,更大区域的掩盖,增加学习时的难度。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

iou损失
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后采用:在这里插入图片描述

NMS
之前的NMS只考虑置信度的信息,不考虑是否是两个不同目标间的重合(置信度都较大,但为两个不同目标,这样同样会抑制那个较小置信度的目标) 在这里插入图片描述
在这里插入图片描述

网络结构上:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
也就是:在这里插入图片描述
在这里插入图片描述
激活函数:
在这里插入图片描述
在这里插入图片描述

yolov5

yolov5没有具体的论文,只是一个实际的工程化的项目,yolov5所采用的网络架构与v4基本相同,具体v4与v5的区别可以参看:一文读懂YOLOv5 与 YOLOv4
对于yolov5的代码及如何训练自己的数据,可以参看:yolov5训练自己的数据集(一文搞定训练)

源码解读(v3为例)

下文所有代码:链接:https://pan.baidu.com/s/1p-Q-edFXXcvzxlZNd9saOw 提取码:x72s

详情>>>yolov3代码详细解读

猜你喜欢

转载自blog.csdn.net/weixin_48994268/article/details/119635338