YOLO V5

举报
离璞 发表于 2022/03/02 09:31:24 2022/03/02
【摘要】 整体前向过程:Yolo-v5相较于Yolo-v4来说改动不是特别大,最主要的区别在于对于anchor的处理机制,这个机制也是让Yolo-v5收敛快的核心,另外Yolo-v5的loss与之前的Yolo系列也有些差别。首先对于数据增强,Yolov5的输入端采用了和Yolov4一样的Mosaic数据增强的方式,Yolov3则没有采用这种数据增强,Mosaic的具体细节不在这里过多阐述,不过这种方式...

整体前向过程:

Yolo-v5相较于Yolo-v4来说改动不是特别大,最主要的区别在于对于anchor的处理机制,这个机制也是让Yolo-v5收敛快的核心,另外Yolo-v5的loss与之前的Yolo系列也有些差别。

首先对于数据增强,Yolov5的输入端采用了和Yolov4一样的Mosaic数据增强的方式,Yolov3则没有采用这种数据增强,Mosaic的具体细节不在这里过多阐述,不过这种方式的数据增强对于小目标的检测有比较大的提升。不同于Yolov4的是,Yolov5在选定锚框比时采用了自适应锚框计算,此前的Yolov3和Yolov4都是先采用聚类算法在数据集中预先训练,选好9个anchor的宽高,但Yolov5中将此功能嵌入到代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值。在train.py中的参数说明中,“noautoanchor”参数便是用来控制该操作,设置为ture则启用自适应anchor机制,设置为false则采用给定的anchor。

Backbone部分Yolov5与Yolov4并没有太大区别,主要的区别在于Yolov5在输入之后增加了一个Fcos。

Yolov5的neck部分用到了CSP结构,目的是为了能够更好地与前面网络提取的特征进行融合,其余地部分就与Yolov4没有区别,主要用FPN+PAN来进行下采样和上采样,给出三个不同尺度的featuremap,用来进行预测。

在之前的Yolo系列中,对于每一个ground truth(后面简称为gt),都有一个唯一的anchor与其对应,而这个anchor选择的方式就是选与gt的IOU最大的那个anchor,不考虑一个gt对应多个anchor的情况。Yolov5采用的匹配规则是:计算bbox和当前层anchor的宽高比,若宽高比大于设定的阈值,则该anchor与bbox不匹配,丢弃该bbox,认为其为负样本。剩下的bbox,计算它落在哪个网格内并要寻找出相邻的两个网格,认为这三个网格都可能是来预测该bbox的,这就和之前的Yolo系列有很大不同,单从这里来看现在的正样本anchor数量比以前至少增加3倍之多。也正是因为如此,对于一个bbox,那么至少有3个anchor进行匹配。对于loss函数的计算,总体还是分为三部分:类别损失、置信度损失和定位损失,在类别损失和置信度损失上仍然采用BCEloss,这与Yolov3和Yolov4相同,但是对于定位损失,即w、h、x、y的loss,采用了GIoU-loss。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。