基于keras的Yolov3最全详解

本文详细介绍了基于Keras的YOLOv3目标检测算法,涵盖了设计理念、网络结构、训练样本设置、损失函数计算等方面。通过对YOLOv3的深入探讨,读者将理解其多尺度预测、损失函数设计以及锚框机制。
摘要由CSDN通过智能技术生成
参考Github源码链接
Yolov3论文原文链接一,0二
Yolov3官网
最近在做Yolov3相关项目,看了很多资料。所以写一篇总结体会,以便以后回顾查询。

在这里插入图片描述
YOLO,即 You Only Look Once 的缩写,是一个基于卷积神经网络(CNN)的目标检测算法 。

yolo设计理念

yolo算法整体来说是采用CNN对目标进行end-to-end的检测。流程如图所示
在这里插入图片描述
具体来说(基于YOLOV3)

  1. 输入一张任意大小图片,保持长宽比不变的情况下,缩放至 w 或 h达到416,再覆盖在416 * 416的新图上,作为网络的输入。即网络的输入是一张416 * 416,3通道的RGB图。
  2. 运行网络。YOLO的CNN网络把图片分成 S * S 个网格(yolov3多尺度预测,输出3层,每层 S * S个网格,分别为13 * 13 ,26 * 26 ,52 * 52),然后每个单元格负责去检测那些中心点落在该格子内的目标,如图二所示。 每个单元格需要预测3*(4+1+B)个值。如果将输入图片划分为 SS 网格,那么每层最终预测值为 SS3(4+1+B) 大小的张量。类别数(coco集为80类),即B=80. 3 为每层anchorbox数量,4 为边界框大小和位置(x , y , w ,h )1 为置信度。
  3. 通过NMS,非极大值抑制,筛选出框boxes,输出框class_boxes和置信度class_box_scores,再生成类别信息classes,生成最终的检测数据框,并返回

Yolov3网络结构图

在这里插入图片描述

下面讲一下训练样本的设置和loss的计算。

在这里插入图片描述

训练样本设置

参考上面图2,对于一个输入图像,比如4164163,相应的会输出 13133 + 26263 + 52523 = 10647 个预测框。我们希望这些预测框的信息能够尽量准确的反应出哪些位置存在对象,是哪种对象,其边框位置在哪里。

在设置标签y(10647个预测框 * (4+1+类别数) 张量)的时候,YOLO的设计思路是,对于输入图像中的每个对象,该对象实际边框(groud truth)的中心落在哪个网格,就由该网格负责预测该对象。不过,由于设计了3种不同大小的尺度,每个网格又有3个先验框,所以对于一个对象中心点,可以对应9个先验框。但最终只选择与实际边框IOU最大的那个先验框负责预测该对象(该先验框的置信度=1),所有其它先验框都不负责预测该对象(置信度=0)。同时,该先验框所在的输出向量中,边框位置设置为对象实际边框,以及该对象类型设置为1。

loss计算

loss主要有3个部分,置信度、边框位置、对象类型。

首先需要注意的还是置信度的问题。上面说到对于一个实际对象,除了与它IOU最大的那个先验框其置信度设为1,其它先验框的置信度都是0。但是,还有一些先验框与该对象实际边框位置是比较接近的,它们依然有可能检测到该对象,只不过并非最接近实际边框。所以,这部分边框的目标置信度不应该期望输出0。但YOLO也不希望它们输出1。所以,在计算loss的时候,就设置一个IOU阈值&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值