看了深度学习的入门有些蒙圈。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等都是利用了训练好的图像分类模型,利用它们提取的特征,再做下一步的工作;


孩子 这是高端技术解密 目前这个论坛没有人能答出


推荐阅读:
查看原文 >>
相关文章