YOLOv3算法笔记

本文为个人学习过程中所记录笔记,便于梳理思路和后续查看用,如有错误,感谢批评指正!
参考:
paper
项目地址

相同点

  和YOLOv2相同,YOLOv3同样采用基于anchor的方法,预测的值与YOLOv2也是相同,gird的左上角的偏移来得到中心cx, cy,bounding box的宽高便宜缩放得到宽高。
在这里插入图片描述
  训练过程中,采用误差平方损失和。预测框为对应的ground truth box标签(需要反向编码,使用真实的x、y、w、h计算出 tx, ty, tw, th真值)。
  采用逻辑回归预测每个box的objectness分数,对于重合度最大的anchor设为1,但是如果不是最大的,但是大于阈值,依旧不进行预测。一个真值仅分配一个anchor,如果先前的边界框未分配给grounding box对象,则不会对坐标或类别预测造成损失,仅有objectness loss(参考【论文解读】Yolo三部曲解读——Yolov3解释这里有歧义,其实是忽略样本,不计算任何loss,负样本才仅仅计算objectness loss)。

不同点

  1、YOLOv3采用多标签分类,用多个独立的logistic分类器代替softmax函数,以考虑多标签的情况。在计算分类损失进行训练时,YOLOv3对每个标签使用二元交叉熵损失。

  2、为解决之前YOLO算法一直对于小目标检测的劣势,YOLOv3引入了多尺度预测。分为三个不同尺度的头,分别针对不同大小的目标进行检测。每个尺度的特征图上有3个bounding box,因此预测向量是N * N * 3 * (4 + 1 + 80)。然后上采样其中两个特征图,concatenate起来,这里用了FPN。

  3、同样采用聚类方法得到anchor,不过每个grid设置9个anchor。

  4、backbone引入Resnet的跳跃连接,叫darknet53。比YOLOv2的darknet19更强。甚至强于Resnet101和Resnet152。
在这里插入图片描述

在这里插入图片描述
  作者分析YOLOv3下表的性能发现,在iou阈值0.5的情况下的性能和Retinanet及其变体的性能差得不多,但是当阈值调到0.75以后,性能会大幅度下降,这表明,YOLOv3的回归存在一定的问题,框很难与真值对得特别齐。作者还发现与之前一直苦于诟病的小目标检测效果较差相反,采用了多尺度预测的YOLOv3在中大型目标上的预测反而相对较差。
在这里插入图片描述

作者尝试了没用的方法

  1、Anchor box(锚定框)坐标的偏移预测:我们尝试了常规的Anchor box预测方法,比如利用线性激活将坐标x、y的偏移程度预测为边界框宽度或高度的倍数。但我们发现这种做法降低了模型的稳定性,且效果不佳。
  2、线性x,y预测,而不是逻辑预测:我们尝试使用线性激活来直接预测x,y偏移量,而不是Logistic激活。这导致map下降了几个百分点。
  3、Focal loss:我们试着用Focal loss。它使我们的map下降了大约2个点。YOLOv3可能已经对Focal loss试图解决的问题具有鲁棒性,因为它有单独的客观性预测和条件类预测。因此,对于大多数例子来说,类预测没有损失吗?还是别的什么?我们不能完全确定。
  4、双IOU阈值和真值分配:在训练期间,Faster RCNN用了两个IOU阈值,如果预测的边框与0.7的ground truth重合,那它是个正面的结果;如果在[0.3—0.7]之间,则忽略;如果和0.3的ground truth重合,那它就是个负面的结果。我们尝试了这种思路,但效果并不好。我们对现在的更新状况很满意,它看起来已经是最佳状态。有些技术可能会产生更好的结果,但我们还需要对它们做一些调整来稳定训练。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLOV1算法是一种目标检测算法,它与传统的目标检测算法不同,采用了一阶段的端到端的方式进行目标检测。该算法将目标检测问题设计为回归问题,通过输入图片到一个神经网络中,输出得到物体的边界框和分类概率等信息。\[2\] 在改进的YOLOV1算法中,主干网络使用了ResNet50,并使用了pytorch框架的1.7.1版本。本文通过代码实现了改进的YOLOV1算法,并对代码中的函数进行了讲解和备注,以帮助读者更好地理解代码的含义。然而,本文只展示了部分代码,完整的代码可以通过GitHub进行下载。\[1\] 对于理解YOLOV1算法的一些细节,如bounding box的生成和如何确定哪个bounding box负责哪个grid cell等问题,有些地方可能在文字或视频讲解中难以理解。因此,通过下载相关代码并阅读代码,可以更进一步地了解YOLOV1算法的实现细节。\[3\] #### 引用[.reference_title] - *1* [YOLOV1(pytorch) 代码讲解](https://blog.csdn.net/ing100/article/details/125155065)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [YOLOv1学习笔记以及代码介绍](https://blog.csdn.net/weixin_45731018/article/details/127335775)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值