看了深度學習的入門有些蒙圈。RCNN、fastRCNN、fasterRCNN、YOLO、SSD、YOLOv2是由CNN逐步發展而來的,Lenet、Alexnet、Googlenet、VGG是CNN經典模型,那RCNN等的經典模型是什麼呢?

還是說RCNN等也是CNN的經典模型,也就是說和Lenet等這些是屬於並列關係?


你提到的這些名詞,大概可以分成三組:

  1. CNN,卷積神經網路,是以卷積為核心的一大類網路。
  2. LeNet、AlexNet、VGG、GoogLeNet,屬於CNN。
  3. RCNN、Fast RCNN、Faster RCNN、YOLO、YOLOv2、SSD,也屬於CNN,但和2是另一條路線。

從膚淺的層面說,2和3的區別在於,2屬於用於圖像分類的CNN,3屬於用於目標檢測的CNN。

但是,我覺得,這個問題還是看圖比較清楚。

LeNet-5

AlexNet

VGG16

GoogLeNet

這些網路架構各不相同,但總體上有一種相似性,就是前面有很多卷積層(這裡將池化和激活也算作卷積的一部分),最後(頂上)有少量全連接層、分類層。這很好理解,對於分類來說,關鍵在於學習圖像的特徵。所以,在很多網路架構中,常常把頂上的幾層去掉,用來學習圖像特徵。比如,下面的單次多盒檢測器,就以VGG-16為基礎。再比如Faster RCNN也利用了VGG-16.

所以,你看RCNN、Fast RCNN、Faster RCNN、YOLO、YOLOv2、SSD這些的網路架構圖,就不太突出顯示卷積層了。

Faster RCNN架構

YOLO v3

你看,Faster RCNN架構圖中,卷積+relu+池化這些只佔了一小塊地方,而到了YOLO v3中,乾脆用了很多「省略號」。

所以,從結構上來說,上面的第2組可以看成是第3組的組件。


所有的這些提到的模型都是基於CNN的模型。

Lenet、Alexnet、Googlenet、VGG是CNN的一系列具體實現,它們的提出,是面向圖像分類任務的。

而由於它們具有很好的特徵表達能力,常作為其它視覺任務的基準模型,包括RCNN、fastRCNN、fasterRCNN等目標檢測任務的演算法。

YOLO、SSD、YOLOv2是不同於RCNN系列的另一類目標檢測演算法。

所以,你所謂的『RCNN等的經典模型』的說法不存在的,因為RCNN系列本身就是利用具體的CNN模型(VGG16和ResNet50)實現的演算法而已,也可以認為是CNN的一些具體實現。

不用糾結誰跟誰並列關係。


CNN一般是指一個網路裡面含有大量的卷積層,你可以把常見的層(卷積、全連接等)理解為積木,網路就是這些積木搭起來的。

Lenet、Alexnet、Googlenet、VGG等模型是用於分類任務的,說其為經典是當時在那個年代,跑ILSVRC比賽,結果很好,不斷刷新記錄,而且裡面的一些搭積木的方法也很值得學習,

之後(?)又發現使用一些預訓練好的權重來初始化網路比隨機初始化好,所以這些預訓練的模型一般作為現在的初始化套路。

RCNN、fastRCNN、fasterRCNN、YOLO、SSD、YOLOv2是用於檢測任務的,RCNN-&> fastRCNN -&> fasterRCNN 是two-stage的方法,YOLO-&>YOLOv2-&>YOLOV3, SSD是one-stage的方法。

你說的RCNN的經典方法是two-stage的方法,以fasterRCNN為代表,還有很多都是基於此類方法去改善的,如Light-head RCNN

我們在搭建網路的過程中一般不會拿一些基礎積木(卷積、全連接等)去搭, 而拿一些預先搭建好的積木(lenet的一些幾層, vgg的前幾層)去搭,這些預先搭建好的積木你可以理解為backbone


https://zhuanlan.zhihu.com/p/47741549

CNN是技術點,其他是經典模型,多用於視覺,但有些也不限於視覺。

鏈接中的表格我標註了作者和所屬的公司,可以琢磨一下,大多是有門派的: FAIR、MSRA……

當然也有大俠:RBG、Redmon……

至於技術上的演進,可以聽一下李沐大神的《動手學深度學習》第7講。


CNN是深度學習應用在CV領域的基礎單元;

AlexNet、VGG這些模型都是基於CNN單元構建起來的,本來是用來訓練圖像分類任務的,比如ImageNet,但是在訓練完分類任務後,這些模型的中間輸出,可以理解為表達了圖像的特徵,能應用在其他任務中;

比如目標檢測,RCNN系列、YOLO等都是利用了訓練好的圖像分類模型,利用它們提取的特徵,再做下一步的工作;


孩子 這是高端技術解密 目前這個論壇沒有人能答出


推薦閱讀:
查看原文 >>
相關文章