前言
在神经网络的训练过程中,往往需要大量的图片,大量的数据,否则可能会造成过拟合与欠拟合。然而并非都能找到合适的数据,因为标注标签的成本太高了,因此非常有必要利用好手上现有的数据。
图片增广
通俗的来说,就是通过已有标签的图片,生成新的图片。这个听起来有点不可思议,但是确实一个性质有效的方法。
考虑这样一张图片:
它是一朵玫瑰,再看下面的图片:
它依然是一朵玫瑰。
不难看出,通过调整亮度、对比度等,以及裁剪,就可以非常快速地生成一张有标签且与原来不同的照片。
torchvision
这是在计算机视觉上,非常好用的一个包,特别是torchvision.transforms
几乎可以完成上面提到的操作。
来看一个例子:
class Flower_Dataset(Dataset):
def __init__(self, path , is_train, augs):
data_root = pathlib.Path(path)
all_image_paths = list(data_root.glob('*/*'))
self.all_image_paths = [str(path) for path in all_image_paths]
label_names = sorted