CNN、RCNN、YOLO等和Alexnet、VGG等的关系是什么?
看了深度学习的入门有些蒙圈。RCNN、fastRCNN、fasterRCNN、YOLO、SSD、YOLOv2是由CNN逐步发展而来的,Lenet、Alexnet、Googlenet、VGG是CNN经典模型,那RCNN等的经典模型是什么呢?
还是说RCNN等也是CNN的经典模型,也就是说和Lenet等这些是属于并列关系?
你提到的这些名词,大概可以分成三组:
- CNN,卷积神经网路,是以卷积为核心的一大类网路。
- LeNet、AlexNet、VGG、GoogLeNet,属于CNN。
- RCNN、Fast RCNN、Faster RCNN、YOLO、YOLOv2、SSD,也属于CNN,但和2是另一条路线。
从肤浅的层面说,2和3的区别在于,2属于用于图像分类的CNN,3属于用于目标检测的CNN。
但是,我觉得,这个问题还是看图比较清楚。
这些网路架构各不相同,但总体上有一种相似性,就是前面有很多卷积层(这里将池化和激活也算作卷积的一部分),最后(顶上)有少量全连接层、分类层。这很好理解,对于分类来说,关键在于学习图像的特征。所以,在很多网路架构中,常常把顶上的几层去掉,用来学习图像特征。比如,下面的单次多盒检测器,就以VGG-16为基础。再比如Faster RCNN也利用了VGG-16.
所以,你看RCNN、Fast RCNN、Faster RCNN、YOLO、YOLOv2、SSD这些的网路架构图,就不太突出显示卷积层了。
你看,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等都是利用了训练好的图像分类模型,利用它们提取的特征,再做下一步的工作;
孩子 这是高端技术解密 目前这个论坛没有人能答出
推荐阅读: