Python: Rozšíření obrázkových dat použitím knihoven TensorFlow a Keras

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í.

Napsat komentář