def get_augs(shape): train_augs = [ image.HorizontalFlipAug(.5), image.RandomCropAug((shape, shape)) ] valid_augs = train_augs tests_augs = [image.CenterCropAug((shape, shape))] return train_augs, valid_augs, tests_augs
def augment_data(imags, label): datas, labels = [], [] n = imags.shape[0] for k in range(n): imag = imags[k].reshape(shape=(1, imags[k].shape[0], imags[k].shape[1], imags[k].shape[2])) for i in range(4): trans_band = transform( imag, image.HorizontalFlipAug(.5)).astype('float32') datas.append(img_norm(trans_band)) labels.append(label[k].asscalar()) for i in range(9): trans_band = transform( imag, image.RandomSizedCropAug((75, 75), .75, (.8, 1.2))).astype('float32') datas.append(img_norm(trans_band)) labels.append(label[k].asscalar()) # brightness augmenter for i in range(9): trans_band = transform( imag, image.BrightnessJitterAug(.1)).astype('float32') datas.append(img_norm(trans_band)) labels.append(label[k].asscalar()) # random crop augmenter for i in range(9): trans_band = resize(transform(imag, image.RandomCropAug((50, 50))), 75).astype('float32') datas.append(img_norm(trans_band)) labels.append(label[k].asscalar()) # center crop augmenter trans_band = resize(transform(imag, image.CenterCropAug((50, 50))), 75).astype('float32') datas.append(img_norm(trans_band)) labels.append(label[k].asscalar()) ds = nd.concat(*datas, dim=0) return ds, labels
from mxnet import nd, gluon, image batch_size = 64 train_augs = [image.HorizontalFlipAug(.5), image.RandomCropAug((224, 224))] test_augs = [image.CenterCropAug((224, 224))] data_dir = '/home/zhbli/temp/dog_dataset' train_imgs = gluon.data.vision.ImageFolderDataset( data_dir + '/train', transform=lambda X, y: transform(X, y, train_augs)) test_imgs = gluon.data.vision.ImageFolderDataset( data_dir + '/test', transform=lambda X, y: transform(X, y, test_augs)) def transform(data, label, augs): data = data.astype('float32') for aug in augs: data = aug(data) data = nd.transpose(data, (2, 0, 1)) return data, nd.array([label]).asscalar().astype('float32') def getDataset(): train_data = gluon.data.DataLoader(train_imgs, batch_size, shuffle=True) test_data = gluon.data.DataLoader(test_imgs, batch_size) return train_data, test_data
print("classes: " + str(len(training_map))) net = mobilenet1_0(classes=len(training_map)) from mxnet import init net.features = pretrained_net.features net.output.initialize(init.Xavier()) from mxnet.image import color_normalize from mxnet import image train_augs = [ image.HorizontalFlipAug(0.5), image.BrightnessJitterAug(.3), image.HueJitterAug(.1) ] test_augs = [image.ResizeAug(224), image.CenterCropAug((224, 224))] def transform(data, label, augs): data = data.astype('float32') for aug in augs: data = aug(data) data = nd.transpose(data, (2, 0, 1)) return data, nd.array([label]).asscalar().astype('float32') from mxnet.gluon.data.vision import ImageRecordDataset train_rec = root + '/data/household/train/household.rec' validation_rec = root + '/data/household/validation/household.rec' test_rec = root + '/data/household/test/household.rec'
continue img_dir = os.path.join(path_crocodile, file_name) img_arr = mx.image.imread(img_dir) img_arr = nd.transpose(img_arr, (2, 0, 1)) img_arr = (img_arr.astype(np.float32) / 255) img_arr = nd.array(img_arr.reshape((1, ) + img_arr.shape)) img_list.append(img_arr) img_list_crocodile.append(img_arr) size = 28 train_augs = [ image.HorizontalFlipAug(.5), image.ColorJitterAug(.5, .5, .5), image.RandomCropAug((size, size)), ] test_augs = [image.CenterCropAug((size, size))] def apply_aug_list(img, augs): for f in augs: img = f(img) return img def try_gpu(): try: ctx = mx.gpu() _ = nd.array([0], ctx=ctx) except: ctx = mx.cpu() return ctx
apply(img, aug) # 随机色调变化 aug = image.HueJitterAug(.5) apply(img, aug) def apply_aug_list(img, augs): for aug in augs: img = aug(img) return img train_augs = [image.HorizontalFlipAug(.5), image.RandomCropAug((28, 28))] test_augs = [image.CenterCropAug((28, 28))] from mxnet import gluon def get_transform(augs): def transform(data, label): data = data.astype('float32') if augs is not None: data = nd.stack(*[apply_aug_list(d, augs) for d in data]) data = nd.transpose(data, (0, 3, 1, 2)) return data, label.astype('float32') return transform
def apply_aug_list(img, augs): for f in augs: img = f(img) return img def train(train_augs, test_augs, learning_rate=.1): batch_size = 128 num_epochs = 10 ctx = utils.try_all_gpus() loss = gluon.loss.SoftmaxCrossEntropyLoss() train_data, test_data = get_data( batch_size, train_augs, test_augs) net = utils.resnet18(10) net.initialize(ctx=ctx, init=init.Xavier()) net.hybridize() trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': learning_rate}) utils.train( train_data, test_data, net, loss, trainer, ctx, num_epochs) train_augs = [ image.HorizontalFlipAug(.5), image.RandomCropAug((32,32)) ] test_augs = [ image.CenterCropAug((32,32)) ] train(train_augs, test_augs)
from src import utils import mxnet as mx import base64 from mxnet import image from mxnet import nd from collections import namedtuple train_augs = [ image.HorizontalFlipAug(1.), image.RandomCropAug((224, 224)) ] test_augs = [ image.CenterCropAug((224, 224)) ] def transform(data, label, augs): data = data.astype('float32') for aug in augs: data = aug(data) data = nd.transpose(data, (2, 0, 1)) return data, nd.array([label]).asscalar().astype('float32') net = mx.mod.Module.load('../model/food', 0, True) net.bind(data_shapes=[('data', (64, 3, 244, 244))]) batch = namedtuple('batch', ['data']) def score_image(image_base64_string): with open('target_image.jpg', 'wb') as f: f.write(base64.b64decode(image_base64_string)) f.close()
return (x - x_min) / (x_max - x_min) def rescale_per_image(x): assert x.ndim == 4 x = x.copy() for i in range(x.shape[0]): min_val = x[i].min().asscalar() max_val = x[i].max().asscalar() x[i] = rescale(x[i], min_val, max_val) return x train_augs = image.HorizontalFlipAug(1) test_augs = [image.CenterCropAug((32, 32))] batch_size = 64 learning_rate = .1 num_epochs = 500 randseed = 10 test_n = 'test15' ctx = utils.try_all_gpus() loss = gluon.loss.SoftmaxCrossEntropyLoss() train_data, test_data, data_num = get_data( 'C:/lagBear/S***N/finally_data/cnn_data.mat', randseed, batch_size=batch_size, train_augs=train_augs) ### resnet network ###
import mxnet as mx import numpy as np import os import Inception3_modify from mxnet import gluon, image, nd, ndarray, init from mxnet.gluon.model_zoo import vision as models import sys sys.path.append('..') import utils train_augs = [image.HorizontalFlipAug(.5), image.RandomCropAug((299, 299))] test_augs = [image.CenterCropAug((299, 299))] def transform(data, label, augs): data = data.astype('float32') for aug in augs: data = aug(data) data = nd.transpose(data, (2, 0, 1)) return data, nd.array([label]).asscalar().astype('float32') ctx = mx.gpu() data_dir = './data' batch_size = 16 epochs = 1 ###################################### true train data train_imgs = gluon.data.vision.ImageFolderDataset( data_dir + '/train_valid_test/Images',
from mxnet import image import mxnet as mx import model import os def transform(data, label, augs): data = data.astype('float32') for aug in augs: data = aug(data) data = nd.transpose(data, (2, 0, 1)) return data, nd.array([label]).asscalar().astype('float32') augs = [image.HorizontalFlipAug(.5), image.CenterCropAug((227, 227))] test_augs = [image.CenterCropAug((227, 227))] train_set = gluon.data.vision.ImageFolderDataset( root='~/.mxnet/datasets/oxford102/train_datas', transform=lambda X, y: transform(X, y, augs)) test_set = gluon.data.vision.ImageFolderDataset( root='~/.mxnet/datasets/oxford102/test_datas', transform=lambda X, y: transform(X, y, augs)) lossFunc = gluon.loss.SoftmaxCrossEntropyLoss() net = model.AlexNet() net.initialize(init=mx.init.Xavier(), ctx=mx.gpu())