《吴恩达深度学习》04卷积神经网络(第3周 目标检测)

04. 卷积神经网络

第3周 目标检测

3.1 目标定位

  1. 什么是定位和检测?
    (1)图片分类
    在这里插入图片描述
    对给定图片进行标签预测
    (2)具有定位的分类
    在这里插入图片描述
    对给定图片进行标签预测,并将目标定位出来。
    (3)检测
    在这里插入图片描述
    图片中可能会有多个目标对象,甚至是多个类别的对象。
  2. 具有定位的分类
    在图像分类的基础上,使网络进一步增加4维输出: b x , b y , b w , b h b_x, b_y, b_w, b_h bx,by,bw,bh,其中 ( b x , b y ) (b_x, b_y) (bx,by)是目标框的中心。
  3. 定义目标标签
    (1)符号说明
    1-行人
    2-车辆
    3-摩托车
    4-背景
    (2)需要输出 b x , b y , b w , b h b_x, b_y, b_w, b_h bx,by,bw,bh和类标签(1-4)
    (3)定义输出 y y y
    y = [ P c b x b y b h b w c 1 c 2 c 3 ] y = \left[\begin{matrix} P_c\\ b_x \\ b_y\\ b_h\\ b_w\\ c_1\\ c_2\\ c_3\\ \end{matrix} \right] y=Pcbxbybhbwc1c2c3
    其中, P c = 1 P_c=1 Pc=1表示为目标,即分类1-3,且将目标类别对应的 c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3置为1, P c = 0 P_c=0 Pc=0表示为背景。
    (4)定义损失函数(简化版)
    L ( y ^ , y ) = { ( y ^ 1 − y 1 ) 2 + ( y ^ 2 − y 2 ) 2 + ⋯ + ( y ^ 8 − y 8 ) 2 y 1 = 1 ( y ^ 1 − y 1 ) 2 y 1 = 0 L(\hat{y}, y)=\begin{cases} (\hat{y}_1-y_1)^2+(\hat{y}_2-y_2)^2+\dots+(\hat{y}_8-y_8)^2 & y_1=1\\ (\hat{y}_1-y_1)^2 & y_1=0 \end{cases} L(y^,y)={(y^1y1)2+(y^2y2)2++(y^8y8)2(y^1y1)2y1=1y1=0
    (5)损失函数的变化
    可对目标框应用平方误差,对 P c P_c Pc应用逻辑回归函数。

3.2 特征点检测

  1. 特征点检测
    改造输出的结构,以实现对于目标特征点的检测。
  2. 定义的特征点对于所有的输入数据必须一致。

3.3 目标检测

  1. 车辆检测例子
    (1)训练集
    在这里插入图片描述
  2. 滑动窗口检测
    在这里插入图片描述
    逐次将窗口红框滑过图像的每个区域,并将窗口内的图像送入ConvNet,以检测是否有车辆。增大窗口大小,重复上述步骤。
    缺点:计算成本较高。

3.4 卷积的滑动窗口实现

  1. 将FC层转化为卷积层
    (1)网络结构示意
    在这里插入图片描述
    (2)修改后的网络结构
    在这里插入图片描述
  2. 滑动窗口的卷积实现
    (1)原始网络结构
    在这里插入图片描述
    假设测试数据大小为 16 × 16 × 3 16\times16\times3 16×16×3,示意图如下:
    在这里插入图片描述
    (2)修改后网络结构
    在这里插入图片描述
  3. 问题: 目标框的边界可能不准确。

3.5 边界框预测

  1. 输出准确的边界框
  2. YOLO算法:You Only Look Once
    (1)论文:Redmon et al. 2015. You Only Look Once: Unified real-time object detection.
    (2)输入:( 3 × 3 网 格 3\times3网格 3×3,通常实现时更精细,如 19 × 19 19\times19 19×19在这里插入图片描述
    (3)将前述图像定位算法应用到每个分格中。YOLO算法将目标分配给目标中心点所在分格。
    (4)目标输出: 3 × 3 × 8 3\times3\times8 3×3×8
  3. 并不是要算法在每个格子内进行重复计算,而是应用卷积实现同时进行。
  4. 边界框的具体实现
    (1)定义每个分格左上角为 ( 0 , 0 ) (0,0) (0,0),右下角为 ( 1 , 1 ) (1,1) (1,1)
    (2)根据中心点位置给出 ( b x , b y ) (b_x, b_y) (bx,by)
    (3)根据边界框大小,给出 ( b h , b w ) (b_h, b_w) (bh,bw)

3.6 交并比

  1. 用来评价目标检测算法
  2. 评价目标定位
    在这里插入图片描述
    (1)交并比函数(IoU)
    I o U = s i z e   o f   y e l l o w s i z e   o f   g r e e n IoU=\frac{size\space of\space yellow}{size\space of\space green} IoU=size of greensize of yellow
    (2)若 I o U ≥ 0.5 IoU\geq0.5 IoU0.5,则定位正确。(0.5是人为设定的阈值。)

3.7 非极大值抑制

  1. 非极大值抑制举例
    (1)示意图
    在这里插入图片描述
    (2)可能会有多个分格人为具有目标,如下:
    在这里插入图片描述
    (3)非极大值抑制用于处理多个检测结果。其基于输出的概率值。
  2. 非极大值抑制算法
    (1)在每个分格运行算法,得到输出:
    y ^ = [ p c b x b y b h b w ] \hat{y}=\left[\begin{matrix} p_c\\ b_x\\ b_y\\ b_h\\ b_w \end{matrix}\right] y^=pcbxbybhbw
    (2)去除全部 p c ≤ 0.6 p_c\leq0.6 pc0.6的边界框。
    (3)对于剩余的边界框重复如下步骤:
    a. 选择 p c p_c pc最大的边界框作为输出预测;
    b. 对于其余的边界框,计算和前一步输出边界框的 I o U IoU IoU,去除 I o U ≥ 0.5 IoU\geq0.5 IoU0.5的边界框。
  3. 对于多目标检测,可多次使用非最大值抑制进行去除边界框。

3.8 Anchor Boxes

  1. 重叠的目标
    (1)示意图
    在这里插入图片描述
    (2)定义2个Anchor Box(实际中可能会要5个以上)
    在这里插入图片描述
    (3)输出变为
    y = [ p c b x b y b h b w c 1 c 2 c 3 p c b x b y b h b w c 1 c 2 c 3 ] y=\left[\begin{matrix} p_c\\ b_x\\ b_y\\ b_h\\ b_w\\ c_1\\ c_2\\ c_3\\ p_c\\ b_x\\ b_y\\ b_h\\ b_w\\ c_1\\ c_2\\ c_3 \end{matrix}\right] y=pcbxbybhbwc1c2c3pcbxbybhbwc1c2c3
    其中前8维与第1个Anchor Box有关,后8维与第2个Anchor Box有关。
  2. Anchor box算法
    (1)之前
    训练图像中的每个目标分配至包含其中心点的分格中。
    (2)具有两个anchor boxes的方法
    训练图像的每个目标分配至包含目标中心点的分格,以及具有最高 I o U IoU IoU的anchor box。

3.9 YOLO算法

  1. 训练集
    在这里插入图片描述

    (1)假设需要检测三种目标:行人,车辆,摩托车。
    (2)假设使用2种anchor box,则输出为 3 × 3 × 2 × 8 3\times3\times2\times8 3×3×2×8(事实上输出的维度为 3 × 3 × 16 3\times3\times16 3×3×16)。

  2. 预测
    在这里插入图片描述

  3. 输出非最大抑制的输出值
    在这里插入图片描述
    (1)对于每个分格,得到2个预测的边界框。
    (2)得到低概率预测值。
    (3)对于每个类别,使用非最大抑制方法得到最终输出结果。

3.10 候选区域

  1. 本节内容在实践中使用频率不高。
  2. RCNN:Region CNN
    在这里插入图片描述
    (1)只在部分窗口中进行卷积算法。
    (2)参考文献:Girshik et. al. 2013. Rich feature hierarchies for accurate object detection and semantic segmentation.
    (3)首先进行图像分割
    在这里插入图片描述
  3. 更快的算法
    (1)R-CNN:提出区域,对于每个区域进行分类,输出标签和边界框。
    (2)Fast R-CNN:提出区域,对于所有区域使用卷积实现滑动窗口分类。
    (3)Faster R-CNN:使用卷积网络提出区域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值