blogs1: YOLOv1算法理解
blogs2: <机器爱学习>YOLO v1深入理解
网络结构
激活函数(leaky rectified linear activation)
损失函数
blogs1: 目标检测|YOLOv2原理与实现
Batch Normalization
BN可以提升模型收敛速度,而且可以起到一定正则化效果,降低模型的过拟合
YOLOv2使用BN,不使用dropout
High Resolution Classifier
将分辨率由224224(ImageNet分类尺寸)增加至448448
Convolutional With Anchor Boxes
使用先验框提高召回率
Dimension Clusters
使用聚类算法生成先验框
数据处理部分
Backbones部分
DarkNet53, 网络结构如下:
Neck部分
FPN
Head部分
见网络结构图
激活函数
LeakyReLU
损失函数
目标类别损失/目标置信度损失 --> 二值交叉熵损失(Binary Cross Entyopy)
目标定位损失 --> Sum of Squared Error Loss(只有正样本才有目标定位损失)
L(loc) = sum(sigmod(tx-gx)2 + sigmod(ty-gy)2 + (tw-gw)2 + (th-gh)2)
其他
在yolov3中,关于预测的目标中心点坐标计算公式是:
见图:
paper: YOLOv4: Optimal Speed and Accuracy of Object Detection
blogs1: b站up主霹雳吧啦Wz yolov4讲解博客
blogs2: Bubbliiiing的博客
video1: b站up主霹雳吧啦Wz yolov4讲解视频
数据处理部分
Backbones部分
CSPDarknet53
Neck部分
SPP
PAN
Head部分
和YOLOv3的head部分一样
正负样本分配部分
在yolov3中一个GT都只分配一个Anchor, 在ylov4中(以及u版的yolov3-spp)中一个gt可以同时分配给多个anchor
在Bubbliiiing版本的代码中可以描述如下:(3个head分别对应anchor为[0,1, 2, 3, 4, 5, 6, 7, 8])
a: anchor有9个,gt有10个 每个anchor和gt进行左上角对齐并且计算iou从大到小排序(shape:[10,9])
b: 例如第一个gt算出来的最大iou的anchor的index=4,但是该层的anchor索引是6,7,8,所以该gt不属于该head
c: 如果计算出该gt与anchor对应的index=6: 将该gt缩放到该head的大小,该gt的中心点落在网格中的点. 该网格中的
点包含的信息有(x,y,w,h,conf,cls). 然后和预测出来的进行对比和计算(在该版本中计算方式同yolov3)
d: 使用sigmod激活函数的取值范围是[0, 1],要想取值0,1那么预测值需要取得无穷(在后续的yolov5中有改进)
损失函数部分
分类损失:
定位损失: CIOU,ciou的计算方式如下:
激活函数
Mish激活函数
其他
Class label smoothing(标签平滑策略)
学习率余弦退火衰减
paper: 无
code: U版yolov5
blog1: b站up主霹雳吧啦Wz yolov5讲解博客比较详细
video1: b站up主霹雳吧啦Wz yolov5讲解视频
数据处理部分
yolov5提供的数据增强技术有:
Backbones部分
Backbone: new CSP-Darknet53(使用了FCOS模块后面使用6*6大小的卷积替换)
Neck部分
spp, pan
head:
yolov3 head
损失函数
Classes loss,分类损失,采用的是BCE loss,注意只计算正样本的分类损失
Objectness loss,obj损失,采用的依然是BCE loss
Location loss,定位损失,采用的是CIoU loss
其他
消除网格在断点等取不到值的情况
bx = (2sigmod(tx) - 0.5) + cx
by = (2sigmod(ty) - 0.5) + cy
那么就将原来的取值范围有[0, 1]变化到[-0.5, 1.5],也为后面使用相邻的网格预测点作为正样本奠定基础
同时:
bw = pw * (28sigmod(tw))2
bh = ph * (28sigmod(th))2
防止梯度爆炸,将范围调整到(0,4)也为后面的正负样本分配奠定基础
匹配正样本
除了YOLOX,yolov1属于anchor-free目标检测方法外,其他的yolo系列都属于anchor-base方法
数据增强部分
Mosaic
Mixup
Backbone
CSPDarknet53
Neck部分
spp + pan
Head部分
使用decoupled head(将分类头和回归头分开)
正样本标签分配 - simota
手机扫一扫
移动阅读更方便
你可能感兴趣的文章