Ejemplo n.º 1
0
def get_input_cifar10():
    train, test = dataset.Cifar10('train'), dataset.Cifar10('test',
                                                            shuffle=False)

    def preprocess(x):
        image, label = x
        onehot = np.zeros(10)
        onehot[label] = 1.0
        return image, onehot

    return MapData(train,
                   preprocess), MapData(test,
                                        preprocess), ((32, 32, 3), (10, ))
Ejemplo n.º 2
0
def get_data(train_or_test, isMixup, alpha):
    isTrain = train_or_test == 'train'
    ds = dataset.Cifar10(train_or_test)
    if isTrain:
        augmentors = [
            imgaug.CenterPaste((40, 40)),
            imgaug.RandomCrop((32, 32)),
            imgaug.Flip(horiz=True),
        ]
        ds = AugmentImageComponent(ds, augmentors)

    batch = BATCH_SIZE
    ds = BatchData(ds, batch, remainder=not isTrain)

    def f(dp):
        images, labels = dp
        one_hot_labels = np.eye(CLASS_NUM)[labels]  # one hot coding
        if not isTrain or not isMixup:
            return [images, one_hot_labels]

        # mixup implementation:
        # Note that for larger images, it's more efficient to do mixup on GPUs (i.e. in the graph)
        weight = np.random.beta(alpha, alpha, BATCH_SIZE)
        x_weight = weight.reshape(BATCH_SIZE, 1, 1, 1)
        y_weight = weight.reshape(BATCH_SIZE, 1)
        index = np.random.permutation(BATCH_SIZE)

        x1, x2 = images, images[index]
        x = x1 * x_weight + x2 * (1 - x_weight)
        y1, y2 = one_hot_labels, one_hot_labels[index]
        y = y1 * y_weight + y2 * (1 - y_weight)
        return [x, y]

    ds = MapData(ds, f)
    return ds
Ejemplo n.º 3
0
def get_data(train_or_test, cifar_classnum):
    isTrain = train_or_test == 'train'
    if cifar_classnum == 10:
        ds = dataset.Cifar10(train_or_test)
    else:
        ds = dataset.Cifar100(train_or_test)
    if isTrain:
        augmentors = [
            imgaug.RandomCrop((30, 30)),
            imgaug.Flip(horiz=True),
            imgaug.Brightness(63),
            imgaug.Contrast((0.2, 1.8)),
            imgaug.GaussianDeform([(0.2, 0.2), (0.2, 0.8), (0.8, 0.8),
                                   (0.8, 0.2)], (30, 30), 0.2, 3),
            imgaug.MeanVarianceNormalize(all_channel=True)
        ]
    else:
        augmentors = [
            imgaug.CenterCrop((30, 30)),
            imgaug.MeanVarianceNormalize(all_channel=True)
        ]
    ds = AugmentImageComponent(ds, augmentors)
    ds = BatchData(ds, 128, remainder=not isTrain)
    if isTrain:
        ds = PrefetchDataZMQ(ds, 5)
    return ds
Ejemplo n.º 4
0
def get_data(phase):
    is_train = phase == "train"
    ds = dataset.Cifar10(phase)
    pp_mean = ds.get_per_pixel_mean(("train", ))
    if is_train:
        augmentors = [
            imgaug.CenterPaste((40, 40)),
            imgaug.RandomCrop((32, 32)),
            imgaug.Flip(horiz=True),
            imgaug.MapImage(lambda x: x - pp_mean),
        ]
    else:
        augmentors = [imgaug.MapImage(lambda x: x - pp_mean)]
    ds = AugmentImageComponent(ds, augmentors)
    ds = BatchData(ds, BATCH_SIZE, remainder=not is_train)
    return ds
def create_dataflow(partition='train'):
    ds = dataset.Cifar10(partition)
    pp_mean = ds.get_per_pixel_mean()
    if partition == 'train':
        augmentors = [
            imgaug.CenterPaste((40, 40)),
            imgaug.RandomCrop((32, 32)),
            imgaug.Flip(horiz=True),
            imgaug.MapImage(lambda x: x - pp_mean),
        ]
    else:
        augmentors = [imgaug.MapImage(lambda x: x - pp_mean)]
    ds = AugmentImageComponent(ds, augmentors)
    ds = BatchData(ds, batch_size, remainder=(partition != 'train'))
    if partition == 'train':
        ds = PrefetchData(ds, 3, 2)
    return ds
Ejemplo n.º 6
0
def get_data(train_or_test):
    isTrain = train_or_test == 'train'
    ds = dataset.Cifar10(train_or_test)
    pp_mean = ds.get_per_pixel_mean()
    if isTrain:
        augmentors = [
            imgaug.CenterPaste((40, 40)),
            imgaug.RandomCrop((32, 32)),
            imgaug.Flip(horiz=True),
            imgaug.MapImage(lambda x: x - pp_mean),
        ]
    else:
        augmentors = [imgaug.MapImage(lambda x: x - pp_mean)]
    ds = AugmentImageComponent(ds, augmentors)
    ds = BatchData(ds, BATCH_SIZE, remainder=not isTrain)
    if isTrain:
        ds = PrefetchData(ds, 3, 2)
    return ds
Ejemplo n.º 7
0
def get_data(train_or_test, isMixup, alpha):
    isTrain = train_or_test == 'train'
    ds = dataset.Cifar10(train_or_test)
    pp_mean = ds.get_per_pixel_mean()
    if isTrain:
        augmentors = [
            imgaug.CenterPaste((40, 40)),
            imgaug.RandomCrop((32, 32)),
            imgaug.Flip(horiz=True),
            imgaug.MapImage(lambda x: x - pp_mean),
        ]
    else:
        augmentors = [
            imgaug.MapImage(lambda x: x - pp_mean)
        ]
    ds = AugmentImageComponent(ds, augmentors)

    if isMixup:
        batch = 2 * BATCH_SIZE
    else:
        batch = BATCH_SIZE
    ds = BatchData(ds, batch, remainder=not isTrain)

    def f(ds):
        images, labels = ds
        one_hot_labels = np.eye(CLASS_NUM)[labels]  # one hot coding
        if not isTrain or not isMixup:
            return [images, one_hot_labels]

        # mixup:
        weight = np.random.beta(alpha, alpha, BATCH_SIZE)
        x_weight = weight.reshape(BATCH_SIZE, 1, 1, 1)
        y_weight = weight.reshape(BATCH_SIZE, 1)
        x1, x2 = np.split(images, 2, axis=0)
        x = x1 * x_weight + x2 * (1 - x_weight)
        y1, y2 = np.split(one_hot_labels, 2, axis=0)
        y = y1 * y_weight + y2 * (1 - y_weight)
        return [x, y]

    ds = MapData(ds, f)

    if isTrain:
        ds = PrefetchData(ds, 3, 2)
    return ds
Ejemplo n.º 8
0
def get_cifar_augmented_data(subset,
                             options,
                             do_multiprocess=True,
                             do_validation=False,
                             shuffle=None):
    isTrain = subset == 'train' and do_multiprocess
    shuffle = shuffle if shuffle is not None else isTrain
    if options.num_classes == 10 and options.ds_name == 'cifar10':
        ds = dataset.Cifar10(subset,
                             shuffle=shuffle,
                             do_validation=do_validation)
        cutout_length = 16
        n_holes = 1
    elif options.num_classes == 100 and options.ds_name == 'cifar100':
        ds = dataset.Cifar100(subset,
                              shuffle=shuffle,
                              do_validation=do_validation)
        cutout_length = 8
        n_holes = 1
    else:
        raise ValueError(
            'Number of classes must be set to 10(default) or 100 for CIFAR')
    logger.info('{} set has n_samples: {}'.format(subset, len(ds.data)))
    pp_mean = ds.get_per_pixel_mean()
    if isTrain:
        logger.info('Will do cut-out with length={} n_holes={}'.format(
            cutout_length, n_holes))
        augmentors = [
            imgaug.CenterPaste((40, 40)),
            imgaug.RandomCrop((32, 32)),
            imgaug.Flip(horiz=True),
            imgaug.MapImage(lambda x: (x - pp_mean) / 128.0),
            Cutout(length=cutout_length, n_holes=n_holes),
        ]
    else:
        augmentors = [imgaug.MapImage(lambda x: (x - pp_mean) / 128.0)]
    ds = AugmentImageComponent(ds, augmentors)
    ds = BatchData(ds,
                   options.batch_size // options.nr_gpu,
                   remainder=not isTrain)
    if do_multiprocess:
        ds = PrefetchData(ds, 3, 2)
    return ds
Ejemplo n.º 9
0
def get_data_cifar(train_or_test, cifar_classnum, image_shape, batch_size):
    from tensorpack.dataflow import dataset
    isTrain = train_or_test == 'train'
    if cifar_classnum == 10:
        ds = dataset.Cifar10(train_or_test)
    else:
        ds = dataset.Cifar100(train_or_test)

    if isTrain:
        import numpy as np
        import cv2
        augmentors = [
            GoogleNetResize(target_shape=image_shape),
            imgaug.RandomOrderAug([
                imgaug.BrightnessScale((0.6, 1.4), clip=False),
                imgaug.Contrast((0.6, 1.4), clip=False),
                imgaug.Saturation(0.4, rgb=False),
                # rgb-bgr conversion for the constants copied from fb.resnet.torch
                imgaug.Lighting(
                    0.1,
                    eigval=np.asarray([0.2175, 0.0188, 0.0045][::-1]) * 255.0,
                    eigvec=np.array([[-0.5675, 0.7192, 0.4009],
                                     [-0.5808, -0.0045, -0.8140],
                                     [-0.5836, -0.6948, 0.4203]],
                                    dtype='float32')[::-1, ::-1])
            ]),
            imgaug.Flip(horiz=True),
        ]
    else:
        import cv2
        re_size = 256
        if image_shape == 32:
            re_size = 40
        augmentors = [
            imgaug.ResizeShortestEdge(re_size, cv2.INTER_CUBIC),
            imgaug.CenterCrop((image_shape, image_shape)),
        ]
    ds = AugmentImageComponent(ds, augmentors)
    ds = BatchData(ds, batch_size, remainder=not isTrain)
    if isTrain:
        ds = PrefetchDataZMQ(ds, 5)
    return ds
Ejemplo n.º 10
0
 def get_data(self, train_or_test):
     isTrain = train_or_test == 'train'
     ds = dataset.Cifar10(train_or_test, dir='.')
     pp_mean = ds.get_per_pixel_mean()
     if isTrain:
         augmentors = [
             imgaug.CenterPaste((40, 40)),
             imgaug.RandomCrop((32, 32)),
             imgaug.Flip(horiz=True),
             # imgaug.Brightness(20),
             # imgaug.Contrast((0.6,1.4)),
             imgaug.MapImage(lambda x: x - pp_mean),
         ]
     else:
         augmentors = [imgaug.MapImage(lambda x: x - pp_mean)]
     ds = AugmentImageComponent(ds, augmentors)
     ds = BatchData(ds, self.batch_size, remainder=not isTrain)
     if isTrain:
         ds = PrefetchData(ds, 3, 2)
     return ds
Ejemplo n.º 11
0
def get_data(train_or_test, classnum):
    isTrain = train_or_test == 'train'
    if classnum == 10:
        ds = dataset.Cifar10(train_or_test)
    else:
        ds = dataset.Cifar100(train_or_test)
    #  if isTrain:
    #      augmentors = [
    #          imgaug.Flip(horiz=True),
    #          imgaug.Brightness(63),
    #          imgaug.Contrast((0.2, 1.8)),
    #          imgaug.MeanVarianceNormalize(all_channel=True)
    #      ]
    #  else:
    #      augmentors = [
    #          imgaug.MeanVarianceNormalize(all_channel=True)
    #      ]
    #  ds = AugmentImageComponent(ds, augmentors)
    ds = BatchData(ds, 256, remainder=not isTrain)
    return ds
Ejemplo n.º 12
0
def get_data(train_or_test):
    isTrain = train_or_test == 'train'
    ds = dataset.Cifar10(train_or_test)

    cifar10_mean = np.asarray([0.4914, 0.4822, 0.4465], dtype="float32") * 255.
    cifar10_invstd = 1.0 / (
        np.asarray([0.2471, 0.2435, 0.2616], dtype="float32") * 255)

    if isTrain:
        augmentors = imgaug.AugmentorList([
            imgaug.RandomCrop((32, 32)),
            imgaug.Flip(horiz=True),
            imgaug.RandomCutout(8, 8),
        ])

    def mapf(dp):
        img, label = dp
        img = (img.astype("float32") - cifar10_mean) * cifar10_invstd

        if isTrain:
            img = np.pad(img, [(4, 4), (4, 4), (0, 0)], mode='reflect')
            img = augmentors.augment(img)

            onehot = np.zeros((10, ), dtype=np.float32) + 0.2 / 9
            onehot[label] = 0.8
        else:
            onehot = np.zeros((10, ), dtype=np.float32)
            onehot[label] = 1.

        if DATA_FORMAT == "NCHW":
            img = img.transpose(2, 0, 1)
        return img, onehot

    if not isTrain:
        ds = MapData(ds, mapf)
        ds = BatchData(ds, BATCH, remainder=False)
        return ds

    ds = MultiProcessMapAndBatchDataZMQ(ds, 8, mapf, BATCH, buffer_size=20000)
    ds = RepeatedData(ds, -1)
    return ds
Ejemplo n.º 13
0
def get_data(train_or_test):
    isTrain = train_or_test == 'train'
    ds = dataset.Cifar10(train_or_test)
    if isTrain:
        augmentors = [
            imgaug.CenterPaste((40, 40)),
            imgaug.RandomCrop((32, 32)),
            imgaug.Flip(horiz=True),
        ]
        ds = AugmentImageComponent(ds, augmentors)

    batch = BATCH_SIZE
    ds = BatchData(ds, batch, remainder=not isTrain)

    def f(dp):
        images, labels = dp
        one_hot_labels = np.eye(CLASS_NUM)[labels]  # one hot coding
        return [images, one_hot_labels]

    ds = MapData(ds, f)
    return ds
Ejemplo n.º 14
0
def get_data(train_or_test, args):
    isTrain = train_or_test == 'train'
    if args.classnum == 10:
        ds = dataset.Cifar10(train_or_test)
    else:
        ds = dataset.Cifar100(train_or_test)
    data_size = ds.size()
    pp_mean = ds.get_per_pixel_mean()
    if args.model == 'resnet':
        if isTrain:
            augmentors = [
                imgaug.CenterPaste((40, 40)),
                imgaug.RandomCrop((32, 32)),
                imgaug.Flip(horiz=True),
                imgaug.MapImage(lambda x: x - pp_mean),
            ]
        else:
            augmentors = [imgaug.MapImage(lambda x: x - pp_mean)]
    else:
        if isTrain:
            augmentors = [
                imgaug.RandomCrop((30, 30)),
                imgaug.Flip(horiz=True),
                imgaug.Brightness(63),
                imgaug.Contrast((0.2, 1.8)),
                imgaug.MeanVarianceNormalize(all_channel=True)
            ]
        else:
            augmentors = [
                imgaug.CenterCrop((30, 30)),
                imgaug.MeanVarianceNormalize(all_channel=True)
            ]
    ds = AugmentImageComponent(ds, augmentors)
    ds = BatchData(ds, args.batch_size, remainder=not isTrain)
    # ds = BatchData(ds, 16, remainder=not isTrain)
    if isTrain:
        ds = PrefetchDataZMQ(ds, 5)
    return ds, data_size
def get_data_adaMixup(train_or_test, isMixup, alpha):
    isTrain = train_or_test == 'train'
    if isResNet:
     ds = dataset.Cifar10(train_or_test)
    else:
     ds =Mnist(train_or_test)
        
    if isResNet:
     if isTrain:
        augmentors = [
            imgaug.CenterPaste((40, 40)),
            imgaug.RandomCrop((32, 32)),
            imgaug.Flip(horiz=True),
        ]
        ds = AugmentImageComponent(ds, augmentors)

    batch = BATCH_SIZE
    ds = BatchData(ds, batch, remainder=not isTrain)

    def f(dp):

        images, labels = dp
        num_samples = labels.shape[0] 
        one_hot_labels = np.eye(CLASS_NUM)[labels]  # one hot coding

        index = np.random.permutation(num_samples)
        if isTrain:
          x1, x2 = images, images[index]
          y1, y2 = one_hot_labels, one_hot_labels[index]
        else:
          x1, x2 = images, images
          y1, y2 = one_hot_labels, one_hot_labels
        return [x1,x2,y1,y2]

    ds = MapData(ds, f)
    return ds
Ejemplo n.º 16
0
                                          480000, 0.2, True)
        wd_cost = tf.multiply(wd_w, regularize_cost('.*/W', tf.nn.l2_loss), name='wd_cost')
        add_moving_summary(cost, wd_cost)

        add_param_summary(('.*/W', ['histogram']))   # monitor W
        return tf.add_n([cost, wd_cost], name='cost')

    def optimizer(self):
        lr = tf.get_variable('learning_rate', initializer=0.01, trainable=False)
        opt = tf.train.MomentumOptimizer(lr, 0.9)
        return opt


def get_data(train_or_test):
    isTrain = train_or_test == 'train'
    ds = dataset.Cifar10(train_or_test)
    pp_mean = ds.get_per_pixel_mean()
    if isTrain:
        augmentors = [
            imgaug.CenterPaste((40, 40)),
            imgaug.RandomCrop((32, 32)),
            imgaug.Flip(horiz=True),
            imgaug.MapImage(lambda x: x - pp_mean),
        ]
    else:
        augmentors = [
            imgaug.MapImage(lambda x: x - pp_mean)
        ]
    ds = AugmentImageComponent(ds, augmentors)
    ds = BatchData(ds, BATCH_SIZE, remainder=not isTrain)
    if isTrain:
Ejemplo n.º 17
0
assert len(log_prob.get_shape().as_list()) == 3
if single_model:
    probs = tf.nn.softmax(log_prob[0])
    correct = tf.reduce_mean(tf.to_float(tf.nn.in_top_k(probs, label_ph, 1)))
else:
    log_probs = tf.log(tf.reduce_mean(tf.nn.softmax(log_prob), axis=0))
    probs = tf.nn.softmax(log_probs)
    # correct = tf.reduce_mean(tf.to_float(tf.nn.in_top_k(probs, label_ph, 1)))

ds_train, _ = get_data('train', args)
ds_test, _ = get_data('test', args)

# Untargeted BIM
from tensorpack.dataflow import dataset

pp_mean = dataset.Cifar10('train').get_per_pixel_mean()

stepsize_ph = tf.placeholder(tf.float32, [])
orig_input_ph = tf.placeholder(tf.float32, image_ph.get_shape().as_list())
# adv_inp = fgm(image_ph, probs, y=tf.one_hot(label_ph, depth=10), eps=tf.to_float(1))
pp_mean_sym = tf.tile(tf.constant(pp_mean[None]),
                      [tf.shape(image_ph)[0], 1, 1, 1])
# adv_inp = tf.clip_by_value(adv_inp, -pp_mean_sym, 255 - pp_mean_sym)
# adv_inp = tf.clip_by_value(adv_inp, orig_input_ph - stepsize_ph, orig_input_ph + stepsize_ph)
adv_inp = fgm(
    image_ph,
    probs,  #y=tf.one_hot(label_ph, depth=10)
    eps=tf.to_float(stepsize_ph))
adv_inp = tf.clip_by_value(adv_inp, -pp_mean_sym, 255 - pp_mean_sym)
adv_inp = tf.clip_by_value(adv_inp, orig_input_ph - stepsize_ph,
                           orig_input_ph + stepsize_ph)
Ejemplo n.º 18
0
import tensorpack.dataflow.dataset as dataset
import numpy as np
import tensorflow as tf
import random
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

train, test = dataset.Cifar10('train'), dataset.Cifar10('test')

n = 50000
x_train = np.array([train.data[i][0] for i in range(n)], dtype=np.float32)
y_train = np.array([train.data[i][1] for i in range(n)], dtype=np.int32)
x_test = np.array([ex[0] for ex in test.data], dtype=np.float32)
y_test = np.array([ex[1] for ex in test.data], dtype=np.int32)

del (train, test)  # frees approximately 180 MB

Y = np.zeros([n, 10])
for i in range(y_train.shape[0]):
    Y[i, y_train[i]] = 1
y_train = Y

Y = np.zeros([10000, 10])
for i in range(y_test.shape[0]):
    Y[i, y_test[i]] = 1
y_test = Y

# standardization
x_train_pixel_mean = x_train.mean(axis=0)  # per-pixel mean
x_train_pixel_std = x_train.std(axis=0)  # per-pixel std
x_train -= x_train_pixel_mean