目标检测算法YOLO3论文解读

目标检测算法YOLO3论文解读论文题目:YOLOv3:AnIncrementalImprovement论文地址:https://arxiv.org/abs/1804.02767代码地址:https://github.com/aloyschen/tensorflow-yolo3一、论文解读1、boundingboxprediction(边界框预测)YOLO2预测boundingboxes是使…

大家好,又见面了,我是你们的朋友全栈君。

论文题目:YOLOv3: An Incremental Improvement

论文地址:https://arxiv.org/abs/1804.02767

代码地址:https://github.com/aloyschen/tensorflow-yolo3

 

一、论文解读

1、bounding box prediction(边界框预测)

YOLO2预测bounding boxes是使用anchor boxes,这个网络为每个bounding box预测了4个坐标:tx、ty、tw、th,用(cx,cy)表示当前网格左上角坐标偏移图像左上角坐标的距离,用pw,ph表示先验框(piror)的宽和高,可以得到下面式子:

目标检测算法YOLO3论文解读        目标检测算法YOLO3论文解读

在训练期间,使用平方和误差(sum of squared error loss)。真值用目标检测算法YOLO3论文解读表示,梯度就是真值减去预测值:目标检测算法YOLO3论文解读

YOLO3用logistic regression为每个bounding box预测一个分数。算法只为每个真值匹配一个最优的先验框。

 

2、多标签预测

每个bounding box可能含有多类物体,也就是多标签预测。所以用logistic(sigmoid)代替softmax,因为softmax表示每个框只有一类对象,而sigmoid可以预测多标签分类那么如何用sigmoid来做多标签分类呢?其实就是针对logits中每个分类计算的结果分别作用一个sigmoid分类器,分别判定样本是否属于某个类别。在训练期间,使用二元交叉熵损失函数进行类别预测。

sigmoid多标签预测参考博客:https://blog.csdn.net/qq_32172681/article/details/97936956

 

3、结合不同卷积层的特征,提取更细粒度的信息,做多尺度预测

YOLO3用3个不同的尺度预测boxes,网络采用类似特征金字塔的概念,从不同的尺度提取特征。在原先的基本特征提取器上新增了几个卷积层,最后用一个3维的张量表示bounding box、objectness和class predictions。在COCO中,在每个尺度上预测3个boxes,因此张量为N*N*[3*(4+1+80)],分别对应4个bounding boxes、1个objectness prediction和80个class predictions。接下来,从前面的两个图层中提取特征图,并将其向上采样2倍。从早期的网络中获取一个特征图,并使用串联将其与上采样特征合并。这种方法允许我们从上采样的特性中获得更有意义的语义信息,并从早期的特性图中获得更细粒度的信息。然后再添加一些卷积层来处理这个组合的特征图,并最终预测一个类似的张量,尽管现在的大小是原来的两倍。再次执行相同的设计,以预测最终框的尺寸。在过去,YOLO难以预测小的物体,现在通过多尺度预测,明显改善。

 

4、网络结构(DarkNet53 = Darknet19 + ResNet

  • 结合残差思想,提取更深层次的语义信息。
  • 仍然使用连续的3×3和1×1的卷积层。
  • 通过上采样对三个不同尺度做预测。如将8*8的特征图上采样和16*16的特征图相加再次计算,这样可以预测出更小的物体。
  • 采用了步长为2的卷积层代替pooling层,因为池化层会丢失信息。

如图所示:

目标检测算法YOLO3论文解读

 

5、预测更多目标

YOLO3仍然使用k-均值聚类来确定模板框,为每个网格预测9个bounding boxes(YOLO2只有5个、YOLO1只有2个),这样可以提高recall。

 

6、损失函数

在训练期间,使用二元交叉熵损失函数进行类别预测。YOLO v2损失函数的后三项是平方误差,而YOLO v3则更改为交叉熵误差项,也就是说YOLO v3的物品置信度和分离预测使用的是逻辑回归算法。

 

二、代码理解

1、构造残差块

 

2、darknet53网络结构,用于提取特征(使用了残差块)

目标检测算法YOLO3论文解读

3、yolo块(图中Convs)

yolo3在Darknet53提取的特征层基础上,又加了针对3种不同比例的feature map的block,这样来提高对小物体的检测率

目标检测算法YOLO3论文解读

目标检测算法YOLO3论文解读

4、构造yolo3模型结构,输出三种尺度的卷积层(conv2d_59, conv2d_67, conv2d_75)

目标检测算法YOLO3论文解读

5、目标检测模块,输出预测结果x,y,w,h,confidence,class_prob

根据不同大小的feature map做多尺度的检测(三种feature map大小分别为13x13x255, 26x26x255, 52x52x255)

目标检测算法YOLO3论文解读

6、之前输入图像时,按照长宽比缩放,对图像进行了填充,此处对box的坐标进行修正

目标检测算法YOLO3论文解读

7、损失函数(共4部分:框位置xy,wh,置信度confidence,类别class)

目标检测算法YOLO3论文解读

目标检测算法YOLO3论文解读

8、k-mean聚类算法(用于生成模版框)

目标检测算法YOLO3论文解读

9、对三个不同尺度的输出做非极大值抑制,得到最后物体检测框和预测类别

目标检测算法YOLO3论文解读

10、计算mAP,评价模型

目标检测算法YOLO3论文解读

目标检测算法YOLO3论文解读

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150540.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • PB AcceptText()函数

    PB AcceptText()函数文章来源:https://bbs.csdn.net/topics/380140428此文章解释的很清楚,以下博文仅用于记录AcceptText()功能将“漂浮”在数据窗口控件上编辑框的内容放入到数据窗口控件的当前项中(主缓区中)。在将数据放入到当前项之前,编辑框中的数据必须通过有效性规则检查语法dwcontrol.AcceptText()参数dwcontrol:数…

  • 解决Windows update medic service服务禁用不了拒绝访问

    解决Windows update medic service服务禁用不了拒绝访问1、首先使用Win+R组合快捷键,打开运行对话框,然后输入命令regedit,点击下方的“确定”打开服务,如下图所示。2、在注册表设置中,找到并定位到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc”右侧找到“Start”键,右键点击“修改”,将数值改为“4”3、再找到“FailureAct…

  • python flask-mail 实现qq发送邮件[通俗易懂]

    python flask-mail 实现qq发送邮件

  • 点菜宝基站信道设置_点菜宝怎么连接基站

    点菜宝基站信道设置_点菜宝怎么连接基站最近在跟菜鸟天地系统对接,业务中涉及到单点接入,感觉其实现思想很不错,现分享一下,供大家参考:从CP内部系统进入菜鸟天地,也就是从菜鸟的合作伙伴(物流或快递公司内部系统)单点跳转进入菜鸟天地系统红

  • pytest的assert_assert中文

    pytest的assert_assert中文前言断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试failed

  • 产品经理面试题整理

    产品经理面试题整理凡事“预则立,不预则费”。即使你有丰富的产品经验,在面试那种紧张的环境下要面试好也不是一件易事,因为在那种环境下,你要对面试官提出的问题快速反映,快速组织语言,而你又没有经常训练这种能力,想回答好还是很不容易的,如果你经常背一些产品经理的面试题,那你回答的时候就流畅多了,下面将一些常见的产品经理面试题整理下来,需要的小伙伴拿去。下面我们先看看都有什么问题吧以下是上面的问题的具体解析,可能不全面,欢迎大家补充1、介绍一下你自己介绍一下自己的姓名,年龄、毕业院校,工作…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号