Data augmentation (rozšíření dat) je technika používaná v oblasti strojového učení, zejména v počítačovém vidění a zpracování přirozeného jazyka, která spočívá v rozšíření existujícího tréninkového datasetu prostřednictvím různých transformací. Cílem je zvýšit rozmanitost a množství tréninkových dat bez nutnosti shromažďovat nové vzorky. Tím se zlepšuje schopnost modelu generalizovat a zvyšuje se jeho robustnost vůči novým, neznámým datům.
V počítačovém vidění může data augmentation zahrnovat různé transformace obrazu, jako jsou rotace, převrácení, změna měřítka, změna jasu, kontrastu nebo zavedení šumu. V zpracování přirozeného jazyka mohou být použity techniky, jako je substituce slov synonymy, přeuspořádání slov ve větě nebo zařazení parafrází.
Data augmentation je zvláště užitečná v situacích, kdy jsou tréninková data omezená nebo má model tendenci přeučit se (overfitting) na tréninkovém datasetu.
ImageDataGenerator
Jedním z příkladů data augmentation je použití knihovny TensorFlow a Keras pro rozšíření obrázkových dat. Níže je uveden příklad zdrojového kódu pro data augmentation pomocí této knihovny:
import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator # Vytvoření instancí ImageDataGenerator s definovanými transformacemi data_gen = ImageDataGenerator( rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest' ) # Načtení obrázku pro augmentaci image = tf.keras.preprocessing.image.load_img('images/example.png') input_image = tf.keras.preprocessing.image.img_to_array(image) input_image = input_image.reshape((1,) + input_image.shape) # Použití data generatoru pro vytvoření augmentovaných obrázků i = 0 for batch in data_gen.flow(input_image, batch_size=1, save_to_dir='images', save_prefix='aug', save_format='png'): i += 1 if i > 19: # Omezení na 20 augmentovaných obrázků break
V tomto příkladu vytváříme instanci ImageDataGenerator
, která definuje různé transformace pro obrázky, jako jsou rotace, posuny, zkosení, přiblížení a převrácení. Poté načteme obrázek a aplikujeme augmentaci prostřednictvím generatoru. Kód ukládá 20 augmentovaných verzí původního obrázku do zadaného adresáře.
Zde je galerie 20 augmentovaných obrázků + vygenerovaný originál example.png:





















TensorFlow je otevřená knihovna pro strojové učení a umělou inteligenci, kterou vyvinul tým Google Brain. Knihovna poskytuje rozhraní pro vývoj, trénink a nasazení různých typů strojově-ucících se modelů, včetně neuronových sítí, pro úkoly jako klasifikace, regrese, generování textu, překlad jazyka a další. TensorFlow je široce používán v oblasti výzkumu i v komerčních aplikacích.
TensorFlow podporuje jak Python, tak C++ a nabízí flexibilitu pro výpočty na CPU, GPU i TPU (Tensor Processing Units). Jeho API je navrženo tak, aby bylo snadno použitelné pro vývojáře a zároveň umožňovalo pokročilé výpočetní operace.
Keras je jedním z vyšších úrovní rozhraní (high-level API) pro TensorFlow, který zjednodušuje proces vytváření, trénování a testování neuronových sítí. Keras byl navržen tak, aby umožňoval rychlý experiment s hlubokým učením a zároveň byl modulární a snadno rozšiřitelný.
TensorFlow se stal jednou z nejpopulárnějších knihoven pro strojové učení díky svému širokému spektru funkcí, výkonnosti a snadnému použití.