它叫ResNeXt WSL,有超过8亿个参数,用Instagram上面的9.4亿张图做了 (弱监督预训练) ,用ImageNet做了微调。
背景介绍:残差网络的发展

ResNet (2015)

传统网络出现的问题:

深度学习中的基础网络的发展从ALexNet(5个卷积层)、VGG(19个卷积层)到GoogLeNet(22个卷积层),网络的结构在不断变深。这是因为更深的网络可以进行更加复杂的特征模式的提取,从而理论上更深的网络可以得到更好的结果。但是通过简单的叠加层的方式来增加网络深度,可能引来梯度消失/梯度爆炸的问题:

  • “梯度消失”:指的是即当梯度(小于1.0)在被反向传播到前面的层时,重复的相乘可能会使梯度变得无限小。
  • “梯度爆炸”:指的是即当梯度(大于1.0)在被反向传播到前面的层时,重复的相乘可能会使梯度变得非常大甚至无限大导致溢出。

因此随着网络深度的不断增加,常常会出现以下两个问题:

  • 长时间训练但是网络收敛变得非常困难甚至不收敛(这个问题很大程度已被标准初始化和中间标准化层解决)。
  • 网络性能会逐渐趋于饱和,甚至还会开始下降,可以观察到下图中56层的误差比20层的更多,故这种现象并不是由于过拟合造成的。这种现象称为深度网络的退化问题。

?contribution:

  • 将层变为学习关于层输入的残差函数,而不是学习未参考的函数。
  • bottleneck design

优点:

  • 相比传统的卷积神经网络如VGG复杂度降低,需要的参数下降
  • 可以做到更深,不会出现梯度弥散的问题。
  • 优化简单,分类准确度加深由于使用更深的网络
  • 解决深层次网络的退化问题


在输入与输出之间(称为堆积层)引入一个前向反馈的shortcut connection,这有点类似与电路中的“短路”,也是文中提到identity mapping(恒等映射y=x,也就是输入与输出是相等的映射关系。)ResNet通过引入残差网络结构(residual network),解决了退化问题。其主要思想是将堆叠的非线性层从,拟合原来的最优解映射输出H(X),变成去,拟合输出和输入的差F(X) = H(X) - X,X为输入,此时原最优解映射H(X)就可以改写成F(X) + X。而作者认为这两种表达的效果相同,但是优化的难度却并不相同,作者假设F(x)的优化会比H(x)简单的多。这一想法也是源于图像处理中的残差向量编码,通过一个reformulation,将一个问题分解成多个尺度直接的残差问题,能够很好的起到优化训练的效果。

残差映射跟原映射相比更容易被优化。比如把5映射到5.1,那么引入残差前是F’(5) = 5.1,引入残差后是H(5) = 5.1, H(5) = F(5) + 5, F(5) = 0.1。这里的F’和F都表示网络参数映射,引入残差后的映射对输出的变化更敏感。比如s输出从5.1变到5.2,映射F’的输出增加了1/51=2%,而对于残差结构输出从5.1到5.2,映射F是从0.1到0.2,增加了100%。后者输出变化明显对权重的调整作用更大,所以效果更好。

这两种结构分别针对ResNet34(左图)和ResNet50/101/152(右图),一般称整个结构为一个”building block“。其中右图又称为**”bottleneck design”**(间隔1 * 1、3 * 3、1 * 1的三层网络,第一层用于降低维度,第三层用于升高维度),目的一目了然,就是为了降低参数的数目,第一个1x1的卷积把256维channel降到64维,然后在最后通过1x1卷积恢复,整体上用的参数数目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而不使用bottleneck的话就是两个3x3x256的卷积,参数数目: 3x3x256x256x2 = 1179648,差了16.94倍。

残差网络的本质:

残差网络的等价结构:

残差网络单元其中可以分解成右图的形式,从图中可以看出,残差网络其实是由多种路径组合的一个网络,直白了说,残差网络其实是很多并行子网络的组合,整个残差网络其实相当于一个多人投票系统(Ensembling)。

ResNeXt (2016)

动机

?contribution:

  • 增加基数 cardinality 比增加深度和宽度更有效。(在某一层并行transform的路径数提取为第三维度,称为”cardinality”。)
  • 用一种平行堆叠相同拓扑结构的blocks代替原来 ResNet 的三层卷积的block,在不明显增加参数量级的情况下提升了模型的准确率,同时由于拓扑结构相同,超参数也减少了,便于模型移植。

优点

  • 提高准确率
  • 减少超参数数量(得益于子模块的拓扑结构)

上图所示提出了深度网络的新维度,除了深度、宽度(Channel数)外,作者将在某一层并行transform的路径数提取为第三维度,称为”cardinality”。跟Inception单元不同的是,这些并行路径均共享同一拓扑结构,而非精心设计的卷积核并联。除了并行相同的路径外,也添加了层与层间的shortcut connection


ResNeXt WSL(2019)

?contribution:

  • 预训练模型
如何使用:
import torch
model = torch.hub.load('facebookresearch/WSL-Images', 'resnext101_32x8d_wsl')
# or
# model = torch.hub.load('facebookresearch/WSL-Images', 'resnext101_32x16d_wsl')
# or
# model = torch.hub.load('facebookresearch/WSL-Images', 'resnext101_32x32d_wsl')
# or
#model = torch.hub.load('facebookresearch/WSL-Images', 'resnext101_32x48d_wsl')
model.eval()

ResNeXt WSL使用例子:

# Download an example image from the pytorch website
import urllib
url, filename = ("https://github.com/pytorch/hub/raw/master/dog.jpg", "dog.jpg")
try: urllib.URLopener().retrieve(url, filename)
except: urllib.request.urlretrieve(url, filename)
# sample execution (requires torchvision)
from PIL import Image
from torchvision import transforms
input_image = Image.open(filename)
preprocess = transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
input_tensor = preprocess(input_image)
input_batch = input_tensor.unsqueeze(0) # create a mini-batch as expected by the model# move the input and model to GPU for speed if available
if torch.cuda.is_available():input_batch = input_batch.to('cuda')model.to('cuda')with torch.no_grad():output = model(input_batch)
# Tensor of shape 1000, with confidence scores over Imagenet's 1000 classes
print(output[0])
# The output has unnormalized scores. To get probabilities, you can run a softmax on it.
print(torch.nn.functional.softmax(output[0], dim=0))
只有一点需要注意:这次开源的模型,要求所有输入图像,都用相同的方式归一化 (Normalization) 。

ResNeXt主页、GitHub项目、ECCV论文
Colab Demo:https://colab.research.google.com/github/pytorch/pytorch.github.io/blob/master/assets/hub/facebookresearch_WSL-Images_resnext.ipynb、

残差网络ResNet到ResNeXt解读,最强ResNeXt预训练模型已开源及如何使用相关推荐

  1. 对残差网络resnet shortcut的解释

    重读残差网络--resnet(对百度vd模型解读) 往事如yan 已于 2022-02-25 07:53:37 修改 652 收藏 4 分类专栏: AI基础 深度学习概念 文章标签: 网络 cnn p ...

  2. (pytorch-深度学习)实现残差网络(ResNet)

    实现残差网络(ResNet) 我们一般认为,增加神经网络模型的层数,充分训练后的模型理论上能更有效地降低训练误差. 理论上,原模型解的空间只是新模型解的空间的子空间.也就是说,如果我们能将新添加的层训 ...

  3. dlibdotnet 人脸相似度源代码_使用dlib中的深度残差网络(ResNet)实现实时人脸识别 - supersayajin - 博客园...

    opencv中提供的基于haar特征级联进行人脸检测的方法效果非常不好,本文使用dlib中提供的人脸检测方法(使用HOG特征或卷积神经网方法),并使用提供的深度残差网络(ResNet)实现实时人脸识别 ...

  4. 残差网络ResNet

    文章目录 ResNet模型 两个注意点 关于x 关于残差单元 核心实验 原因分析 ResNet的效果 题外话 ResNet是由何凯明在论文Deep Residual Learning for Imag ...

  5. 深度残差网络RESNET

    一.残差神经网络--ResNet的综述 深度学习网络的深度对最后的分类和识别的效果有着很大的影响,所以正常想法就是能把网络设计的越深越好, 但是事实上却不是这样,常规的网络的堆叠(plain netw ...

  6. 深度学习目标检测 RCNN F-RCNN SPP yolo-v1 v2 v3 残差网络ResNet MobileNet SqueezeNet ShuffleNet

    深度学习目标检测--结构变化顺序是RCNN->SPP->Fast RCNN->Faster RCNN->YOLO->SSD->YOLO2->Mask RCNN ...

  7. 吴教授的CNN课堂:进阶 | 从LeNet到残差网络(ResNet)和Inception Net

    转载自:https://www.jianshu.com/p/841ac51c7961 第二周是关于卷积网络(CNN)进阶部分,学到挺多新东西.因为之前了解过CNN基础后,就大多在用RNN进行自然语言处 ...

  8. 何恺明编年史之深度残差网络ResNet

    文章目录 前言 一.提出ResNet原因 二.深度残差模块 1.数学理论基础 2.深度网络结构 三.Pytorch代码实现 四.总结 前言 图像分类是计算机视觉任务的基石,在目标监测.图像分割等任务中 ...

  9. 【深度学习】深度残差网络ResNet

    文章目录 1 残差网络ResNet 1.1要解决的问题 1.2 残差网络结构 1.3 捷径连接 1.4 总结 1 残差网络ResNet 1.1要解决的问题   在传统CNN架构中,如果我们简单堆叠CN ...

最新文章

  1. NEU 1040 Count
  2. 【Google Play】正式版上架流程 ( 创建版本 | 设置国家地区 | 发布正式版 )
  3. ACL 2019 | 巧用文本语境信息:基于上下文感知的向量优化
  4. 【CDS技术揭秘系列 02】阿里云CDS-SLS大揭秘
  5. ACM题解系列之一:刘汝佳:《算法竞赛入门经典》(第2版)
  6. 两个富翁打赌_打赌您无法解决这个Google面试问题。
  7. 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
  8. 使用Java处理大文件
  9. 路德维希贝多芬计算机怎么操作,贝多芬是不是听不见和看不见
  10. 单片机 c语言 宏程序,宏程序学习的几点心得.doc
  11. 【EOS】EOS环境基础
  12. C# string.Format json格式字符串报错”输入字符串的格式不正确“
  13. 计算机桌面怎么改为d盘,win7怎么把桌面文件夹路径改为d盘
  14. Docker容器下安装ubantu,其中 command not found 的问题(已经解决)
  15. 从万物归零到虚拟与现实交错
  16. Android开发者进退两难的出路;转行还是进阶?转行转什么最好
  17. jenkins启动一直显示 Jenkins正在启动,请稍后...
  18. 浅谈光耦电路在开关量采集电路中的设计
  19. AJAXJSON基础入门与提升
  20. codeforces 448CPainting Fence

热门文章

  1. 毕业了,等待我们的是什么?
  2. 学生家乡网页设计作品静态HTML网页模板源码 广西旅游景点网页设计 大学生家乡主题网站制作 简单家乡介绍网页设计成品
  3. 火狐资产2.6浏览器 下载_通过浏览器体验资产商店!
  4. C#获取本机局域网ip和公网ip
  5. Yolov8如何在训练意外中断后接续训练
  6. Chinese-LLaMA-Alpaca:优秀的开源中文语言模型预训练工具
  7. 协议僵化 or 协议僵化
  8. 计算机整体硬盘销毁,如何完全销毁硬盘上的数据?
  9. ListView制作简单表格
  10. BT结束,高宽带有何用?