这是博主用来做样本扩充常用的代码,里面备注已经很详细了,直接拿来用吧!
其中autoaugment.py直接借用的github的代码,很棒。
一.代码
1. autoaugment.py
'自动数据增强方法AutoAugment'
"""
基于扩充样本操作的流程:比如先找来500张车辆的图片,并标注得xml文件,再转化得txt文件。
然后用此autoaugment.py做扩充操作—>比如每张原图扩充为10张,那么这10张对应的新txt文件里的坐标还是同一个!
这样的好处是扩充后只是加了各种噪声、锐化、光暗之类的,不需要再对新生成的图做xml坐标标注了!
故:为了不需再对新生成的图做xml坐标标注,我把这个autoaugment.py的类ImageNetPolicy(object)里
所有引用到了类SubPolicy(object)里的旋转操作rotate的代码全屏蔽掉了。
"""
from PIL import Image, ImageEnhance, ImageOps
import numpy as np
import random
class ImageNetPolicy(object):
""" Randomly choose one of the best 24 Sub-policies on ImageNet.
Example:
# >>> policy = ImageNetPolicy()
# >>> transformed = policy(image)
Example as a PyTorch Transform:
# >>> transform=transforms.Compose([
# >>> transforms.Resize(256),
# >>> ImageNetPolicy(),
# >>> transforms.ToTensor()])
"""
def __init__(self, fillcolor=(128, 128, 128)):
self.policies = [
# SubPolicy(0.4, "posterize", 8, 0.6, "rotate", 9, fillcolor),
SubPolicy(0.6, "solarize", 5, 0.6, "autocontrast", 5, fillcolor),
SubPolicy(0.8, "equalize", 8, 0.6, "equalize", 3, fillcolor),
SubPolicy(0.6, "posterize", 7, 0.6, "posterize", 6, fillcolor),
SubPolicy(0.4, "equalize", 7, 0.2, "solarize", 4, fillcolor),
# SubPolicy(0.4, "equalize", 4, 0.8, "rotate", 8, fillcolor),
SubPolicy(0.6, "solarize", 3, 0.6, "equalize", 7, fillcolor),
SubPolicy(0.8, "posterize", 5, 1.0, "equalize", 2, fillcolor),
# SubPolicy(0.2, "rotate", 3, 0.6, "solarize", 8, fillcolor),
SubPolicy(0.6, "equalize", 8, 0.4, "posterize", 6, fillcolor),
# SubPolicy(0.8, "rotate", 8, 0.4, "color", 0, fillcolor),
# SubPolicy(0.4, "rotate", 9, 0.6, "equalize", 2, fillcolor),
SubPolicy(0.0, "equalize", 7, 0.8, "equalize", 8, fillcolor),
SubPolicy(0.6, "invert", 4, 1.0, "equalize", 8, fillcolor),
SubPolicy(0.6, "color", 4, 1.0, "contrast", 8, fillcolor),
# SubPolicy(0.8, "rotate", 8, 1.0, "color", 2, fillcolor),
SubPolicy(0.8, "color", 8, 0.8, "solarize", 7, fillcolor),
SubPolicy(0.4, "sharpness", 7, 0.6, "invert", 8, fillcolor),
# SubPolicy(0.6, "shearX", 5, 1.0, "equalize", 9, fillcolor),
SubPolicy(0.4, "color", 0, 0.6, "equalize", 3, fillcolor),
SubPolicy(0.4, "equalize", 7, 0.2, "solarize", 4, fillcolor),
SubPolicy(0.6, "solarize", 5, 0.6, "autocontrast", 5, fillcolor),
SubPolicy(0.6, "invert", 4, 1.0, "equa