卷积神经网络(四) ——目标检测与YOLO算法

卷积神经网络(四)

——目标检测与YOLO算法

(原创内容,转载请注明来源,谢谢)

一、概述

目标检测,主要目的是在图片中,分类确认是否有需要的物体,如果有则标出对应的物体。

二、目标定位

目标定位(object localization),目的是确定物体的位置。为了得到物体的位置,需要对softmax输出的结果进行改造,增加输出的结果。

原来一个四分类softmax,输出结果是1*4,标记该结果的值。为了实现目标检测,则需要增加输出标记图片中心点横纵坐标、图片长宽、是否有感兴趣的图片等字段。

如下图所示,假设图片左上角坐标(0,0),右下角坐标(1,1):用bx和by标记输出结果中心位置的横、纵坐标相对于整个图的位置(因此都小于1);用bw、bh标记坐标的宽度和高度相对于图片的比例(因此也都小于1)。另外,用字段pc标记图片含有目标物体的概率,当pc很小时,表示该区域不存在目标物体,则不关心其他的值。

三、特征点检测

对于一张图片,有时候要关注图片内部的某些点,如人眼的四个眼角等,则此时输出值更多,不止bx和by,将会包含多组的x和y,标记各个关注点的位置,这称为特征点检测(landmark detection)。

延伸出去,对于一幅图片关注的n个点,需要增加2n个输出,即每个点都需要对应的x和y坐标。

四、滑动窗口法目标检测

要检测一幅图中是否有目标物体,可以采用滑动窗口法(sliding windows)。

1、做法

滑动窗口法:1)初始设定一个窗口和滑动的步长,从图片左上角开始,按照步长依次检测每个小方块对应的图片,是否存在目标物体。2)遍历完整幅图片后,选择大一些的窗口,再次上述操作。3)可多次选择不同的窗口进行操作,直到获取想要的物体。

2、缺点

由于每次判断一个窗口是否含有目标物体,都需要进行卷积、池化、全连接、softmax等,因此这样计算量大。考虑到滑动窗口过程中,存在很多重叠的部分,因此可以优化。

五、卷积的滑动窗口

1、全连接层转回成卷积层

要实现快速计算滑动窗口,首先需要修正输出,把原先softmax的输出,转化成卷积常见的维度形式。例如1个四分类的softmax,原来输出的是1*4,现在需要拓展成1*1*4的结果。

对于1一个14*14*3的窗口,可以经过下面的卷积路径得到1*1*4的矩阵。这即全连接成转成卷积层,目的是为后面做理论基础。

2、卷积滑动窗口

现假设窗口是14*14*3,图片大小是16*16*3,设步长为2,则按照正常的滑动窗口,需要计算4次卷积。

当使用上面的fc转conv方法时,可以按照把14*14*3转成1*1*4的卷积路径,对16*16*3的图片使用同样的方式卷积,则会得到一个2*2*4的结果。经过验证,这个2*2*4的结果,左上角的1*1*4即滑动窗口在图片左上角的结果,右上、左下、右下同理。

同理,可以扩展到28*28*3以及更大的图片。

这样做的好处,即是一次卷积运算,可以得到滑动窗口需要移动若干次才能得到的结果,加快了计算速度。

存在的缺点,是无法准确预测边界框。

六、YOLO算法

1、概述

YOLO算法,是比较常用的目标检测算法,包括边界框预测、非极大值抑制、anchor boxes等概念,下面一一介绍。

2、边界框预测

边界框预测(bounding box),即一开始就确定好图像的边界框,例如3*3(更常用的是19*19),然后得到结果。这里的结果也是一次计算得到的,和上面的滑动卷积窗口的计算方式一样。

这里需要说明的是,这样计算时,得到的bx和by仍小于1,但是bw和bh可能会大于1。因为图像有可能超出划定的这个小方框。

3、交并比

交并比(intersection over union,IoU),是用于计算两个图片重叠程度与相似程度的。这里用到的交集和并集的概念,这里的交集是两幅图片的共同部分,并集是两幅图片总的区域。

IoU的计算,目的是为了后面非极大值抑制做理论基础。

IoU=交集面积/并集面积,通常来说IoU≥0.5时说明两个图片相似。0.5这个值可以理解成阈值,也可以设定成0.6或者更高,但是很少设定成小于0.5的值。

4、非极大值抑制

由于滑动窗口过程中,步长如果设定的不太好,可能出现对于同一个物体,多次被输出,如下图所示。

非极大值抑制(non-max suppression),就是为了剔除重复的目标检测结果。步骤如下:

1)在所有找出的边界框输出中,剔除pc≤0.6的边界框。由于比0.6小,表示这里圈出的物体是目标物体的概率不大,故不考虑。

2)选出此时最大的pc对应的边界框,输出该边界框,并剔除该边界框。

3)再次选出此时最大的pc对应的边界框,与输出的边界框进行IoU的计算,如果IoU的结果≥0.5,则认为这个边界框和已经输出的边界框相似,则不输出边界框;否则输出边界框。处理完毕后,剔除该边界框。

4)重复步骤3,直到处理完所有的边界框。

5、anchor box

上面的处理过程,都没有考虑一个图片中出现两个物体的情况,anchor box就是为了处理这个情况的。

考虑下面这张图,人和车重叠了,而且中心位置接近,则此时为了准确获取输出结果,还需要对输出进行改造。

假设输出结果可能的有两种形状(称为两个anchor box),则先预设这两个形状,然后把输出的y扩充成两倍的长度,分别有pc1和pc2来表示该输出存在物体1的概率和存在物体2的概率,其他参数如bx、by等同样也都需要,如下图所示:

Anchor box无法解决的问题:超过预设anchor box个物体的重叠(如上图定义了两个anchor box,但是有三个物体重叠),或两个物体的形状非常相似且重叠(如两个人靠的非常近)。

解决方案:讲边界框切割的更小,通常不用3*3,而用19*19。

说明:边界框通常需要人工设置,根据图片以及关注的物体的样子进行设定。也可以使用K-Means算法,确认分类结果并且设定对应的anchor box。

6、YOLO总结

YOLO是一个非常快速的目标检测的算法,实际中通常设置边界框为19*19,设置anchor box 5个左右。最终输出的y,维度是 边界框维度*边界框维度*(5+分类数)*anchor数,这里的5,指的是pc、bx、by、bh、bw。

七、R-CNN

除了YOLO,还有一种思想可以解决目标检测。

考虑到YOLO,需要对图片中大量没有目标物体的位置进行计算,因此可以考虑指定区域进行计算。这里R-CNN的R,即region(区域),这个算法又称为RPN(region proposal network,候选区域网络)。

主要做法,是先加一个区域选定算法,把图像分成若干区域。然后再根据每个区域的大致形状,类比目标物体的形状,对于可能的形状进行卷积判断,如下图所示:

由于这样相当于要对图像进行两次处理,因此速度远远慢于YOLO。这个算法经过若干的改进,包括用卷积来划分区域、用卷积来滑动窗口等,但是速度还是比YOLO要慢。

——written by linhxx 2018.03.13

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-03-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习实践二三事

Fully Convolutional Networks for Semantic Segmentation

主要思想 传统的做图像分割的方式大概是这样的: 以某个像素点中心取一个区域,取图像块的特征做样本训练分类器,分类结果作为此像素点的结果 这样做缺点很明显,比...

2578
来自专栏新智元

谷歌官方:反向传播算法图解

【新智元导读】反向传播算法(BP算法)是目前用来训练人工神经网络的最常用且最有效的算法。作为谷歌机器学习速成课程的配套材料,谷歌推出一个演示网站,直观地介绍了反...

1500
来自专栏marsggbo

Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)

之前看过一遍,但是总是模模糊糊的感觉,也刚入门,虽然现在也是入门,但是对于一些概念已经有了比较深的认识(相对于最开始学习机器学习的时候)。所以为了打好基础,决定...

2257
来自专栏深度学习思考者

机器学习——Dropout原理介绍

一:引言   因为在机器学习的一些模型中,如果模型的参数太多,而训练样本又太少的话,这样训练出来的模型很容易产生过拟合现象。在训练bp网络时经常遇到的一个问题,...

7078
来自专栏ml

对sppnet网络的理解

 前言:    接着上一篇文章提到的RCNN网络物体检测,这个网络成功的引入了CNN卷积网络来进行特征提取,但是存在一个问题,就是对需要进行特征提取图片大小有严...

3716
来自专栏深度学习计算机视觉

BP神经网络总结笔记

概念背景(来自百度百科) BP神经网络的代表者是D.Rumelhart和J.McCelland,“反向传播(backpropagation)”一词的使用出现在1...

2773
来自专栏ml

对sppnet网络的理解

   接着上一篇文章提到的RCNN网络物体检测,这个网络成功的引入了CNN卷积网络来进行特征提取,但是存在一个问题,就是对需要进行特征提取图片大小有严格的限制。...

1342
来自专栏小鹏的专栏

Faster RCNN:RPN,anchor,sliding windows

paper链接:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal N...

88310
来自专栏Pytorch实践

分类问题样本不均衡常见的解决方法

分类时,由于训练集合中各样本数量不均衡,导致模型训偏在测试集合上的泛化性不好。解决样本不均衡的方法主要包括两类:(1)数据层面,修改各类别的分布;(2)分类器层...

5235
来自专栏张俊红

支持向量机详解

总第81篇 (本文框架) 01|概念及原理: 支持向量机是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。 说的通俗一点就是就是在特征空...

3473

扫码关注云+社区

领取腾讯云代金券