resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_图像分类


作者 | SH Tsang

在本文,我们ResNet进行了回顾。通过学习残差表征函数而不是直接学习目标表征,ResNet可以拥有多达152层的非常深的网络。

ResNet引入了跳过连接(或快捷方式连接)以适应从前一层到下一层的输入,而无需修改输入。跳过连接可以实现更深入的网络,最终ResNet成为ILSVRC 2015在图像分类,检测和定位方面的赢家,和MS COCO 2015检测和分割的获胜者。


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_图像分类_02

ILSVRC 2015图像分类排名

ImageNet是一个包含超过1500万个标记的高分辨率图像的数据集,包含大约22,000个类别。 ILSVRC在1000个类别中的每一个中使用大约1000个图像的ImageNet子集。总共有大约120万个训练图像,50,000个验证图像和100,000个测试图像。

本文涉及

  1. 普通网络的存在的问题(梯度消失/梯度爆炸)
  2. 残差网络中的跳跃/短连接(ResNet)
  3. ResNet架构
  4. 瓶颈Bottleneck的设计
  5. 消融研究(实验对比)
  6. 与最新方法的比较(图像分类)
  7. 与最新方法的比较(目标检测)

1、普通网络的存在的问题

对于传统的深度学习网络,它们通常具有卷积层,完全连接(FC)层,用于分类任务,如AlexNet,ZFNet和VGGNet,没有任何跳跃/短连接,我们称之为普通网络。当普通网络更深(层数增加)时,会出现梯度消失/梯度爆炸的问题。

Vanishing / Exploding Gradients 梯度消失/爆炸

在反向传播期间,当误差函数相对于每次训练迭代中的当前权重的求偏导数时,通过n层网络会导致将这些小/大梯度数值被乘上n倍的梯度效果。

当网络很深时,这些小数字乘n变成零(消失)。

当网络很深时,这些大数的乘n变得特别大(爆炸)。
我们一般会期望更深的网络有更准确的预测。但是,下面一个反例说明,20层普通网络比56层普通网络具有更低的训练误差和测试误差,这是梯度消失而出现性能退化问题。


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_图像分类_03

CIFAR-10数据集的普通网络

2、残差网络中的跳跃/短连接(ResNet)

为了解决消失/爆炸梯度的问题,添加了 跳跃/短连接 skip / shortcut 在几个权重层之后将输入x加到输出上,如下所示:


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_Image_04

残余网络的构建模块

因此,输出H(x)= F(x) + x。

权重层实际上是学习一种残差映射:F(x)=H(x)-x

( 反向传播时)即使权重层有梯度消失现象,我们仍然总是将x转移回较早的层。

3、ResNet架构


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_图像分类_05


具有跳跃/短连接的34层ResNet(顶部),34层普通网络(中部),19层VGG-19(底部)

上图显示了ResNet架构。

  1. VGG-19 [2](底部)是ILSVRC 2014中最先进的方法。
  2. 34层普通网络(中间)被视为比VGG-19的更深的网络,即更多卷积层。
  3. 34层剩余网络(ResNet)(顶部)是普通网络添加了跳跃/短连接

对于ResNet构建模块,当输入尺寸小于输出尺寸时,有3种类型的 跳跃/短连接。

(A)短连接Shortcut执行映射恒等映射(identity mapping),使用额外的零填充zero padding来增加维度。因此没有额外增加参数。

(B)一个投影短连接projection shortcut仅用于增加尺寸,其他短连接shortcut还是恒等的连接。网络需要额外的参数。

(C)所有短连接都是投影连接。额外需要的参数多于(B)。

4、瓶颈Bottleneck的设计

由于现在网络很深,时间复杂度很高。瓶颈Bottleneck设计用于降低复杂性,如下所示:


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_图像分类_06

基本块(左)和论文所提出的瓶颈块设计(右)

如图(右)所示,1×1转换层被添加到网络的开始和结束。这是Network In Network和GoogLeNet(Inception-v1)中建议的技术。事实证明,1×1转换可以减少连接数(参数),同时不会降低网络性能。 (如果感兴趣,请访问我的评论。)

用瓶颈模块,34层ResNet成为50层ResNet。而且文章还给出更深层的网络与瓶颈设计:ResNet-101和ResNet-152。所有网络的整体架构如下:


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_Image_07

所有网络的整体架构

值得注意的是,VGG-16/19有15.3 / 196亿FLOPS。 ResNet-152的复杂程度仍低于VGG-16/19 !!!!

5、消融实验

5.1 传统网络 VS 残差网络


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_图像分类_08

验证错误率:18层和34层普通网络(左),18层和34层ResNet(右)

resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_图像分类_09

使用10种作物测试的Top-1错误率

当使用普通网络时,由于梯度消失问题,18层优于34层。

当使用ResNet时,34层优于18层,消失梯度问题已通过跳过连接解决。

如果我们比较18层普通网络和18层ResNet,没有太大区别。这是因为浅层网络不会出现消失梯度问题。

6、与最先进方法的比较(图像分类)

6.1 ILSVRC 数据


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_Image_10

10种作物测试结果

通过比较ResNet-34 A,B和C,得出B略好于A,C略好于B,这是因为B引入了额外的参数。ResNet-A,B,C都获得了大约7%的错误率。

通过将网络深度增加到152层,获得5.71%的Top5错误率,这比VGG-16,GoogLeNet(Inception-v1)和PReLU-Net好得多。


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_图像分类_11

多尺度信息全卷积网络在10种作物数据的测试结果

此时,ResNet-152可以获得4.49%的错误率。


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_图像分类_12

10种作物测试+全卷积网络,具有多尺度信息+6模型集成的结果

增加了6种模型的集成后,错误率为3.57%。

6.2 CIFAR-10 数据集


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_图像分类_13

CIFAR-10结果

通过跳过连接,我们可以建立更深的模型。然而,当层数从110到1202时,发现错误率从6.43%增加到7.93%,这扔为本文中的一个未决问题。然而,ResNet-1202没有优化难度,即它仍然可以收敛。

7、与最先进方法(物体检测)的比较


resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_Image_14

PASCAL VOC 2007/2012 数据 mAP (%)

resnet 分类模型快速用在自己的数据集上 基于resnet的图像分类_图像分类_15

MS COCO mAP (%)

通过将ResNet-101用于faster R-CNN [3-4],ResNet获得了比VGG-16更好的性能。
ResNet最终赢得了ImageNet检测,定位,COCO检测和COCO分割的第一名!