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進行對比如下: