IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> LibFewShot:小样本学习与细粒度分类(一) -- 环境部署、相关论文研究 -> 正文阅读

[人工智能]LibFewShot:小样本学习与细粒度分类(一) -- 环境部署、相关论文研究

?LibFewShot源码地址:GitHub - RL-VIG/LibFewShot: LibFewShot: A Comprehensive Library for Few-shot Learning.

目录

环境部署

论文研究

卷积相关知识复习

扩展:零次学习(Zero-Shot Learning)

概念

目的

原理和问题

小样本训练学习综述

小样本学习的概念

基于微调的方法(Fine-tuning based methods)

基于元学习的方法(Meta-learning based methods)

基于度量的方法(Metric-learning based methods)

数据增强方式

细粒度识别研究综述

概念

数据集

方法


环境部署

教程地址:

Welcome to LibFewShot’s documentation! — LibFewShot 0.0.1-alpha 文档

? ? ? ?按照教程走,install.sh不能成功安装的包就单独安装,注意pytorch版本不对就会报错,比如cuda不能调用。

论文研究

卷积相关知识复习

机器学习算法之——卷积神经网络(CNN)原理讲解 - 知乎

零基础理解卷积神经网络 - 知乎

? ? ? ?图片在计算机中的表述:假设我们有一张jpg格式的480*480大小的图片,那么表示它的数组便是480*480*3大小的,数组中所有数字都描述了在那个位置处的像素信息,大小在[0,255]之间。

? ? ? ?CNN干了什么:我们人类可以通过一些与众不同的特征来识别图片,比如狗狗的爪子和狗有四条腿。同样地,电脑也可以通过识别更低层次的特征(曲线,直线)来进行图像识别。电脑用卷积层识别这些特征,并通过更多层卷积层结合在一起,就可以像人类一样识别出爪子和腿之类的高层次特征,从而完成任务。这正是CNN所做的事情的大概脉络。

? ? ? ?CNN原理:在一个系统中,一些特定的组件发挥特定的作用(视觉皮层中的神经元寻找各自特定的特征)。这一想法应用于很多机器中,并且也是CNN背后的基本原理。类比到CNN中,就是不同的卷积核寻找图像中不同的特征。

? ? ? ?CNN的工作流程:把一张图片传递给模型,经过一些卷积层,非线性化(激活函数),池化,以及全连层,最后得到结果。

? ? ? ?经典的CNN结构:input -> Conv -> ReLU -> Conv -> ReLU -> Pool -> ReLU -> Conv -> ReLU -> Pool -> Fully Connected

? ? ? ?传统的CNN结构还有其他层穿插在卷积层之间,总的来说,他们提供了非线性化,保留了数据的维度,有助于提升网络的稳定度并且抑制过拟合。

? ? ? ?一些定义:卷积核(kernel),也称为过滤器(filter),神经元(neuron),卷积核卷积的区域被称为感知域(receptive field)。卷积核同样也是一个数组(其中的数被称为权重或者参数)。很重要的一点就是卷积核的深度和输入图像的深度是一样的(这保证了它能正常工作)。

? ? ? ?获取激活图:当扫描(卷积核5 × 5 × 3)完整张图片(32 × 32 × 3)以后,你会得到一组新的28 × 28 × 1的数。这个数组大小的计算方法是(32 - 5 + 1) × (32 - 5 + 1) × 1。这组数,我们称为激活图或者特征图(activation map or feature map)。如果增加卷积核的数目,比如,我们现在有两个卷积核,那么我们就会得到一个28 × 28 × 2的数组。

? ? ? ?卷积核激活原理:通过使用更多的卷积核,我们可以更好的保留数据的空间尺寸。每一个卷积核都可以被看做特征识别器。这里所说的特征,是指直线、简单的颜色、曲线之类的东西。这些都是所有图片共有的特点。拿一个7 × 7 × 3的卷积核作为例子,它的作用是识别一种曲线。(在这一章节,简单起见,我们忽略卷积核的深度,只考虑第一层的情况)。作为一个曲线识别器,这个卷积核的结构中,曲线区域内的数字更大。(记住,卷积核是一个数组)?卷积核的激活,也就是产生了很大的数值。卷积核越多,激活图的深度就越深,我们得到的关于输入图像的信息就越多。

? ? ? ?逐步卷积特征以及分类:第一层卷积层的卷积核的目的是识别特征,他们识别像曲线和边这样的低层次特征。第一层的输入是原始图片,可第二层的输入只是第一层产生的激活图,激活图的每一层都表示了低层次特征的出现位置。如果用一些卷积核处理它,得到的会是表示高层次特征出现的激活图。这些特征的类型可能是半圆(曲线和边的组合)或者矩形(四条边的组合)。随着卷积层的增多,到最后,你可能会得到可以识别手写字迹、粉色物体等等的卷积核。当网络越来越深,卷积核会有越来越大的相对于输入图像的感知域。这意味着他们有能力考虑来自输入图像的更大范围的信息。最后,全连层寻找那些最符合特定类别的特征,并且具有相应的权重,来得到正确的概率。

? ? ? ?权重、训练:在CNN开始之前,权重都是随机生成的。卷积核并不知道要找边还是曲线。更深的卷积层也不知道要找爪子还是喙。机器确定参数(或者说权重)的方法叫做反向传播算法。反向传播可以被分成四个不同的部分。前向传播、损失函数、反向传播和权重更新。在参数训练中,可以动态调整学习率,或者说可以设置在多少次迭代(Epoch)后调小学习率。

扩展:零次学习(Zero-Shot Learning)

零次学习(Zero-Shot Learning)入门 - 知乎

概念

? ? ? ?假设小暗(纯粹因为不想用小明)和爸爸,到了动物园,看到了马,然后爸爸告诉他,这就是马;之后,又看到了老虎,告诉他:“看,这种身上有条纹的动物就是老虎。”;最后,又带他去看了熊猫,对他说:“你看这熊猫是黑白色的。”然后,爸爸给小暗安排了一个任务,让他在动物园里找一种他从没见过的动物,叫斑马,并告诉了小暗有关于斑马的信息:“斑马有着马的轮廓,身上有像老虎一样的条纹,而且它像熊猫一样是黑白色的。”最后,小暗根据爸爸的提示,在动物园里找到了斑马(意料之中的结局。。。)。

目的

? ? ? ?上述例子中包含了一个人类的推理过程,就是利用过去的知识(马,老虎,熊猫和斑马的描述),在脑海中推理出新对象的具体形态,从而能对新对象进行辨认。ZSL就是希望能够模仿人类的这个推理过程,使得计算机具有识别新事物的能力。

? ? ? ?ZSL就是希望我们的模型能够对其从没见过的类别进行分类,让机器具有推理能力,实现真正的智能。其中零次(Zero-shot)是指对于要分类的类别对象,一次也不学习。

原理和问题

? ? ? ?利用训练集数据训练模型,使得模型能够对测试集的对象进行分类,但是训练集类别和测试集类别之间没有交集;期间需要借助类别的描述,来建立训练集和测试集之间的联系,从而使得模型有效。

? ? ? ?要实现ZSL功能需要解决两个部分的问题:第一个问题是获取合适的类别描述 [公式] ;第二个问题是建立一个合适的分类模型。目前大部分工作都集中在第二个问题上,而第一个问题的研究进展比较缓慢。个人认为的原因是, 目前[公式] 的获取主要集中于一些NLP的方法,而且难度较大;而第二个问题能够用的方法较多,比较容易出成果。

小样本训练学习综述

参考文章标题:《 LibFewShot: A Comprehensive Library for Few-shot Learning

作者:Wenbin Li, Chuanqi Dong, Pinzhuo Tian, Tiexin Qin, Xuesong Yang, Ziyi Wang, Jing Huo, Yinghuan Shi, Lei Wang, Yang Gao, Jiebo Luo

小样本学习的概念

? ? ? ?小样本是指训练数据量少,样本数量少、带标签样本的数量少,比如带有稀疏和不完整标签的社交媒体数据。

? ? ? ?小样本学习是指训练类别样本较少的情况下,进行相关的学习任务,一般地,我们也希望机器通过学习大量的基类(Base Class) 后, 仅仅需要少量样本就能快速学习到新类(New Class)。

? ? ? ?通常情况下, 小样本学习能够利用类别中的少量样本, 即一个或者几个样本进行学习。类别下的训练样本只有一个的情况下, 小样本学习被称为One-shot Learning,类别下的训练样本有多个(包含一个)的情况下,称为Few-Shot Learning。

? ? ? ?评价指标:小样本图像分类算法的实验评价指标通常称为N-way K-shot,也有使用top-1和top-5来评价图像分类精度。

? ? ? ?小样本公用数据集:Omniglot、CIFAR-100、Mini-ImageNet、Tiered-ImageNet和CUB-200。从数据量级的大小来看, 数据集Tiered-ImageNet,不仅数据量级较大、类别多, 而且每类包含的样本也多; 量级较小的数据集, 例如Mini-ImageNet数据集、CIFAR-100数据集、CUB-200 数据集, 这类数据集类别较少、类内样本数相对较多; Omniglot 数据集类别较多, 但是相对类内样本少。 从数据类型的复杂度来看, Omniglot 数据集属于字符类型的图像, 包含的类型和模式较为简单, 对其进行实验往往分类精度较高; 其他数据集都属于自然图像, 包含的图像模式较为复杂, 对其进行实验分类精度往往相对较低。

基于微调的方法(Fine-tuning based methods)

原理:

? ? ? ?采用标准的Transfer学习过程,先使用基础类进行预训练,再使用新类进行微调。

? ? ? ?预训练模型用了大型数据集做训练,已经具备了提取浅层基础特征和深层抽象特征的能力,所以可以用少量数据作微调。

? ? ? ?基类-预训练:将大型辅助数据集?A 的编码表示通过 Embedding 降维,再通过分类器,然后计算交叉熵损失(下图的 L^CE ),训练得到一个 N^base-class 分类器

? ? ? ?新类-微调:在测试的过程中执行微调,对每一个新的分类任务(S,Q),每次都会基于支持集 S 重新学习一个新的 C-class 分类器,预训练的 embedding 参数?\Theta?也将会被调整以避免在支持集?S 上过拟合。当新的分类器学习完成,查询集 Q 就可以被预测了。

代表性方法:

? ? ? ?Baseline :使用线性分类器,比如全连接层,作为微调阶段的新分类器

? ? ? ?Baseline++ :将全连接层的标准内积替换为权重向量和输入特征的余弦距离

? ? ? ?RFS-simple :对特征向量进行 L2 范数归一化,用逻辑回归替代全连接层

? ? ? ?SKD-GEN0 :在?RFS-simple 上,在预训练阶段附加了基于旋转的自监督(旋转之后预测自己的旋转角度)

? ? ? ?其中,RFS-simple 和 SKD-GEN0 通过知识蒸馏的出了扩展版本 RFS-distill 和 SKD-GEN1。

优点:

? ? ? ?节省时间、资源

? ? ? ?操作简单,只需要重新调整模型参数

? ? ? ?效果明显好于元学习和情景训练

缺点:?

? ? ? ?不同目标类别差异太大时,微调效果不明显

? ? ? ?目标数据集与源数据集不类似时,微调会导致在目标数据集上的过拟合

? ? ? ?预训练模型大、参数多、模型结构灵活性差、难以改变网络结构

? ? ? ?预训练阶段使用了交叉熵损失函数,可能会使模型过度拟合所学的基础类集和支持类集,缺乏泛化能力

优化:

? ? ? ?改变学习速率来微调语言模型:传统方法认为模型每一层学习速率相同,而 ULMFit 中语言模型的每一层学习速率均不相同.模型底层表示普遍特 征,这些特征不需要很大调整,所以学习速率较慢,而高层特征更具有独特性,更能体现出任务和数据的独有特征,于是高层特征需要用更大的学习速率学习。

? ? ? ?在小样本类别上再训练的过程使用更低的学习率;在微调阶段使用自适应的梯度优化器;当源数据集和目标数据集之间存在较大差异性时,可以通过调整整个网络来实现。

基于元学习的方法(Meta-learning based methods)

原理:

? ? ? ?元学习是希望能学习到一种跨任务的元知识,好让模型能快速适应新任务。针对小样本学习,元学习在训练阶段对一系列由基类组成的小样本任务执行一个元训练范式,以让学好的模型可以在测试阶段快速适应新的小样本新任务。

? ? ? ?将辅助集A直接再训练时分为支持集S和查询集Q,让元学习器学习到“如何更好的学习一个分类器"。

代表性方法:

? ? ? ?模型无关的元学习(Model-Agnostic Meta-Learning):MAML与其说是一个深度学习模型,倒不如说是一个框架,提供一个meta-learner用于训练base-learner。这里的meta-learner即MAML的精髓所在,用于learning to learn;而base-learner则是在目标数据集上被训练,并实际用于预测任务的真正的数学模型。绝大多数深度学习模型都可以作为base-learner无缝嵌入MAML中,而MAML甚至可以用于强化学习中,这就是MAML中model-agnostic的含义。

? ? ? ?岭回归可微分鉴别器(Ridge Regression Differentiable Discriminator):在基分类器学习阶段更有效率。

优点:

? ? ? ?能学习到训练过程之外的知识。

? ? ? ?通过学习一个好的初始化权重,可以快速适应新类。

缺点:?

? ? ? ?在训练集上过拟合,泛化在新任务上的表现不好

? ? ? ?复杂度高,训练速度慢,计算成本大

? ? ? ?刚兴起,有待改进

? ? ? ?跨域问题,只有同类问题可以泛化

思考:

? ? ? ?早期元学习方法只是采用元训练范式来从头开始学习模型,但是也可以引入预训练技术。因此,可以考虑 预训练 + 元训练 的方式。

基于度量的方法(Metric-learning based methods)

原理:

? ? ? ?度量学习,学习的是如何去比较,学到一个距离度量,类内近类间远,从而比较查询集和支持集的相似性 / 距离做出分类。

? ? ? ?在训练时,将数据集A分为支持集S和查询集Q,将图片一对对的送入网络中训练,使用模型提取特征,并计算他们特征之间的距离度量,比如余弦距离或者欧式距离。?如果这两个样本属于同一个类别,那我们希望他们之间的距离应该尽量的小,甚至为0;如果这两个样本属于不同的类别,那我们希望他们之间的距离应该尽量的大,甚至是无穷大。

? ? ? ?在测试时,1-NN 分类器算出查询图片与每个支持集图片的距离度量,哪个相似度大就归于哪一类。

代表性方法:

? ? ? ?Prototypical Network:该网络直接求解每个类别在浅层空间的向量表示的prototypes(使用各个类别中所有样本的均值表示,也就是图中的c1,c2,c3),那么一旦训练好一个好的空间映射关系(对图像来说,就是CNN网络),那么对于一个没有见过的样本x,其类别由其在浅层空间距离最近的prototype的类别所决定。

优点:

? ? ? ?训练时没有学习基于数据依赖的参数,也就不需要微调过程。

? ? ? ?便于计算和公式化

缺点:?

? ? ? ?在样本数量少时,简单通过距离衡量相似度的方法准确率会有所降低。

? ? ? ?不需要微调的方式是否合理,是否学习到的度量方式就真的能适应所有测试。

数据增强方式

? ? ? ?数据增强包括三种方式。

? ? ? ?一是通过旋转、加噪、裁剪、压缩等操作,这种数据增强的方式在处理样本不足的问题中都有应用。

? ? ? ?二是利用生成模型生成新的样本或者生成新的特征,生成对抗网络可为训练样本提供更多的生成图像, 增加训练样本的多样性。

? ? ? ?三是通过函数变换,将图像中需要关注的物体本身或者其模式通过某种变换, 达到增加样本数量或者特征数量的目的。

细粒度识别研究综述

细粒度识别综述 - 知乎

概念

? ? ? ?首先什么是细粒度识别呢?就是比普通的图像识别(分类)再精细化一些,比如不但要识别这是一条狗,还要说出它是拉布拉多还是哈士奇。客观来说,这个领域目前已经过了最火的时期,每年发表在顶会上的文章寥寥无几,大部分也缺乏很好的insight。但是它并没有被解决掉,相反还差的很远。

? ? ? ?细粒度识别是极少的甚至是唯一一个人类输给算法的视觉应用,就比如各种相似的飞机的区别,很难分清。

数据集

? ? ? ?CUB-200-2011,Stanford-Cars,FGVC-Airplane,这三个比较常见,另外还有用NABirds,Stanford-Dogs的等等。

方法

? ? ? ?细粒度识别可以分成六种:

? ? ? ?1、分割:细粒度图像中前景都很像,背景却纷繁复杂,干扰分类,所以要先分割出前景,再做识别。前景分割的方法无非是GrabCut这种统计像素分布模型。

? ? ? ?2、Human-in-the-loop:把人力和计算机算法结合起来,各取所长。比如人类擅长做姿态识别,attribute prediction这种中层特征提取的活,但是不善于记忆不同类别究竟拥有哪些特征。把人类总结的特征输入到一个分类器,让算法自动分类。

? ? ? ?3、高阶Pooling:在深度学习之前,大家通常跟特征打交道,例如怎么把多个特征融合到一块,怎么学习一个更好的dictionary等等。深度学习之后,特征都自动学好了,大家的注意力慢慢转移到了Pooling上。Bilinear Pooling提出干脆把两个网络的特征做一个outer product。这之后,铺天盖地的高阶pooling的paper就出现了。Compact bilinear pooling, alpha-pooling, kernel-pooling等等。

? ? ? ?4、Part-Based Model:无论是Bag-of-words,还是Pooling,都损失了空间信息,眉毛胡子一把抓。从人类的经验看,细粒度识别需要比较局部的part-level的特征,比如说这个鸟的腿是粉色的,嘴是红的,另一个则恰好相反。这种特征只有在定位到part后才能提取出来。一个常见的pipeline就是首先做姿态识别,找到相关的部件,然后在部件上做特征提取,然后concatenate起来送到分类器分类。这里面可做的内容很多,比如把这几步合起来做到end-to-end trainable,比如不用部件标注直接推测部件,比如根据两个部件的位置做姿态的归一化等等。

? ? ? ?5、Attention:我的网络可以不断得推测出我下一步应该关注在那个地方,然后从那边提取信息。经典的注意力模型带一个recurrent neural network来不断生成下一个注意力点的。

? ? ? ?6、Transfer Learning:典型的做法是在一个大的数据集上pretrain,然后在目标数据集上fine-tune。特点是数据集够大。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 13:02:40  更:2021-12-03 13:05:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 2:27:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码