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

目录

  • 深度学习网络分类
  • 评价指标
  • 原理
    • yolov1
    • yolov2
    • yolov3
    • yolov4
    • yolov5
  • 源码解读(v3为例)

深度学习网络分类

深度学习经典检测方法 通常分为
two-stage(两阶段):Faster-rcnn Mask-Rcnn系列
one-stage(单阶段):YOLO系列
yolov1-v5学习笔记及源码解读_第1张图片

one-stage:
最核心的优势:速度非常快,适合做实时检测任务
但是缺点也是有的,效果通常情况下不会太好
yolov1-v5学习笔记及源码解读_第2张图片
two-stage
速度通常较慢(5FPS),但是效果通常还是不错的
非常实用的通用框架MaskRcnn

yolov1-v5学习笔记及源码解读_第3张图片

评价指标

IOU(预测框与真实框得交并比):
yolov1-v5学习笔记及源码解读_第4张图片

准确率(Precision)、召回率(Recall)
准确率又称为查准率、召回率又称为查全率。两者为一对矛盾得度量。一般来说,查准率高查全率往往偏低。而查全率高时,查准率较低。我们要做的是尽可能让两者都高。
yolov1-v5学习笔记及源码解读_第5张图片
yolov1-v5学习笔记及源码解读_第6张图片

map(mean Average Precision)平均的平均精确度:首先是一个类别内,求平均精确度(Average
Precision),然后对所有类别的平均精确度再求平均(mean Average Precision)。
参考:目标检测测评指标——mAP
yolov1-v5学习笔记及源码解读_第7张图片

原理

yolov1

论文地址:https://arxiv.org/pdf/1506.02640.pdf
yolov1-v5学习笔记及源码解读_第8张图片
yolov1-v5学习笔记及源码解读_第9张图片

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

yolov1-v5学习笔记及源码解读_第10张图片
yolov1-v5学习笔记及源码解读_第11张图片
对于网络最后输出得参数含义(7730):
yolov1-v5学习笔记及源码解读_第12张图片

yolov1-v5学习笔记及源码解读_第13张图片

非极大值抑制(NMS),就是说在所有得检测到的预测框中,先将置信度最高的框选出来,然后比较和该框IOU较大的框,其IOU达到一定阈值则将该框去掉,然后接着找出剩下得置信度第二大得预测框继续上述步骤,直到遍历所有预测框。
yolov1-v5学习笔记及源码解读_第14张图片yolov1-v5学习笔记及源码解读_第15张图片

总结:
yolov1-v5学习笔记及源码解读_第16张图片
关于yolov1得更详细介绍可以参看【深度学习YOLO V1】深刻解读YOLO V1(图解)

yolov2

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

改进:yolov1-v5学习笔记及源码解读_第17张图片
网络框架:
yolov1-v5学习笔记及源码解读_第18张图片

(1) 批规范化 Batch Normalization
yolov1-v5学习笔记及源码解读_第19张图片

(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数量是为了提高目标的定位准确率
yolov1-v5学习笔记及源码解读_第20张图片
利用anchor Box虽然map没啥大得变化,但是由于先验框变多,查全率提高了不少,也就是之前可能有遮挡得目标漏检得到了改进。
在这里插入图片描述

(4)Directed Location Prediction
在yolov1中作者直接使用偏移量,而在v2中,采用相对于网格得相对坐标(拿先验框进行滑动学习最好位置)
yolov1-v5学习笔记及源码解读_第21张图片
在v2中的坐标位置都是相对于当前所在网格的左上点位置坐标的(只能在当前的网格中进行偏移,所以有助于收敛)下图中的坐标都是按照32比例缩小的:yolov1-v5学习笔记及源码解读_第22张图片

(5)Fine-Grained Features
感受野越大对于小目标的特征就越不明显,为了检测好小目标,在v2中将前面卷积得到的小的感受野的特征和最后大感受野特征进行整合:
yolov1-v5学习笔记及源码解读_第23张图片
关于感受野得概念:
yolov1-v5学习笔记及源码解读_第24张图片
yolov1-v5学习笔记及源码解读_第25张图片
yolov1-v5学习笔记及源码解读_第26张图片

(6)多尺度Multi-Scale
yolov1-v5学习笔记及源码解读_第27张图片

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

yolov3

论文地址:https://arxiv.org/pdf/1804.02767.pdf
指标:
yolov1-v5学习笔记及源码解读_第28张图片

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

网络结构:
yolov1-v5学习笔记及源码解读_第29张图片

多尺度: 为了能检测到不同大小的物体,设计了3个scale
yolov1-v5学习笔记及源码解读_第30张图片yolov1-v5学习笔记及源码解读_第31张图片
yolov1-v5学习笔记及源码解读_第32张图片
yolov1-v5学习笔记及源码解读_第33张图片
yolov1-v5学习笔记及源码解读_第34张图片
yolov1-v5学习笔记及源码解读_第35张图片

yolov1-v5学习笔记及源码解读_第36张图片

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

yolov4

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

算法性能:

yolov1-v5学习笔记及源码解读_第37张图片
yolov1-v5学习笔记及源码解读_第38张图片
yolov1-v5学习笔记及源码解读_第39张图片

数据处理上采用了:
使得我们在batch很小的情况下也能采用多图特征进行学习 yolov1-v5学习笔记及源码解读_第40张图片
yolov1-v5学习笔记及源码解读_第41张图片
yolov1-v5学习笔记及源码解读_第42张图片
相比之前所采用过的随机dropout,本次采用dropblock,更大区域的掩盖,增加学习时的难度。
yolov1-v5学习笔记及源码解读_第43张图片

yolov1-v5学习笔记及源码解读_第44张图片
yolov1-v5学习笔记及源码解读_第45张图片

iou损失
yolov1-v5学习笔记及源码解读_第46张图片
yolov1-v5学习笔记及源码解读_第47张图片
yolov1-v5学习笔记及源码解读_第48张图片
最后采用:yolov1-v5学习笔记及源码解读_第49张图片

NMS
之前的NMS只考虑置信度的信息,不考虑是否是两个不同目标间的重合(置信度都较大,但为两个不同目标,这样同样会抑制那个较小置信度的目标) yolov1-v5学习笔记及源码解读_第50张图片
yolov1-v5学习笔记及源码解读_第51张图片

网络结构上:
yolov1-v5学习笔记及源码解读_第52张图片
yolov1-v5学习笔记及源码解读_第53张图片
yolov1-v5学习笔记及源码解读_第54张图片
也就是:yolov1-v5学习笔记及源码解读_第55张图片
yolov1-v5学习笔记及源码解读_第56张图片
激活函数:
yolov1-v5学习笔记及源码解读_第57张图片
yolov1-v5学习笔记及源码解读_第58张图片

yolov5

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

源码解读(v3为例)

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

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

你可能感兴趣的:(yolo,论文学习,计算机视觉,深度学习)