关于one-stage目标检测方法的详细解析(一)

目录

 

前言

关于目标检测

为什么目标检测问题这么复杂

关于grid

约束确实有效

Anchors

模型到底是如何工作的

宽高计算

目标框中心坐标计算

都是卷积的功劳

YOLO SSD 大PK!


前言

前一阵子看到了一遍关于one-stage目标检测的英文博客,感觉醍醐灌顶,讲的非常详细又好:http://machinethink.net/blog/object-detection/

为了加深一下印象,我决定用自己的话把文章里的内容重新阐述一遍,如果有错误的地方欢迎指正!

关于目标检测

目标检测不同于分类,它其实包含了两个问题:

⒈ 目标在哪(位置)

⒉ 这个目标是什么(分类)

按照这两个问题可以把目标检测分为两大类,two-stage和one-stage目标检测方法。

Two-stage目标检测

比如Faster R-CNN,会先生成一些候选区域(region proposals),这些区域有可能会包含一个待检测目标(定位),紧接着再采取一些后续措施来区分每个候选区域里具体包含了那些目标(分类)。

One-stage 目标检测

比如YOLO, SSD, SqueezeDet, 和DetectNet,通过一遍网络得出目标的位置和类别信息。这样和two-stage相比,可以预见到检测速度会快很多。

本文将对one-stage目标检测做一个系统的介绍。

为什么目标检测问题这么复杂

通常来说,图像分类只能产生一个输出结果,这个结果会告诉你这张图像归属于哪种类别,比如下面这张图:

图像分类可以告诉你这是一张关于猫的图像或者这是一张关于狗的图像,但是无法区分到底是猫还是狗,只能告诉你是哪个类别的可能性更高(其实这张图里面既有猫又含有狗)。而对于一个目标检测器来说,它能准确的把这两种类别区分开,并能告诉你每个类别的物体具体位置在哪里:

因为目标检测的分类器只要专注于对目标框内部的东西做分类,而不需要关心目标框的外部干扰信息,通常可以给出每个目标非常准确的分类信息。

因此,模型现在能够产生两个输出结果:

⒈ bounding box的回归结果

⒉ 可能的类别分布结果

正因为目标检测永远离不开位置和分类两个信息,通常损失函数中也会包含这两部分的损失计算:位置损失和分类损失。假定位置损失我们用MSE,分类损失我们用交叉熵,那可能计算损失的过程会是这样的:

outputs = model.forward_pass(image)
class_pred = outputs[0]
bbox_pred = outputs[1]
class_loss = cross_entropy_loss(class_pred, class_true)
bbox_loss = mse_loss(bbox_pred, bbox_true)
loss = class_loss + bbox_loss
optimize(loss)

有了损失之后,就可以用随机梯度下降来训练优化你的网络模型了。你的网络模型训练好了之后,可能得出了蓝色的检测结果,虽然没有和红色的ground truth完全吻合,但是非常接近了。

但是还是有点问题,如果我们的网络只输出一个bounding box,并且图像中只有一个待检测目标,那可能这个检测结果会蛮好的,但是如果图片里面有很多的待检测目标,比如像下面这张图中有两匹马,那问题可能就暴露出来了:

这张图里面有两匹马,如果你的网络只能输出一个bounding box结果,那很有可能会是中间的那个黄色框,为什么会这样呢?因为你的网络只能输出一个目标框,但是图像中含有两个目标,这样网络就会非常为难,因为他不知道应该检测左边的马还是右边的马,这样网络经过训练后很有可能会采取一个折中的办法,得到中间黄色框的检测结果。可能你会说,那为什么不会得出一个大的检测框包含这两匹马,因为事实上我们的ground truth在标注的时候都是针对于单个物体的,那么网络经过训练后,输出的结果自然就会倾向于单个物体的bounding box而不是N多物体的。

有一种解决办法就是让网络多输出几个bounding boxes,每个bounding box对应着一个目标,那也许问题就解决了。然而,现实并不是这样的...比如下面这张图:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值