目标检测网络之 YOLOv3

目标检测网络之 YOLOv3

        </h1>
        <div class="clear"></div>
        <div class="postBody">

yolo-idea

yolo-idea

本文逐步介绍YOLO v1~v3的设计历程。

YOLOv1基本思想

YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这个物体。

yolo-grid-predict

yolo-grid-predict

每个格子预测B个bounding box及其置信度(confidence score),以及C个类别概率。bbox信息(x,y,w,h)为物体的中心位置相对格子位置的偏移及宽度和高度,均被归一化.置信度反映是否包含物体以及包含物体情况下位置的准确性,定义为Pr(Object)×IOUtruthpred,Pr(Object){0,1}Pr(Object)×IOUpredtruth,其中Pr(Object)∈{0,1}.

优缺点

优点

  • 快速,pipline简单.
  • 背景误检率低。
  • 通用性强。YOLO对于艺术类作品中的物体检测同样适用。它对非自然图像物体的检测率远远高于DPM和RCNN系列检测方法。

但相比RCNN系列物体检测方法,YOLO具有以下缺点:

  • 识别物体位置精准性差。
  • 召回率低。在每个网格中预测固定数量的bbox这种约束方式减少了候选框的数量。

YOLO v.s. Faster R-CNN

  1. 统一网络:
    YOLO没有显示求取region proposal的过程。Faster R-CNN中尽管RPN与fast rcnn共享卷积层,但是在模型训练过程中,需要反复训练RPN网络和fast rcnn网络.
    相对于R-CNN系列的"看两眼"(候选框提取与分类,图示如下),YOLO只需要Look Once.
  2. YOLO统一为一个回归问题
    而R-CNN将检测结果分为两部分求解:物体类别(分类问题),物体位置即bounding box(回归问题)。

R-CNN pipline

R-CNN pipline


Darknet 框架

Darknet 由 C 语言和 CUDA 实现, 对GPU显存利用效率较高(CPU速度差一些, 通过与SSD的Caffe程序对比发现存在CPU较慢,GPU较快的情况). Darknet 对第三方库的依赖较少,且仅使用了少量GNU linux平台C接口,因此很容易移植到其它平台,如Windows或嵌入式设备.
参考Windows 版 Darknet (YOLOv2) 移植, 代码在此.

region层:参数anchors指定kmeans计算出来的anchor box的长宽的绝对值(与网络输入大小相关),num参数为anchor box的数量,
另外还有bias_match,classes,coords等参数.在parser.c代码中的parse_region函数中解析这些参数,并保存在region_layer.num参数保存在l.n变量中;anchors保存在l.biases数组中.region_layer的前向传播中使用for(n = 0; n < l.n; ++n)这样的语句,因此,如果在配置文件中anchors的数量大于num时,仅使用前num个,小于时内存越界.

region层的输入和输出大小与前一层(1x1 conv)的输出大小和网络的输入大小相关.

Detection层: 坐标及类别结果输出层.

yolo层: 指定anchors等信息, 计算loss等. YOLOv3使用三个yolo层作为输出.

upsample层: 上采样层, 进行2倍上采样.

region层和Detection层均是YOLOv2模型所使用的层, upsample层和yolo层在YOLOv3中使用.

鉴于 Darknet 作者率性的代码风格, 将它作为我们自己的开发框架并非是一个好的选择. 可以在我们更为熟悉的Caffe等框架中复现YOLO网络. 这里有一份Caffe版YOLOv3实现(仅部署,不能训练), 另可参照其它框架的可训练代码.


参考

原文: https://www.cnblogs.com/makefile/p/YOLOv3.html © 康行天下
分类: 深度学习
<div id="blog_post_info">
18
0
<div class="clear"></div>
<div id="post_next_prev">

<a href="https://www.cnblogs.com/makefile/p/GAN.html" class="p_n_p_prefix">« </a> 上一篇:    <a href="https://www.cnblogs.com/makefile/p/GAN.html" title="发布于 2018-03-23 11:30">生成式模型之 GAN</a>
<br>
<a href="https://www.cnblogs.com/makefile/p/metrics-mAP.html" class="p_n_p_prefix">» </a> 下一篇:    <a href="https://www.cnblogs.com/makefile/p/metrics-mAP.html" title="发布于 2018-04-02 21:15">目标检测评价指标(mAP)</a>
posted @ 2018-03-24 18:19  康行天下 阅读( 128962) 评论( 28) 编辑 收藏
</div><!--end: topics 文章、评论容器-->

  
			</div>

#1楼

2018-03-27 15:31

        <a id="a_comment_author_3934846" href="https://home.cnblogs.com/u/1350827/" target="_blank">jiahcen</a>

		</div>
		<div class="feedbackCon">
厉害了。。。
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#2楼

[楼主]

2018-03-27 15:33

        <a id="a_comment_author_3934849" href="https://www.cnblogs.com/makefile/" target="_blank">康行天下</a>

		</div>
		<div class="feedbackCon">
@ jiahcen
。。。我的国
https://pic.cnblogs.com/face/606386/20161018214555.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#3楼

2018-04-03 09:55

        <a id="a_comment_author_3941024" href="https://home.cnblogs.com/u/1214055/" target="_blank">成了</a>

		</div>
		<div class="feedbackCon">
请问YOLOv3最后输出那些尺度的框?
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#4楼

[楼主]

2018-04-03 10:51

        <a id="a_comment_author_3941096" href="https://www.cnblogs.com/makefile/" target="_blank">康行天下</a>

		</div>
		<div class="feedbackCon">
@ 成了
应该是所有尺度的框合并后nms,输出score较高的框
https://pic.cnblogs.com/face/606386/20161018214555.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#5楼

2018-07-27 15:19

        <a id="a_comment_author_4030267" href="https://www.cnblogs.com/liuzhongfeng/" target="_blank">liurio</a>

		</div>
		<div class="feedbackCon">
总结的很好啊
https://pic.cnblogs.com/face/861394/20160413212251.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#6楼

2018-10-10 14:22

        <a id="a_comment_author_4085500" href="https://home.cnblogs.com/u/1434051/" target="_blank">JoeJo</a>

		</div>
		<div class="feedbackCon">
文章看过两次,之前是草草看过觉得图文配置特别好容易理解。
今天第二遍,发现内容很细致,很多细节都讲得很清楚,很棒的文章
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#7楼

2018-10-11 10:19

        <a id="a_comment_author_4086348" href="https://home.cnblogs.com/u/1507720/" target="_blank">20181010</a>

		</div>
		<div class="feedbackCon">
很受用
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#8楼

2018-11-07 15:26

        <a id="a_comment_author_4108799" href="https://www.cnblogs.com/defineconst/" target="_blank">咸鱼翻身</a>

		</div>
		<div class="feedbackCon">
卫星影像使用YOLO V3,对原始文件需要拆分吗?
https://pic.cnblogs.com/face/u37018.jpg
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#9楼

[楼主]

2018-11-07 15:33

        <a id="a_comment_author_4108810" href="https://www.cnblogs.com/makefile/" target="_blank">康行天下</a>

		</div>
		<div class="feedbackCon">
@ 咸鱼翻身
如果图像大而目标小,是需要对图片进行划分成小图片的
https://pic.cnblogs.com/face/606386/20161018214555.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#10楼

2019-03-10 01:12

        <a id="a_comment_author_4197952" href="https://home.cnblogs.com/u/1360567/" target="_blank">馒头mjtb</a>

		</div>
		<div class="feedbackCon">
请问YOLOv3的3个Scale的检测图(13×13,26×26,52×52)是怎么检测物体的?
如果一张图片有一辆车和一个人,哪个检测图负责检测车?哪个检测图负责检测人?
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#11楼

2019-03-10 01:12

        <a id="a_comment_author_4197953" href="https://home.cnblogs.com/u/1360567/" target="_blank">馒头mjtb</a>

		</div>
		<div class="feedbackCon">
I was wondering which one of the Three Detection Map(13*13, 26*26, 52*52) should responsible for predicting a object(i.e a Car) in a picture?

according to the labeled bonding box size of the car and the anchor size in the [yolo] layer?
If all the detection maps predict the car, how to combine the three output?
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#12楼

[楼主]

2019-03-10 20:03

        <a id="a_comment_author_4198372" href="https://www.cnblogs.com/makefile/" target="_blank">康行天下</a>

		</div>
		<div class="feedbackCon">
@ 馒头mjtb
这里不同尺度的特征图都检测用来检测所有的类别,没有对类别按大小区分,而是对anchor按大小划分到不同的特征,类似FPN与SSD。
https://pic.cnblogs.com/face/606386/20161018214555.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#13楼

2019-03-10 20:14

        <a id="a_comment_author_4198376" href="https://home.cnblogs.com/u/1360567/" target="_blank">馒头mjtb</a>

		</div>
		<div class="feedbackCon">
@ 康行天下
13×13的检测图分配大的anchor,小分辨率的特征图语义信息强;52×52的特征图分配小的anhor,大分辨率的特征图,位置信息强,但是我不明白13×13的检测特征图怎么和52×52的检测特征图合作啊?

方便详细一点的解释吗,举一个例子可以吧
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#14楼

[楼主]

2019-03-10 20:20

        <a id="a_comment_author_4198383" href="https://www.cnblogs.com/makefile/" target="_blank">康行天下</a>

		</div>
		<div class="feedbackCon">
@ 馒头mjtb
在anchor分配之后,小目标就由大特征图上进行学习产生了,大目标在小特征图上,这就是一种分工合作啊。
https://pic.cnblogs.com/face/606386/20161018214555.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#15楼

2019-03-10 20:35

        <a id="a_comment_author_4198389" href="https://home.cnblogs.com/u/1360567/" target="_blank">馒头mjtb</a>

		</div>
		<div class="feedbackCon">
@ 康行天下
这样理解对吧:在anchor分配之后,小的目标也可以会被小的特征图学习,可能学习起来比较慢,possibility也会很小,可能都达不到0.25的阈值;大目标大的检测图学习也一样
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#16楼

[楼主]

2019-03-10 20:42

        <a id="a_comment_author_4198391" href="https://www.cnblogs.com/makefile/" target="_blank">康行天下</a>

		</div>
		<div class="feedbackCon">
@ 馒头mjtb
嗯,对
https://pic.cnblogs.com/face/606386/20161018214555.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#17楼

2019-04-17 19:12

        <a id="a_comment_author_4233704" href="https://home.cnblogs.com/u/1586532/" target="_blank">Reminding</a>

		</div>
		<div class="feedbackCon">
博主你好,能不能用下你的图片,做ppt使用
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#18楼

[楼主]

2019-04-17 19:15

        <a id="a_comment_author_4233705" href="https://www.cnblogs.com/makefile/" target="_blank">康行天下</a>

		</div>
		<div class="feedbackCon">
@ Reminding
可以,图片也不全是我的
https://pic.cnblogs.com/face/606386/20161018214555.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#19楼

2019-04-17 19:15

        <a id="a_comment_author_4233708" href="https://home.cnblogs.com/u/1586532/" target="_blank">Reminding</a>

		</div>
		<div class="feedbackCon">
@ 康行天下
谢谢!
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#20楼

2019-04-17 20:20

        <a id="a_comment_author_4233766" href="https://home.cnblogs.com/u/1586532/" target="_blank">Reminding</a>

		</div>
		<div class="feedbackCon">
博主你好,还有其他问题请教,不知道方不方便加个微信或qq
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#21楼

2019-07-22 18:30

        <a id="a_comment_author_4306400" href="https://home.cnblogs.com/u/962771/" target="_blank">水翼lv</a>

		</div>
		<div class="feedbackCon">
写得很棒~加油
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#22楼

[楼主]

2019-07-24 09:00

        <a id="a_comment_author_4307527" href="https://www.cnblogs.com/makefile/" target="_blank">康行天下</a>

		</div>
		<div class="feedbackCon">
@ 水翼lv
谢谢!
https://pic.cnblogs.com/face/606386/20161018214555.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#23楼

2019-07-25 17:49

        <a id="a_comment_author_4308998" href="https://home.cnblogs.com/u/1301932/" target="_blank">唐康</a>

		</div>
		<div class="feedbackCon">
感觉是最棒的YOLO解读文章了~ 配合着darknet项目源代码和配置文件看的,理解得很透彻。
感谢作者!
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#24楼

[楼主]

2019-07-30 11:14

        <a id="a_comment_author_4312214" href="https://www.cnblogs.com/makefile/" target="_blank">康行天下</a>

		</div>
		<div class="feedbackCon">
@ 唐康
过誉了!
https://pic.cnblogs.com/face/606386/20161018214555.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#25楼

2019-08-23 15:22

        <a id="a_comment_author_4335028" href="https://www.cnblogs.com/sdu20112013/" target="_blank">core!</a>

		</div>
		<div class="feedbackCon">
算loss的时候confidence score 的groud-truth是怎么算的 某个目标的中心落在了某个cell 相应的confidence的真值就是1 没落在真值就是0?
https://pic.cnblogs.com/face/583030/20181201135834.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#26楼

2019-08-23 15:47

        <a id="a_comment_author_4335072" href="https://www.cnblogs.com/sdu20112013/" target="_blank">core!</a>

		</div>
		<div class="feedbackCon">
若采用相同的权值,那么不包含物体的格子的confidence值近似为0,变相放大了包含物体的格子的confidence误差在计算网络参数梯度时的影响。为解决这个问题,YOLO 使用𝜆𝜆𝜆𝜆𝜆𝜆=0.5修正iouErr。

这里博主能不能详细解释一下为什么会变相放大包含物体的grid的confidence loss的影响? 对没有目标的grid使用了更低的权重(0.5)以后,不更使得包含物体的grid的confidence loss影响更大了吗
https://pic.cnblogs.com/face/583030/20181201135834.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#27楼

[楼主]

2019-09-12 17:09

        <a id="a_comment_author_4353582" href="https://www.cnblogs.com/makefile/" target="_blank">康行天下</a>

		</div>
		<div class="feedbackCon">
@ sdu20112013
引用
算loss的时候confidence score 的groud-truth是怎么算的 某个目标的中心落在了某个cell 相应的confidence的真值就是1 没落在真值就是0?

我理解的是这样的,只有中心点所在的cell的值为1,其他为0
https://pic.cnblogs.com/face/606386/20161018214555.png
		</div>
	</div>
	<div class="feedbackItem">
		<div class="feedbackListSubtitle">
			<div class="feedbackManage">
				&nbsp;&nbsp;
			</div>

#28楼

[楼主]
4353607
2019/9/12 下午5:23:22

2019-09-12 17:23

        <a id="a_comment_author_4353607" href="https://www.cnblogs.com/makefile/" target="_blank">康行天下</a>

		</div>
		<div class="feedbackCon">
@ sdu20112013
引用
若采用相同的权值,那么不包含物体的格子的confidence值近似为0,变相放大了包含物体的格子的confidence误差在计算网络参数梯度时的影响。为解决这个问题,YOLO 使用𝜆𝜆𝜆𝜆𝜆𝜆=0.5修正iouErr。

这里博主能不能详细解释一下为什么会变相放大包含物体的grid的confidence loss的影响? 对没有目标的grid使用了更低的权重(0.5)以后,不更使得包含物体的grid的confidence loss影响更大了吗

可以理解成样本不平衡问题,不含目标中心的格子数远多于含目标中心的格子数,这样即使不含目标中心的格子的损失很小,积少成多也会盖过含目标中心的格子的损失值的影响,优化时更应该关注含目标中心的格子带来的损失。另可以参考FocalLoss的思想。
https://pic.cnblogs.com/face/606386/20161018214555.png
		</div>
	</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》,课程链接 https://edu.csdn.net/course/detail/29865【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来!  代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《YOLOv4目标检测实战:训练自己的数据集》《YOLOv4-tiny目标检测实战:训练自己的数据集》《YOLOv4目标检测实战:人脸口罩佩戴检测》《YOLOv4目标检测实战:中国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值