【论文研读】不使用自然图片进行预训练

本文涉及两篇文章,作者均为Hirokatsu Kataoka;第一篇文章《Pre-training without Natural Images》是分形理论生成的数据集在CNN上预训练的研究,第二篇文章《Can Vision Transformers Learn without Natural Images?》是将原思想拓展到Transformer上。


Pre-training without Natural Images


1 概览

(1)存在问题

使用自然图片及标签做预训练存在以下问题:

  • 许多大型数据集均是以众包任务的形式创建的,参与标注的人员有可能缺乏专业性,导致标注信息存在不够精确、侵犯隐私、违背道德等问题
  • 许多数据集存在侵权问题,而只能应用于非商业化用途

(2)研究内容

本文研究内容:使用公式驱动的监督学习及分形理论自动生成图片和标签数据:

  • 没有自然图像的预训练,可通过公式驱动的图像投影来简化大规模数据库的构建,进而有效的进行预训练
  • 公式驱动的图片数据集能够有效解决当前存在的CNN预训练问题:无需人工标注、无需数据集下载

(3)本文贡献

本文提出公式驱动的监督学习(formula-driven supervised learning),可以实现对卷积神经网络不使用任何自然图片来进行预训练。

  • 提供了一种使用分形理论自动生成大规模数据集的方法
  • 使用随机搜索分形数据集生成了2个大型数据集:FractalDB-1kFractalDB-10k
  • 这种自动生成策略可以生成无限大的带标签数据集
  • 使用该自动生成的数据集进行预训练,部分精度超越了在真实数据集上做预训练。

2 自动生成大型数据集


在这里插入图片描述

使用迭代函数系统(iterated function system (IFS))生成无限多的分形图片I和对应的分形类别c


(1)分形图片的生成

迭代函数系统(IFS):
IFS ⁡ = { X ; w 1 , w 2 , ⋯   , w N ; p 1 , p 2 , ⋯   , p N } \operatorname{IFS}=\left\{\mathcal{X} ; w_{1}, w_{2}, \cdots, w_{N} ; p_{1}, p_{2}, \cdots, p_{N}\right\} IFS={X;w1,w2,,wN;p1,p2,,pN}

  • w i : X → X w_i: \mathcal{X} \to \mathcal{X} wi:XX:仿射变换方程,预先设定;
  • p i p_i pi:选择对应变换方程的概率值,和为1,预先设定
    使用IFS,每个分形 S = { x t } t = d ∞ ∈ X S=\left\{\boldsymbol{x}_{t}\right\}_{t=d}^{\infty} \in \mathcal{X} S={xt}t=dX是通过随机迭代算法(random iteration algorithm)构造出来的:
  • t:迭代序号;t=0, 1, 2, ...
  • 第一步:按照概率 p i = p ( w ∗ = w i ) p_i=p(w^*=w_i) pi=p(w=wi)从集合 { w 1 , w 2 , . . . , w N } \left\{w_{1}, w_{2}, ..., w_N\right\} {w1,w2,...,wN}选择一个仿射变换方程 w ∗ w^* w
  • 第二步:使用 w ∗ w^* w迭代出一个新点 x t + 1 = w ∗ ( x t ) x_{t+1}=w^*(x_t) xt+1=w(xt)
  • 不断重复第一、二步,最终得到分形图像

(2)分形类别

分形类别与仿射变换方程中参数a, b, c, d, e, f的取值有关:
w i ( x ; θ i ) = [ a i b i c i d i ] x + [ e i f i ] w_{i}\left(\boldsymbol{x} ; \theta_{i}\right)=\left[\begin{array}{ll} a_{i} & b_{i} \\ c_{i} & d_{i} \end{array}\right] \boldsymbol{x}+\left[\begin{array}{l} e_{i} \\ f_{i} \end{array}\right] wi(x;θi)=[aicibidi]x+[eifi]
预先假定分形类别总数为1000或者10000

参数的生成步骤:

  • i) 确定N值:N为仿射变换方程的数量,从离散均匀分布N={2, 3, 4, 5, 6, 7, 8}随机采样
  • ii) 确定 θ i \theta_i θi,即第i个仿射变换方程的参数 a i , b i , c i , d i , e i , f i a_i, b_i, c_i, d_i, e_i, f_i ai,bi,ci,di,ei,fi:分别从均匀分布[-1, 1]中采样;重复N次,生成Na-f
  • iii)确定 p i p_i pi p i = ( det ⁡ A i ) / ( ∑ i = 1 N det ⁡ A i ) p_{i}=\left(\operatorname{det} A_{i}\right) /\left(\sum_{i=1}^{N} \operatorname{det} A_{i}\right) pi=(detAi)/(i=1NdetAi),其中 A i = ( a i , b i ; c i , d i ) A_i=(a_i, b_i; c_i, d_i) Ai=(ai,bi;ci,di),是仿射变换的旋转矩阵
  • iv) 不同的参数 Θ i = { ( θ i , p i ) } i = 1 N \Theta_{i}=\left\{\left(\theta_{i}, p_{i}\right)\right\}_{i=1}^{N} Θi={(θi,pi)}i=1N 就是不同的类别

(3)参数

  • #category#instance#category是类别标签数量,#instance是同一个类别中的实例数量;两者对预训练效果均有影响
    在这里插入图片描述

  • PatchPointPoint即为上述使用随机迭代逐个生成点的方法;Patch是重复进行以下步骤t次:

    • 选择一个像素点(u, v)
    • 使用一个3 * 3的随机点的patch插入到该位置
  • 填充率filling rate r:取值{0.05, 0.10, 0.15, 0.20, 0.25}

  • 类内分形的权重w:为了让同一个类别中的样本有一定差异性,需设置一个w,去和参数a_i, b_i, c_i, d_i, e_i中的一个相乘,以改变参数取值,进而改变生成的分形图像;取值:{0.8, 0.9, 1.0, 1.1, 1.2}

  • Dot(t):一个分形图片中点的数量,即迭代的次数t,取值:{100K, 200K, 400K, 800K}

  • W, H:图像的宽、高,取值:{256, 362, 512, 764, 1024},像素值均为(127,127,127),图片均为灰度图


3 实验


实验设置:

  • 网络:ResNet-50
  • 优化器:SGDmomentum=0.9learning_rate=0.01,学习率在30 epoch60 epoch时均减小至原来的0.1
  • batch_size256
  • epoch90
  • 数据增强:从256 * 256随机裁剪至224 * 224
  • fine-tuning数据集:CIFAR-10/100(C10, C100)ImageNet-100(IN100)Places-30(P30)

(1) Exploration study

#category#instance

经实验论证,数值越大越好。最终选择#category1000个类别,#instance每个类别有1000个实例
在这里插入图片描述

Patch vs. Point

3*3 Patch效果比用点效果好

在这里插入图片描述

填充率filling rate

取值0.10效果效果最好
在这里插入图片描述

类内分形权重的取值间隔

取值间隔为0.4效果最好,最终取值为:{0.2, 0.6, 1.0, 1.4, 1.8}
在这里插入图片描述

#Dot迭代次数

迭代次数为200k时获得最佳的精度与速度的权衡
在这里插入图片描述

图片尺寸

图片尺寸为256*256362*362时效果较好
在这里插入图片描述


(2)与其他预训练数据集的对比

  • Scratch:不做预训练
  • Places-30/365
  • ImageNet-100/1k
  • FractalDB-1k/10k
    在这里插入图片描述

在这里插入图片描述



以下这篇是同作者的另一篇文章,将在CNN上进行无自然图片的预训练思想,拓展到ViT上。


Can Vision Transformers Learn without Natural Images?


说明:

对上一篇文章中每个类别中1000个样本的生成策略进行了说明:
为保证同类样本间存在一定微小差异,使用下述三种方法:

  • i)对分形参数进行微调
    • 使用权重w(预先给定4种),对仿射变换的6个参数 a i , b i , c i , d i , e i a_i, b_i, c_i, d_i, e_i ai,bi,ci,di,ei 中的任意一个进行微调
    • 原始参数 + 乘了权重后的参数,总计有:1 + 4 *6 = 25

  • ii)旋转
    • 四种操作:{none, horizontal flip, vertical flip, horizontal vertical flip}
  • iii)使用patch生成分形
    • 使用10种不同的3*3 patch代替点进行迭代生成分形
  • 使用上述三种方法,可保证每个类别中有25 * 4 * 10 = 1000种样本

异同点:

  • 本文数据集使用彩色分形数据集(具体策略未知),而上篇文章使用灰度图的分形数据集
  • 训练epoch加长
  • 其他数据集生成思路、训练思路、实验对比思路与上一篇文章基本相同
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值