自监督学习(二)自监督学习性能概述

自监督学习(二)自监督学习性能概述ScalingandBenchmarkingSelf-SupervisedVisualRepresentationLearning介绍介绍

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Introduction

本篇文章介绍一篇自监督学习的论文《Scaling and Benchmarking Self-Supervised Visual Representation Learning》论文地址,通过介绍这篇文章,可以对当前自监督学习的效果有一个大概的认识。
本文从两个方面比较了自监督学习方法的性能:

  1. 通过变化数据集的规模、模型的容量和学习任务的难易程度来比较自监督学习的性能
  2. 列举了五种学习任务和六个数据集,分别比较自监督学习、ImageNet预训练和随机初始化三个方面的性能。

总的来说,本文的结论是自监督学习的性能提升与数据集规模、模型的容量和学习任务的难度呈正相关 (这个结论有点神棍文的味儿)。但是对于不同的任务,自监督学习的性能各不相同,对于分类这样的任务,自监督方法相比于随机初始化可以取得不错的提升,但是距离ImageNet预训练还是有挺大的差别;对于目标检测这样的任务,自监督方法和ImageNet预训练的结果相当。对于surface normal estimation任务,自监督方法比其他方法都要好。从我个人的实验的结果看,其实现在自监督学习方法还是一种方法的堆叠,有没有产生效果全看pretext task任务,也就是说现在自监督学习方法距离他的目标还很远。
目前为止,针对自监督学习的方法有很多,作者在这其中选了两种比较有代表性的方法,一种是针对拼图预测的方法,另一种是针对图片上色的方法,在后面的实验中,均以这两种方法为例评估自监督学习的效果。具体的验证环节,作者使用自监督网络提取特征,之后利用这些特征训练线性分类器,执行具体的任务,也就是说自监督模型在这里只是一个特征提取器。

Scaling Self-supervised Learning

首先作者实验自监督学习的伸缩性,即通过变化数据集的规模、增加模型的容量以及增加网络的复杂性,比较自监督学习的效果变化。

增加预训练数据集的规模

自监督学习是不需要人工标注数据的,因此我们可以很容易地将其数据集规模增加上百倍。这个部分作者使用了YFCC-100M数据集,这个数据集包含100万张图片,作者均匀采样得到【1,10,50,100】万的不同子数据集,用来验证预训练数据集规模与自监督性能的影响。
文章中使用Pascal VOC07 的分类任务来验证数据集增加对结果的影响。Backbone使用Resnet50和Alxnet,分类器使用线性SVM,实验效果如下图所示:
增加预训练数据集规模对自监督性能的影响
横坐标是数据集规模的变化,纵坐标是平均精度,可以看出,随着数据集规模的增加,自监督的性能总体上是上升的,但是上升的幅度不同。对于Resnet50,在数据集规模在100M时,似乎性能还可以上升,但是对于Alexnet,性能已经趋于稳定甚至略有下降,这里面可以看出模型的容量对于性能同样具有相当的影响。

增加模型的容量

增加模型容量的实验同样可以通过上图看出来,实际上增加模型的容量对于自监督方法的性能提升具有很大的影响,适当的选取更大容量的模型是很有必要的。

增加任务的复杂度

作者在这部分通过增加拼图和上色任务的复杂度,比较了自监督方法的性能变化,如下图所示:
增加任务复杂度的影响
可以看出,增加问题复杂度总体上是有利于自监督方法的性能提升的。这可以理解为,增加任务的复杂度可以增加防止一定的过拟合,但是随着任务复杂度的提升,可能导致网络无法有效学习,有可能带来性能的下降,因此,任务的复杂度是一个需要调节的超参数。

另外,作者还分析了三者同时变化时的性能变化:
在这里插入图片描述

Benchmarking Suite for Self-supervision

这部分,作者对自监督学习应用到五种任务的性能进行了比较,这五种任务和数据集如下:
自监督学习应用任务和数据集

Image Classification

对于分类任务,作者在三个数据集上计算了分类的性能:Place205、 Voc07和COCO2014,使用了两种基准网络ResNet-50和AlextNet。
首先作者固定自监督学习网络,分别从不同的层提取特征,用线性SVM分类器进行分类,在VOC07上的结果如下面的两张图所示:
AlexNet在Voc07上的分类性能
在这里插入图片描述
可以看出,在分类任务上,自监督学习和ImageNet 监督训练的效果还是有显著的差距,大概在10到20个百分点。但是这里对于随机初始化的比较不具有代表性,因为这里特征提取层是固定的而且是随机初始化,所以相当于随机初始化的时候特征层是完全乱的,为了更好的比较随机初始化与自监督的效果,这里也列出作者的另一个实验。在这个试验里,作者将自监督模型作为预训练模型,对整个网络进行微调,下面的结果:
在这里插入图片描述
在这里插入图片描述
可以很明显的看出,尽管自监督方法距离ImageNet仍有显著的差距,但是其对随机初始化的优势也是比较明显的。也就是说自监督学习在分类任务上,比随机初始化效果好,比ImageNet初始化效果差,性能介于这两者之间。

Low-shot Image Classification

如果我们能通过自监督学习学习到一个好的图像特征表示,只需要很少的正样本我们就可以训练一个好的分类器。因此,本部分作者做了这样一个少样本下的图像分类的实验。作者在这里只是用了ResNet-50模型,数据集使用Place205和VOC07,实验的结果图下图所示:
在这里插入图片描述
可以看到,实验结果和图像分类类似,自监督学习的效果不如ImageNet但是明显好于随机初始化。

Visual Navigation

这个任务不太了解,可以参考原论文。

Object Detection

作者在VOC07和VOC07+12上实验自监督方法用于目标检测的性能,作者固定Faster R-CNN的卷积层,只调整RoI Heads,得到的实验结果如下:
在这里插入图片描述
差距依然比较显著,但是当我们增加预训练数据集的规模后,差距就变得很小了。

Surface Normal Estimation

这一类任务同样不是很了解,详细可以参考原文。作者在这个实验中,得出的结论是自监督方法要由于ImageNet预训练,这也是本文中唯一自监督取得最好效果的实验

Conclusion

尽管作者在这篇文章中没有提出什么创新的方法,但是作者对于自监督方法的详细的实验,对于快速了解自监督方法目前的现状是很有用处的,虽然这篇文章是2019年5月发布出来的,但是实验的结论在现在依然是对的。以下是我根据作者的结论和实验,结合自己的理解总结的本文的主要结论:

  1. 总体上看,自监督学习方法是有一定的效果的,但是其在一些经典的任务上(分类、检测等)相对于ImageNet预训练还有相当大的差距。造成这一现象的原因,我觉得有可能是目前的自监督学习方法通过构造Pretext task来实现,实际上就是把无监督变成有监督来学习,但是这种方法是很具有和分类标签同样的信息量的,不可避免的会出现过拟合现象,而且比有监督要严重,这也是自监督效果追不上有监督的原因。
  2. 增加模型容量、增加数据集规模和增加问题的复杂度是提高自监督学习性能的有效的方法。
  3. 自监督文章在设计实验的时候,可以做的有:图像分类、目标检测,固定特征层只训练分类器等。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193940.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ms17010批量扫描备忘

    ms17010批量扫描备忘安装一些依赖:dpkg–add-architecturei386&&apt-getupdate&&apt-getinstallwine32rm-r~/.winewinecmd.exeexit漏洞扫描一:useauxiliary/scanner/smb…

    2022年6月9日
    39
  • linux操作系统常用操作命令_运行cmd命令大全

    linux操作系统常用操作命令_运行cmd命令大全一.文件操作命令1.df 显示磁盘使用情况2.du 显示文件系统使用情况3.ls 显示目录普通使用:ls  ls-l  ll查看多个目录:ls/ /ect 查看/和/etc下的文件查看隐藏文件:ls-a 4.cd 切换工作目录切换到根目录:cd/切换到上一级目录:cd..切换到当前用户家目录:cd切换到普…

    2022年9月1日
    2
  • java ice 连接服务器_ICE实现服务器客户端

    java ice 连接服务器_ICE实现服务器客户端本文将结合实际项目,做一个基于ice的实际项目实例应用,该实例完成客户端调用服务端接口完成消息发送,计算的功能。1,创建java项目ICEServer,导入ice.jar.2,在项目下创建slice文件夹,编写model.ice,service.ice,service2.ice文件,其内容如下model.ice#ifndef_MODEL#define_MODELmodulecom{modul…

    2022年6月12日
    69
  • Spring Boot Configuration Annotation Processor not found in classpath解决方法

    版权声明: 这是我在学习SpringBoot入门中遇到的第一个问题,其实就是说提示的classpath中找不到,查询此注解的使用关系怎么指定classpath。如果是配置在application.properties下的,Spring默认在加载的时候就会转到容器里面。所有说问题很简单:解决方案: 其实这个可能就是你没有在maven中导入自动装配映射的依赖包 <!– …

    2021年11月30日
    43
  • 蓝牙协议栈初识(ceva蓝牙协议栈)

    在学习的过程中一直有疑问,为什么蓝牙技术突然就产生了呢?蓝牙技术的目的是什么呢?蓝牙技术相对于它所替代的技术存在什么样的优势和劣势呢?蓝牙技术都做了些什么呢?随着我们周围电子产品的增多电子产品之间的信息交互也越来越频繁,但是信息交互方式在无线连接出现之前只能使用有线连接,比如计算机接入键盘,鼠标,主机,扫描仪,打印机,摄像头等等,如果都是用有线连接那就会让你的工作台充满电缆,而且既然是有线的那么…

    2022年4月10日
    131
  • 如何创建HTML表单?html表单代码怎么写[通俗易懂]

    如何创建HTML表单?html表单代码怎么写[通俗易懂]html表单代码是什么?如何创建HTML表单?这些对于新手会感到陌生,下面我们为你总结一下html表单代码怎么写?以及html表单的创建?一:构建表单标签在文本编辑器中打开HTML文档,必须在<form>和</form>标签中键入HTML表单的内容。这些标签充当表单的容器,就像<div></div>容器标签一样。您可以在<form></form>标签内使用CSS或js,使您的表单看起来比较美观。2.打开<form&gt

    2022年8月11日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号