卷积神经网络对图片识别的一些基础理解

看吴恩达的深度学习的一点记录卷积神经网络在图象处理的一些收获

卷积神经网络相对于全连接网络,卷积神经网络过局部感受野、权重共享和降采样3种策略,降低了网络模型的复杂度,同时对于平移、旋转、尺度缩放等形式的变有度的不变性。,并且相对于全连接网络,也能考虑到位置的变化,因此被广泛应用于图像分类。以图片垂直边缘的检测为例。如何在图像中检测边缘?我们看这个例子,以一个6×6的灰度图像为例,它是一个6×6×1的矩阵。

为了检测图像的边缘,我们构造一个3×3的矩阵,也称这个3×3的矩阵为过滤器或者核。这个矩阵是1,1,1,0,0,0,-1,-1,-1。如下图所示:

对这个6×6的图像,我们对它进行卷积运算。得到一个4×4的图像。

这些图片和过滤器是不同维度的矩阵,但是左边的矩阵其实是一张灰度图片,中间的把它理解成过滤器,右边的矩阵,我们把它理解成另一张图片。这个就是垂直边缘检测器。举一个简单的例子,这是一个简单的6×6图像,左边的三列都是10,右边的都是0。

如果把它理解成一个图像,像素值10是比较亮的像素值,右边的像素值比较暗。图片上中间有一个比较明显的垂直边缘。当我们用3×3的过滤器进行卷积运算的时候,如果将3×3的过滤器进行可视化是这个样子,左边有明亮的像素,然后有一个过渡段0在中间,然后右边是深色的。卷积运算后得到的是右边的矩阵。如果把最右边的矩阵当成图像,它就是这个样子。他在中间有一段亮的区域,对应检查到刚开始6×6图像中间的垂直边缘。我们发现它会会很好地检测出图像中的垂直边缘。

通常我们通过神经网络对图片进行监督分类学习时,我们需要神经网络softmax输出的是它的分类标签,如果还要定位图片中目标的位置,我们可以让他多输出几个单元,输出一个边界框。具体说就是让神经网络再输出4个数字,标记为bx,by,bh和bw。这4个数字是被检测对象的边界框参数化表示。如下图所示:

在卷积分类网络时,我们使神经网络的输出y如下图,pc是图片中是否有目标的标志位,bx,by,bh和bw是目标的位置参数,c1,c2,c3是标签的类别。在损失函数中,我们将其简化为对其方差的计算,

然后将其作为回归参数进行计算。

项目实践经验

  1. 算法的选择

介绍完原理后,接下来是算法实现过程。普通的滑动窗口目标检测算法,以某个步幅固定的滑动目标检测方框窗口,需要在图片中剪出很多小方块,卷积网络要一个个的处理,计算成本很大。有时候如果选的步幅很大,显然会减少输入卷积网络的窗口个数,但是会严重影响性能。针对这个问题,我们采用YOLO算法(You only look once),这个算法的核心在于它把图片划分成了X * X网格,注意这些网格不是将一张图片切割成X * X小块,而是说一个网格会输出下面对应的一个结果,下图所示。通过上采样将深层特征提取,其维度是与将要融合的特征层维度相同的(channel不同)然后通过阈值以及非极大值抑制来确定网格中是否包含要分类的图像,来得到我们要分类得到的信息

 

猜你喜欢

转载自blog.csdn.net/qq_44665418/article/details/106432736