卷积神经网络_(2)_分类与回归_几类经典网络简介
1.经典神经网络有:2012年提出的AlexNet和2014年提出的VGGNet,结构图分别如下:
2.分类与回归:
(1)分类(classfication):就是经过经过一系列的卷积层和池化层之后,再经过全连接层得到样本属于每个类的得分,再用比如softmax分类其对其进行分类;
(2)回归(regression):相当于用一个矩形框来框住要识别的物体,即localization;
如下:
这里,回归用了拟合的方法,即给定输入中物体的位置(x,yw,h),再用卷积网络的输出(x',y',w',h')去拟合正确的位置,Loss值是两者之间的欧式距离:
所以最终经过全连接层要做两件事,即classfication和localization:
当然用这种回归的方法,我们还可以做其他的事,比如pose estimation,就是定位出物体上的n个点并连线,可由形状判断物体的行为:
再寻找location的过程中,最常用的是Sliding Window(滑动窗口):即对于一个输入,用一个比如说3*3的固定大小的滑动窗口在图像中不断移动,每移动到一个区域,可以用训练好的网络如VGGNet来算出属于"猫"的概率,直至滑完所有的区域,看概率最高的是哪一块区域,那块区域即为最终的location:
这里还要注意一点,在使用sliding window时还要对输入图像进行预处理,scale变换,即将原输入图像放大放小为一系列大小不同的图像,再用固定大小的sliding window去滑动,这样做是为了检测物体在不同图像中大小不同时的位置。
当然这么做是很费力的,因为滑动窗口一般较小,对于每一个输入可能都需要滑动很多次,而每滑动一次就要遍历一次CNN,这是非常占内存的,因此还有一种更加简便的方法,叫做Region Proposals(区域建议):将输入图像中有用的物体都框出来作为候选框,再用selective search算法,即对于这n个候选框,将图像的像素特性或者纹理特性类似或有相同规律的框合并成大的框,一般这样最终的框就是Location:
而regression head(回归模块)的位置一般放在最后一层卷积层之后(对于overfeat、VGG)或者全连接层之后(对于DeepPose、R-CNN)。
好的,下面再说一下CNN卷积神经网络的的训练过程:
(1)选定模型(经典模型有VGGNet、AlexNet、GoogleNet;VGG最常用):
这里不需要自己从零开始初始化权值和阈值等参数,采用fine tune,即利用别人训练好的模型来训练自己的网络,用别人的参数,自己再进行微调。(有时候别人的实现功能可能与我们
不太一样,比如别人需要分1000类,而我们只需分10类,这时候只需修改全连接层即可,前面的不需修改)
(2)添加回归模块;
(3)训练网络;
(4)测试;
过程如下:
下面再介绍一下R-CNN以及它的训练过程,和CNN类似,不过最后一步是将feature先固话到disk上,再进行回归:
由上可知:R-CNN有两个缺点:(1)对于每一个region proposal都有进行一次CNN;
(2)过程繁琐,先进行固化在进行提取。
而后有fast R-CNN:使用卷积共享,对所有的region只进行一次CNN;不需固化:
faster R-CNN:将selective search整合到Net中,即在网络中添加一层region proposal network(RPN),不需要在原输入图像中找候选框,而是在卷积之后的特征图中找框,提高了速度:
将R-CNN、fast R-CNN、faster R-CNN进行对比如下: