(一)卷积神经网络初了解——吴恩达《卷积神经网络》笔记
一、卷积神经网络
1.1 计算机视觉
计算机视觉的应用可以是图片分类、目标检测、风格迁移等等,但很多时候,在应用计算机视觉时数据的输入量非常的大,比如1000×1000×3(R,G,B 3个channel)的图像,有300万的数据量,即特征向量维度达300万,若使用标准的全连接网络,权值矩阵W会有30亿个参数。大量参数的情况下,神经网络可能会出现过拟合的情况,而且占据巨大的内存。 所以,卷积运算被引入了,它也是卷积神经网络中的一个重要内容。
1.2 边缘检测
检测物体的边缘,是让电脑搞清楚图片里有什么物体的一个方法。如何进行边缘检测呢?可以构造一个过滤器(论文里也被称为kernel——核),用它与图像进行卷积运算,得到一个新的矩阵,可以把这个矩阵看成是一张图像,它能反应原图像的垂直边缘。 在检测到边缘之后,我们还想要知道边缘两侧的亮暗是如何过渡的,即边缘处是由亮变暗还是由暗变亮。可以观察与过滤器进行卷积运算得到的矩阵的值的正负,若为正值,则为从亮到暗(图像从左到右);若为负值,则为从暗到亮。
1.3 Padding与stride
1.4 三维卷积
以上是对二维图像做卷积,若想应用在具有3个channel的RGB图像上,得到该图像的一个特征,则需要3个channel的过滤器,进行一次三维卷积,最后得到一张二维图像(注意是1个channel,不是3个)。 若想得到该图像的多个特征,则需要使用多个过滤器,每个过滤器与原图像进行三维卷积会输出一个二维图像,多个过滤器的输出堆叠在一起,就是这一层卷积的输出,需要检测的特征数等于输出的通道数。
1.5 单层神经网络
利用多个过滤器对一个三维图像进行卷积,得到多个二维图像,这形成一个卷积层。将每个二维图像增加一个偏差,即二维矩阵每个值加上这个偏差,再应用非线性激活函数ReLU,最后输出与处理前矩阵同型的矩阵,所有输出的矩阵堆叠起来,作为下一层卷积网络的输入。 在每层神经网络中,(过滤器的高×宽×通道数量+1个残差)*过滤器的数量,即为该层神经网络的所有参数,用来提取图像的特征,无论输入的图像有多大,参数的数量不会变大,这是卷积神经网络的一个特征,可以避免过拟合。
1.6 池化层
除了卷积层,卷积神经网络也经常使用池化层来缩减模型的大小,提高计算速度。池化层使用较多的类型是最大池化,将输入划分为几个区域,这个区域看成是某些特征的集合,最终的输出为每个区域中的最大值,这样能最大程度上保留原区域的特征。在池化过程中,过滤器的Padding的值通常设为0,一旦确定了过滤器的大小f和步长stride,池化操作就成为一个固定运算,不存在需要学习的参数,所以通常把卷积层和池化层归为一层神经网络。 池化和卷积操作不同,由于是选取最大值,所以输入图像的通道有多少,输出图像的通道就有多少。
1.7 完整的卷积神经网络
二、目标检测
xxxx
(二)Yolo算法
一、Yolov1
二、Yolov2
三、Yolov3
(三)Yolov3 网络主体结构改进
|