经典10案例

计算机视觉任务的主要类型如下:

物体识别/分类:在物体识别中,给出一张原始图像,你的任务是识别出该图像属于哪个类别。

分类 定位:如果图像中只有一个物体,你的任务是找到该物体在图像中的位置,一个更专业的称谓是定位。

物体检测:在物体检测中,你的任务是找到图像中多个物体的各自位置。这些物体可能属于同一类别,或者各自不同。

图像分割:图像分割是一个稍微复杂的任务,其目标是将每一个像素映射到正确的分类。

深度学习的机器视觉经典算法

1. AlexNet

AlexNet 是首个深度架构,它由深度学习先驱 Geoffrey Hinton 及其同僚共同引入。AlexNet 是一个简单却功能强大的网络架构,为深度学习的开创性研究铺平了道路。

论文:ImageNet Classification with Deep Convolutional Neural Networks

链接:

https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

代码实现:

https://gist.github.com/JBed/c2fb3ce8ed299f197eff

2. VGG Net

VGG 网络由牛津可视化图形组(Visual Graphics Group)开发,因此其名称为 VGG。该网络的特点是金字塔形,与图像最近的底层比较宽,而顶层很深。

VGG 的优势:

适合在特定任务上进行基准测试。

VGG 的预训练网络可在互联网上免费获取,因此被广泛用于各种应用。

另一方面,它的主要缺陷在于如果从头训练,则过程缓慢。即使在性能很好的 GPU 上,也需要一周多的时间才能完成训练。

论文:Very Deep Convolutional Networks for Large-Scale Image Recognition

链接:

https://arxiv.org/abs/1409.1556

代码实现:

https://github.com/fchollet/keras/blob/master/keras/applications/vgg16.py

3. GoogleNet

GoogleNet(或 Inception 网络)是谷歌研究者设计的一种架构。GoogleNet 是 ImageNet 2014 的冠军,是当时最强大的模型。

GoogleNet 的优势在于:

GoogleNet 训练速度比 VGG 快。

预训练 GoogleNet 的规模比 VGG 小。VGG 模型大于 500 MB,而 GoogleNet 的大小只有 96MB。

GoogleNet 本身没有短期劣势,但是该架构的进一步改变使模型性能更佳。其中一个变化是 Xception 网络,它增加了 inception 模块的发散极限(我们可以从上图中看到 GoogleNet 中有 4 个 inception 模块)。现在从理论上讲,该架构是无限的(因此又叫极限 inception!)。

论文:Rethinking the Inception Architecture for Computer Vision

链接:

https://arxiv.org/abs/1512.00567

代码实现:

https://github.com/fchollet/keras/blob/master/keras/applications/inception_v3.py

4.ResNet

ResNet 是一个妖怪般的架构,让我们看到了深度学习架构能够有多深。残差网络(ResNet)包含多个后续残差模块,是建立 ResNet 架构的基础。下图是残差模块的表示图:

ResNet 引入的新技术有:

主要的优势是数百,甚至数千的残差层都能被用于创造一个新网络,然后训练。这不同于平常的序列网络,增加层数量时表现会下降。

论文:Deep Residual Learning for Image Recognition

链接:

https://arxiv.org/abs/1512.03385

代码实现:

https://github.com/fchollet/keras/blob/master/keras/applications/resnet50.py

5. ResNeXt

ResNeXt 据说是解决目标识别问题的最先进技术。它建立在 inception 和 resnet 的概念上,并带来改进的新架构。

论文:Aggregated Residual Transformations for Deep Neural Networks

链接:

https://arxiv.org/pdf/1611.05431.pdf

代码实现:

https://github.com/titu1994/Keras-ResNeXt

6. RCNN (基于区域的 CNN)

基于区域的 CNN 架构据说是所有深度学习架构中对目标检测问题最有影响力的架构。为了解决检测问题,RCNN 尝试在图像中所有物体上画出边界框,然后识别图像中的物体。

论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

链接:

https://arxiv.org/abs/1506.01497

代码实现:

https://github.com/yhenon/keras-frcnn

7. YOLO (You Only Look once)

YOLO 是当前深度学习领域解决图像检测问题最先进的实时系统。如下图所示,YOLO 首先将图像划分为规定的边界框,然后对所有边界框并行运行识别算法,来确定物体所属的类别。确定类别之后,yolo 继续智能地合并这些边界框,在物体周围形成最优边界框。

这些步骤全部并行进行,因此 YOLO 能够实现实时运行,并且每秒处理多达 40 张图像。

尽管相比于 RCNN 它的表现有所降低,但在日常实时的问题中它还是有优势的。

论文:You Only Look Once: Unified, Real-Time Object Detection

链接:

https://pjreddie.com/media/files/papers/yolo.pdf

代码实现:

https://github.com/allanzelener/YAD2K

8.SqueezeNet

SqueeNet 架构是在移动平台这样的低宽带场景中极其强大的一种架构。这种架构只占用 4.9 MB 的空间,而 Inception 架构大小为 100MB。这种巨大的差距由一种名为 Fire Module 的特殊结构引起。

论文:SQUEEZENET: ALEXNET-LEVEL ACCURACY WITH 50X FEWER PARAMETERS AND <0.5MB MODEL SIZE

链接:

https://arxiv.org/abs/1602.07360

代码实现:

https://github.com/rcmalli/keras-squeezenet

9.SegNet

SegNet 是一个用于解决图像分割问题的深度学习架构。它包含处理层(编码器)序列,之后是对应的解码器序列,用于分类像素。

论文:SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation

链接:

https://arxiv.org/abs/1511.00561

代码实现:

https://github.com/imlab-uiip/keras-segnet

10.GAN

GAN 是神经网络架构中完全不同的类别。GAN 中,一种神经网络用于生成全新的、训练集中未曾有过的图像,但却足够真实。

论文:Generative Adversarial Networks

链接:

https://arxiv.org/abs/1406.2661

代码实现:

https://github.com/bstriner/keras-adversarial

版权声明:本站发布此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,请读者仅作参考,并请自行核实相关内容。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

(0)
菩提菩提
上一篇 2024-01-07
下一篇 2024-01-07

相关推荐