Yolo系列各代网络结构分析(一)

Yolo系列

Yolo系列算是目标检测领域的常青树了,从v1到最近的v9,一直都在不断迭代,不断改进,但是细看其各代网络的发展,其实还是有很多一脉相承之处以及算法设计偏好的,总结主要为以下几个方面:

  • 网络结构
  • 预处理 & 后处理
  • 损失函数
  • anchor算法:如何将目标检测做成端到端一阶段算法的关键

Yolov1

网络结构

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

第一代yolo,DarkNet作为backbone,没有neck和backbone部分。

划分grid & anchor

yolov1提出了划分网格来实现目标检测的方案,将一张图片划分为 S × S S\times S S×S个网格,每个网格负责预测中心点在该网格内的目标。
在这里插入图片描述
anchor就类似于之前目标检测算法中的待检测框,之前的目标检测算法是使用region proposal来提取待检测框,yolo系列则是使用提取预设好的anchor。yolov1每个grid有5个anchor,在yolov1中称为boundingbox,yolov1中是直接预测bbox的长宽,并没有预设anchor的尺寸。

也有说每个grid预测两个boundingbox的,模型版本不同,参数也可能有变化,这不是重点,重点是这种思想。

正负样本处理 & 损失函数

对于每个grid来说,如果有ground truth的,与GT的IOU最大的框为正样本,其余为负样本,至于正负样本数量不平衡问题,令损失函数中正负样本的损失添加不同的系数。
yolov1把目标检测当作回归问题,所以其损失函数为:
在这里插入图片描述

预处理 & 后处理

Yolov1没有预处理,如果说resize也算预处理的话,那就有预处理。
Yolov1的后处理就是将输出的结果进行NMS非极大值抑制,剔除重复的框。

Yolov2

yolov2的主要贡献:

  • 在模型中添加了BN层【关于BN层可以看之前的blog:BN层详解
  • 引入了Anchor机制,使用聚类算法来预设Anchor的尺寸,v1中直接预测bbox的宽高,v2中挑一个IOU最大的anchor作为bbox,预测bbox左上角角点的偏差,同时对anchor的宽高进行微调。

正负样本处理 & 损失函数

IOU小于阈值的,统统作为负样本,只考虑置信度误差,IOU最大的,同时考虑置信度误差,类别误差,以及定位误差。和v1一样,同样采用在正负样本前加上参数的方式来平衡正负样本误差。

Yolov3

在这里插入图片描述

又是比较经典的一代,主要贡献:
-网络结构基本定型,形成backbone+neck+head的结构,采用darknet-53作为backbone,同时生成三种特征图用于提取不同尺度上的特征。

正负样本 & 损失函数

不再使以grid来负责物体的预测,但是还用grid来分配anchor,只不过计算IOU的时候GT会对所有的anchor都计算IOU,找到一个IOU最大的作为正样本,对于IOU小于阈值的作为负样本,其余的都忽略不算loss。loss的计算依旧是使用正负样本分别添加系数,负样本只计算置信度,正样本计算置信度,类别误差和坐标误差。不过由于三个特征图,所以loss是三个特征图的loss之和。

Yolov5

在这里插入图片描述

最经典,最常用的一代,网络结构讲解可以看之前的blog:yolov5
主要贡献:

  • 采用bottleneck结构,有效降低计算量
  • 采用CSP结构,降低计算量和内存瓶颈,增加梯度路径
  • 采用SPP结构,图像金字塔池化,实现全局特征和局部特征的融合
  • 采用了FPN结构,图像金字塔,小目标精度更好
  • 采用PANet结构【6.0版本后加的】,可以做图像分割。

正负样本处理 & 损失函数

yolov5的正负样本处理相较于v3做了很大改进,提高了正样本的数量。
yolov5中的正样本选择不再使用最大IOU规则,而是先根据shape将GT分到不同的特征层,根据GT的宽高比,将该GT分配到一个特征层,该层内GT中心点所在的grid以及附近的两个grid都负责预测该GT,这三个grid的anchor都作为正样本,其余作为负样本。
xywh的损失采用了CIOU损失,IOU的发展路程可以看:IOU那点事儿
类别和置信度的损失采用了BCEloss,也就是交叉熵损失

所谓经典,其实也不是说他们的效果比别的模型有多出众,而是他们开箱即用,不断更新,更能吸引更多人来使用并不断迭代,这才是为什么yolov3和yolov5一直这么火,这两个是一家公司ultralytics做的,他们实现的yolov5被称为u版,目前已经迭代到了7.0版本。
模型的改进可以分为两点,第一点是对模型本身的改进,也就是结构的改进,第二点是对于整个工程来说,trick的使用和改进,也就是超参的选择方式等,yolov5的模型改进不多,trick改进很多。

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值