Augmentor使用学习笔记

Augmentor介绍:Augmentor是一个Python包,旨在帮助机器学习任务的图像数据人工生成和数据增强。它主要是一种数据增强工具,但也将包含基本的图像预处理功能。

github地址链接:https://github.com/mdbloice/Augmentor

安装:pip install Augmentor
更新:pip install Augmentor --upgrade

Augmentor:图像数据扩增工具,独立于平台和框架。
自动化的进行图像增强。
可选择的操作:

Augmentor创建了一个图像扩增的pipeline,可以在上面定义一系列操作。每个操作对应一个概率,用来决定是否对图像进行处理。

使用:
初始化一个Pipeline object,使其指向一个目录。

import Augmentor
#创建pipeline,并指定参数
p = Augmentor.Pipeline("/home/tsq/MobileNet/Picture")
p.rotate(probability=0.7,max_left=10,max_right=10) #旋转操作
p.zoom(probability=0.5,min_scale=1.1,max_scale=1.5) #缩放操作
p.random_distortion(probability=1, grid_width=4, grid_height=4, magnitude=8)
p.flip_left_right(probability=0.5)
p.flip_top_bottom(probability=0.5)

p.sample(10000) #根据你的设定,生成10000个数据增强样本,保存在output目录下。

#不想把数据保存在磁盘中,你可以使用Keras创建一个generator
g = p.keras_generator(batch_size=128)
images, labels = next(g) #返回一批数量为128的图像及其相应的标签。可以无限制的返回增强的数据

可选择的操作:
elastic distortions:弹性的变形(扭曲)。

Perspective Transforms:透视变化,透视变换(Perspective Transformation)是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。总共有12种透视变化,四种常见,八种不常见。

Size Preserving Rotations:保持原始图片尺寸大小情况下进行旋转操作。(为保持图片尺寸不变,会做必要的填充处理)

Size Preserving Shearing:尺度不变剪切。从剪切图像中自动裁剪正确的区域,没有黑色的空间或填充。

a, b = b, a + b
相当于:
t = (b, a + b) # t是一个tuple
a = t[0]
b = t[1]

生成器就是一个带yield的函数(只要函数包含yield,函数调用就会返回一个生成器对象),普通的函数只能返回一次,但一个生成器能够暂停执行并返回一个中间的结果,当生成器的next()方法被调用的时候,会从离开的地方继续执行,并且能够上次调用的所有局部变量保持不变。说得直白点,生成器就是一个特殊的函数,它能产生一列的结果而不只是产生单一结果。

一边循环一边计算的机制,称为生成器:generator
可以通过next()来访问生成器generator. next(generator). 这样一是不方便,二是容易出现StopIteration错误。
但是,常用的方法是使用for循环,因为generator也是可迭代对象。for循环每次自动调用next方法直到抛出StopIteration异常。
创建generator:

  1. 第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:
    g = (x * x for x in range(10))
    for i in g:
    print(i)

  2. 在函数中定义generator
    如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。(yield中文意思:产量)
    注意:生成器函数中不允许有参数的return语句,如果出现,将会抛出SyntaxError: ‘return’ with argument inside generator错误
    举例:
    def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
    yield b
    a, b = b, a + b
    n = n + 1

函数中定义generator,使用yield作为返回的关键字。
函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行,直到出现越界问题就终止执行。

import Augmentor
p = Augmentor.Pipeline("/home/tsq/MobileNet/Picture/")
p.resize(probability=1.0, width=300, height=300)
p.sample(1000)

你可能感兴趣的:(机器学习实战练习,数据集整理)