Shortcuts

数据变化

数据变换概述

add_transforms 中我们介绍了如何构建 PipelinePipeline 里有一系列的数据变换。MMSelfSup 中数据变换主要分为三类:

  1. 处理数据用到的数据变换。processing.py 中定义了独特的数据变换,比如RandomCrop, RandomResizedCropRandomGaussianBlur。我们也可以用其它仓库的数据变换,比如 MMCV 中的 LoadImageFromFile

  2. 不同视角看同一照片的数据变换打包器。这个定义在 wrappers.py

  3. 将数据变换使得数据能输入算法中。这个定义在 formatting.py

总的来说,我们用的是如下的这些数据变换。我们将详细讨论最后两种数据变换。

类别 作用
BEiTMaskGenerator 为图像产生随机掩码,参考自 BEiT
SimMIMMaskGenerator 产生随机块状掩码,参考自 SimMIM
ColorJitter 随机改变图像亮度,对比度,饱和度和色调
RandomCrop 随机裁切图像
RandomGaussianBlur 随机高斯模糊,参考自, SimCLR
RandomResizedCrop 随机裁切图像,并调整大小到特定比例
RandomResizedCropAndInterpolationWithTwoPic 随机裁切图像,并调整大小到特定比例,可以给定不同的插值方法
RandomSolarize 随机曝光调整,参考自 BYOL
RotationWithLabels 旋转预测
RandomPatchWithLabels 随机分块
RandomRotation 随机旋转图像
MultiView 多角度图像的封装器
PackSelfSupInputs 打包数据为可以送入算法的格式

MultiView 简介

我们为一些算法定义了名为 MultiView 的多角度照片输入的封装器,比如 MoCo 系列,SimCLR,SwAV 等。在配置文件中,我们能这样定义:

pipeline = [
     dict(type='MultiView',
          num_views=2,
          transforms=[
            [dict(type='Resize', scale=224),]
          ])
]

这意味着数据管道里面有两个角度。

我们也可以这样定义有不同角度的数据管道:

pipeline = [
     dict(type='MultiView',
          num_views=[2, 6],
          transforms=[
            [
              dict(type='Resize', scale=224)],
            [
              dict(type='Resize', scale=224),
              dict(type='RandomSolarize')],
          ])
]

这意味着有两个数据管道,他们分别有两个角度和六个角度。在 imagenet_mocov1.pyimagenet_mocov2.pyimagenet_swav_mcrop-2-6.py 中有更多例子。

PackSelfSupInputs 简介

我们定义了一个名为 PackSelfSupInputs 的类来将数据转换为能输入算法中的格式。这种转换通常在数据管道的最后,就像下面这样:

train_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(type='MultiView', num_views=2, transforms=[view_pipeline]),
    dict(type='PackSelfSupInputs', meta_keys=['img_path'])
]
Read the Docs v: stable
Versions
latest
stable
1.x
dev-1.x
0.x
Downloads
pdf
html
epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.