انواع روشهای لود داده تصویری در کراس و تنسرفلو

انواع روشهای لود داده تصویری در کراس و تنسرفلو
در کراس و TensorFlow، میتوانید از چند روش مختلف برای لود دادههای تصویری استفاده کنید. در زیر به سه روش اصلی، ImageDataGenerator، tf.data و image_dataset_from_directory، می پردازیم :1. ImageDataGenerator

from tensorflow.keras.preprocessing.image import ImageDataGenerator import matplotlib.pyplot as plt # ساخت یک شیء از ImageDataGenerator datagen = ImageDataGenerator(rescale=1./255, rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest') # خواندن و تغییر یک تصویر img = plt.imread('path/to/your/image.jpg') img = datagen.random_transform(img) # نمایش تصویر اصلی و تصویر تغییر یافته plt.figure(figsize=(8, 4)) plt.subplot(1, 2, 1) plt.imshow(plt.imread('path/to/your/image.jpg')) plt.title('Original Image') plt.subplot(1, 2, 2) plt.imshow(img) plt.title('Transformed Image') plt.show()
2. tf.data

import tensorflow as tf # تعریف تابع برای پردازش تصاویر def preprocess_image(image_path): # خواندن تصویر img = tf.io.read_file(image_path) # دیکود تصویر img = tf.image.decode_image(img, channels=3) # تغییر اندازه تصویر به اندازه مشخص img = tf.image.resize(img, [224, 224]) # نرمالیزه کردن مقادیر پیکسلها img = img / 255.0 return img # ایجاد یک دیتاست با استفاده از tf.data image_paths = ['path/image1.jpg', 'path//image2.jpg', ...] dataset = tf.data.Dataset.from_tensor_slices(image_paths) dataset = dataset.map(preprocess_image) dataset = dataset.batch(32) # انجام batch بر روی دیتاست
3. image_dataset_from_directory

from tensorflow.keras.preprocessing import image_dataset_from_directory # مسیر دایرکتوری حاوی دستههای مختلف از تصاویر data_dir = 'path/to/your/dataset' # ساخت دیتاست از دایرکتوری dataset = image_dataset_from_directory(data_dir, batch_size=32, image_size=(128, 128), validation_split=0.2)این سه روش اصلی برای لود داده تصویری در TensorFlow و کراس استفاده میشوند، و هرکدام دارای ویژگیها و کاربردهای خاص خود هستند. انتخاب یک روش به وابستگی از نیازها و موارد مختلف شماست که در ادامه به بررسی آن می پردازیم:
ImageDataGenerator
- کاربرد: - استفاده اصلی این کلاس در Augmentation تصاویر (افزایش تنوع دادهها با تغییرات مختلف) در مرحله آموزش مدلهای یادگیری عمیق است.
- مزایا - ساده برای استفاده و پیادهسازی. - تعداد زیادی از تبدیلات تصویری را پشتیبانی میکند. - مناسب برای پردازش تصاویر به صورت آنی (online) در طول آموزش.
- محدودیتها - نمیتواند دادهها را به شکل batch بخواند و به مدل دهد.
tf.data
- کاربرد - استفاده از tf.data برای ایجاد ورودی به مدلهای یادگیری عمیق. - مدیریت داده به شکل کارآمد و بهینه برای تشکیل دیتاستها و استفاده از ویژگیهای مختلف مانند parallel loading و prefetching.
- مزایا - انعطافپذیری بیشتر در ایجاد دادههای ورودی. - امکان استفاده از توابع map و batch برای تغییرات دلخواه روی داده. - مناسب برای پردازش تصاویر به صورت batch و offline.
- محدودیتها - ممکن است پیادهسازی نسبتاً پیچیدهتری نسبت به ImageDataGenerator داشته باشد.
image_dataset_from_directory
- کاربرد - خواندن و ساخت دیتاست از تصاویر موجود در یک دایرکتوری. - ساخت یک دیتاست آماده برای استفاده در آموزش یا ارزیابی مدلهای یادگیری عمیق.
- مزایا - سهولت در ساخت یک دیتاست از تصاویر در یک دایرکتوری با تقسیمبندی برچسبها. - امکان تعیین دقیق اندازه تصاویر و دستهبندی آنها. - ساختار مشخص و آسان برای استفاده در آموزش مدل.
- محدودیتها - ممکن است در برخی موارد از انعطافپذیری کمتری نسبت به tf.data برخوردار باشد.