吴恩达深度学习L4W3目标检测

目录

1、目标定位

2、特征点检测

3、目标检测

4、IoU(Intersection over union)

5、非极大值抑制(Non-max suppression)

6、Anchor Boxes

7、语义分割(Semantic Segmentation)

8、转置卷积(transposed convolution)或反卷积(deconvolution)

9、上采样和下采样

上采样


1、目标定位

图片分类—>目标定位—>目标检测

图片分类:例如,输入一张图片到多层卷积神经网络。它会输出一个特征向量,并反馈给 softmax 单元来预测图片类型。

目标定位:相比于分类问题,让神经网络多输出几个单元,输出一个边界框。具体说就是让神经网络再多输出 4 个数字,标 记为,,ℎ和,这四个数字是被检测对象的边界框的参数化表示。

一般输出结果是一个向量,第一个元素=1代表有目标,=0代表没目标,如果没目标那么其他的元素也没啥意义,如果=1代表有目标,接下去输出边界框参数,以及每个类别的概率。

如果第一个元素y1=1,

损失函数就是每个元素预期和真实值平方差只和

如果1 = 0, 矩阵中的后 7 个元素都不用考虑 。

2、特征点检测

一旦了解如何用二维坐标系定义人物姿态,操作起来就相当简单了,批量添加输出单元, 用以输出要识别的各个特征点的(, )坐标值。

吴恩达深度学习L4W3目标检测_第1张图片

3、目标检测

        传统思路是以先选定一个特定大小的窗口,以固定步幅移动窗口进行剪切,遍历图像的每个区域,对剪切下来的图像输入卷积网络,对每个位置按 0 或 1 进行分类,这就是所谓的图像滑动窗口操作。然后改变窗口大小,进行重复操作。这种算法叫作滑动窗口目标检测,因为我们以某个步幅滑动这些方框窗口遍历整张图片, 对这些方形区域进行分类,判断里面有没有汽车。

        滑动窗口目标检测算法也有很明显的缺点,就是计算成本,因为你在图片中剪切出太多小方块,卷积网络要一个个地处理。如果你选用的步幅很大,显然会减少输入卷积网络的窗口个数,但是粗糙间隔尺寸可能会影响性能。反之,如果采用小粒度或小步幅,传递给卷积网络的小窗口会特别多,这意味着超高的计算成本。

        因此我们可以用滑动窗口的卷积实现,具体是在比如16×16的图片上剪切出四块区域,那么每张剪切后图的大小是 14×14,把第一张输入到卷积网络进行前向传播,然后第二张,最后四张都进行卷积操作,最后得到一个小一点的,可能是2×2的4块像素的结果,那么这4个子方块分别对应了输入图像的左上左下右上右下的剪切下来的图片的结果。然后对结果进行全连接然后输出看看哪块区域出现了目标。不过这种算法仍然存在一个缺点,就是边界框的位置可能不够准确。

4、IoU(Intersection over union)

交并比(Intersection over union,loU)算法是计算两个边界框交集和并集之比。

吴恩达深度学习L4W3目标检测_第2张图片

吴恩达深度学习L4W3目标检测_第3张图片

一般约定,在计算机检测任务中,如果 ≥ 0.5,就说检测正确,如果预测器和实际边 界框完美重叠,loU 就是 1,因为交集就等于并集。也有些会把IoU阈值设置成0.6或者0.7,更精确,但是一般不会低于0.5。 

5、非极大值抑制(Non-max suppression)

为了防止算法对一个对象检测出很多次,我们使用非极大值抑制。

        流程具体是首先对每个格子进行图像检测和定位,然后查看每个格子检测报告的概率,然后对每个需要检测的目标找到概率最大值的那个框,这么做之后,非极大值抑制就会逐一审视剩下的矩形,所有和这个最大的边框有很高交并比,高度重叠的其他边界框,意思就是检测出了同一个东西但是概率低,说明不是最优的检测框,那么这些输出就会被抑制。接下去对其他需要检测的目标实行相同操作。

        要实现非极大值抑制,你可以做的第一件事是,去掉所有边界框,我们就将所有的 预测值,所有的边界框小于或等于某个阈值,比如 ≤ 0.6的边界框去掉。接下来剩下的边界框,没有抛弃没有处理过的,你就一直选择概率最高的边界框,然后把它输出成预测结果。之前没有抛弃的边 框,把这些和输出边界框有高重叠面积,即和上一步输出边界框有很高交并比的边界框,全部抛弃。

6、Anchor Boxes

到目前为止,对象检测中存在的一个问题是每个格子只能检测出一个对象,想让一个格子检测出多个对象,你可以这么做,就是使用 anchor box 这个概念。

这样子,预先定义两个不同形状的 anchor box,或者 anchor box 形状,你要做的是把预测结果和这两个 anchor box 关联起来。一般来说,你可能会用更 多的 anchor box,可能要 5 个甚至更多。吴恩达深度学习L4W3目标检测_第4张图片

前八个参数是跟第一个anchor box相关的参数 后八个参数是跟第二个anchor box相关的参数。

吴恩达深度学习L4W3目标检测_第5张图片

那么这样一个格子就能同时输出俩个对象了 每个anchor box对应一个类别的对象

人们一般手工指定 anchor box 形状,你可以选 择 5 到 10 个 anchor box 形状,覆盖到多种不同的形状,可以涵盖你想要检测的对象的各种 形状。还有一个更高级的版本,我就简单说一句,你们如果接触过一些机器学习,可能知道 后期 YOLO 论文中有更好的做法,就是所谓的 k-平均算法,可以将两类对象形状聚类,如果 我们用它来选择一组 anchor box,选择最具有代表性的一组 anchor box,可以代表你试图检 测的十几个对象类别,但这其实是自动选择 anchor box 的高级方法。

7、语义分割(Semantic Segmentation)

与目标检测输出一个个矩形框不同,语义分割是从粗推理到精推理。

图像语义分割(semantic segmentation),从字面意思上理解就是让计算机根据图像的语义来进行分割,例如让计算机在输入下面左图的情况下,能够输出右图。语义在语音识别中指的是语音的意思,在图像领域,语义指的是图像的内容,对图片意思的理解,比如左图的语义就是三个人骑着三辆自行车;分割的意思是从像素的角度分割出图片中的不同对象,对原图中的每个像素都进行标注。

吴恩达深度学习L4W3目标检测_第6张图片

语义分割强调对每个像素都进行标记分类  

8、转置卷积(transposed convolution)或反卷积(deconvolution)

在CNN中,转置卷积是一种上采样(up-sampling)的常见方法

首先举一个例子,将一个4x4的输入通过3x3的卷积核在进行普通卷积(无padding, stride=1),将得到一个2x2的输出(输出变小)。而转置卷积将一个2x2的输入通过3x3大小的卷积核将得到一个4x4的输出(输出变大),看起来似乎是普通卷积的逆过程。就好像是加法的逆过程是减法,乘法的逆过程是除法一样,人们自然而然的认为这两个操作似乎是一个可逆的过程。但事实上两者并没有什么关系,操作的过程也不是可逆的。

具体操作抽丝剥茧,带你理解转置卷积(反卷积)_史丹利复合田的博客-CSDN博客_转置卷积

9、上采样和下采样

吴恩达深度学习L4W3目标检测_第7张图片

上采样

简单的理解就是把图片进行放大了。在算法中,在我们做图像识别过程中,需要对图像进行像素级别的分类,因此在卷积提取特征后需要通过上采样将feature map 还原到原图中。

主要目的是:

放大原图像,从而可以显示在更高分辨率的显示设备上。对图像的缩放操作并不能带来更多关于该图像的信息, 因此图像的质量将不可避免地受到影响。然而,确实有一些缩放方法能够增加图像的信息,从而使得缩放后的图像质量超过原图质量的。

在算法中常见的上采样方法有双线性插值以及转置卷积、上采样(unsampling)和上池化(unpooling).

下采样

缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:

1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。

你可能感兴趣的:(深度学习,人工智能,机器学习)