Deep Learning Specialization 4: Convolutional Neural Networks - Week3 - Object Detection

Object Detection

深度学习的繁荣离不开大量的研究人员开发了更多更高效的算法,这一周的课程学几个小时就为了能讲清楚一篇YOLO在干什么。用的组件太多,技术就变成魔法了。

1. 问题定义

Image classification: 判断图像中有某个物体

Object Localization - Classification with localization: 判断图像在图片中,并标记出位置(矩形区域)1

在这里插入图片描述

Localization - Bounding Box ( b x , b y , b h , b w b_x, b_y, b_h, b_w bx,by,bh,bw)

其中, ( b x , b y ) (b_x, b_y) (bx,by)是矩形的中心区域, b h b_h bh b w b_w bw是高、宽在图像中的占比(不是绝对值)

目标检测的标注 Softmax + Bounding Box
y = [ P c b x b y b h b w c 1 c 2 c 3 c 4 ] y 1 = [ 1 b x b y b h b w 0 1 0 0 ] y 0 = [ 0 ? ? ? ? ? ? ? ? ] y = \begin{bmatrix} P_c\\ b_x\\ b_y\\ b_h \\ b_w \\ c_1 \\ c_2 \\ c_3 \\ c_4 \end{bmatrix} y_1 = \begin{bmatrix} 1\\ b_x\\ b_y\\ b_h \\ b_w \\ 0 \\ 1 \\ 0 \\ 0 \end{bmatrix} y_0 = \begin{bmatrix} 0\\ ?\\ ?\\ ? \\ ? \\ ? \\ ? \\ ? \\ ? \end{bmatrix} y=Pcbxbybhbwc1c2c3c4y1=1bxbybhbw0100y0=0????????

P c P_c Pc表示图像中有物体, c 1 . . . c 4 c_1...c_4 c1...c4表示要探测的4类对象,当 P c = 0 P_c = 0 Pc=0时其它内容就都不关注了。

Loss (其中一种)
L ( y ^ , y ) = { ( y 1 ^ − y 1 ) 2 + . . . + ( y n ^ − y n ) 2 p c = 1 ( y 1 ^ − y 1 ) 2 p c = 0 \mathcal{L}(\hat{y}, y) = \left\{\begin{matrix} (\hat{y_1} - y_1)^2 + ... + (\hat{y_n}-y_n)^2 & p_c = 1 \\ (\hat{y_1} - y_1)^2 & p_c = 0 \end{matrix}\right. L(y^,y)={(y1^y1)2+...+(yn^yn)2(y1^y1)2pc=1pc=0

2. 目标检测算法(YOLO)

其实也就是介绍了YOLO的原理。

2.1 Sliding windows detection

  1. 方法非常直接:使用滑动窗口在图像上移动,并依次放到ConvNet中进行判断
  2. 使用多个不同的步长可能能够提高性能(效果)
  3. 计算代价比较高

2.2 Convolutional Implementation of Sliding Windows

核心算法:降低目标检测复杂度的重要算法,让实时检测成为可能。

  1. 将全连接层转换成卷积层
  2. 卷积的滑动过程与目标检测的滑动过程是可以统一的
2.2.1 Turning FC Layer into convolutional layers

分类中的全连接层:上一层 5 × 5 × 16 5\times5\times16 5×5×16直接连接一个 400 × 1 400\times1 400×1的全连接层

卷积实现:上一层 5 × 5 × 16 5\times5\times16 5×5×16连接一个 5 × 5 5\times5 5×5的filter 400个,得到 1 × 1 × 400 1\times1\times400 1×1×400的“全连接层”,再应用 1 × 1 1\times1 1×1 filter 400个。注意这里其实是与全连接层的计算是等价的。

在这里插入图片描述

2.2.2 Convolution implementation of sliding windows

有了全连接层的卷积实现,再进一步得到滑动窗口的卷积实现(卷积操作本身就是一个滑动窗口移动的过程),具体地:

  • 滑动窗口的大小就是filter的大小
  • stride就是MAX POOL的大小

注意下图中 16 × 16 × 3 16 \times 16 \times 3 16×16×3的图像在 14 × 14 × 3 14 \times 14 \times 3 14×14×3的窗口滑动下是如何变成最右边对应的左上角元素的。

在这里插入图片描述

这里解决了核心大头问题,接下来还有一些工作可以继续提高效果

2.3 Bounding Box Predictions

在全局标注的基础上将问题进行了切割

  1. 将问题切分成网格(比如 3 × 3 3 \times 3 3×3),对于每一个网格进行标注(变成了9个标注)
  2. ( b h , b w ) (b_h, b_w) (bh,bw) ( b x , b y ) (b_x, b_y) (bx,by)的标注都是以网格单元为基础的,并且 ( b h , b w ) (b_h, b_w) (bh,bw)是可以大于1的(越过网格边界)
  3. 只将物体中心 ( b x , b y ) (b_x, b_y) (bx,by)所在的格子标记为1

2.4 Anchor Boxes

对于目标应用不同的Anchor Box,能更好的区分重叠的不同形状的目标。此时标注也会发生相应变化,比如下面是两个anchor box:
y = [ P c b x b y b h b w c 1 c 2 c 3 c 4 P c b x b y b h b w c 1 c 2 c 3 c 4 ] ⇒ [ 0 ? ? ? ? ? ? ? ? 1 b x b y b h b w 0 1 0 0 ] y = \begin{bmatrix} P_c\\ b_x\\ b_y\\ b_h \\ b_w \\ c_1 \\ c_2 \\ c_3 \\ c_4 \\ P_c\\ b_x\\ b_y\\ b_h \\ b_w \\ c_1 \\ c_2 \\ c_3 \\ c_4 \end{bmatrix} \Rightarrow \begin{bmatrix} 0\\ ?\\ ?\\ ? \\ ? \\ ? \\ ? \\ ? \\ ? \\ 1 \\ b_x\\ b_y\\ b_h \\ b_w \\ 0 \\ 1 \\ 0 \\ 0 \end{bmatrix} y=Pcbxbybhbwc1c2c3c4Pcbxbybhbwc1c2c3c40????????1bxbybhbw0100

2.5 评价指标 Intersection over Union (IoU)2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mR5YPTk4-1572760536625)(evernotecid://3AE75992-3E67-4628-8ACC-2F41C6246321/appyinxiangcom/2727652/ENResource/p1619)]

2.6 Non-max suppression

重叠的检测结果(以概率最大的为标准)中只取IoU最大的,下面是算法流程,很直观。

Each output prediction is:
y = [ P c b x b y b h b w ] y = \begin{bmatrix} P_c\\ b_x\\ b_y\\ b_h \\ b_w \end{bmatrix} y=Pcbxbybhbw
Discard all boxes with P c ≤ 0.6 P_c \le 0.6 Pc0.6

While there are any remaining boxes:

  • Pick the box with largest P c P_c Pc, output that as a prediction
  • Discard any remaining box with IoU ≥ 0.5 \ge 0.5 0.5 with the box output in the previous step

2.7 YOLO Algorithm

把上面的组件合在一起,就是YOLO了。具体地,如果在 3 × 3 3 \times 3 3×3的网格上用2个anchor box对4个分类的预测结果大小应该是 3 × 3 × 2 × 9 3 \times 3 \times 2 \times 9 3×3×2×9


  1. a 其它图片均来自课程,侵删 ↩︎

  2. Intersection over Union (IoU) for object detection ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值