<jupyter_start><jupyter_text>ইমেজ ডাটা - প্রথম পর্বএখানে আমরা দেখব ডিপলার্নিং মডেল ট্রেনিং করার আগে ডাটা লোডিং পাইপলাইন কিভাবে করা হয় । এইজন্য ডাটাসেট হিসাবে ব্যাবহার করব  flower photos। এটা 218 MB সাইজের একটা ডাটাসেট। এই ডাটাসেট ব্যাবহার করে আমরা নিচের বিষয়গুলো কভার করার চেষ্টা করব । * `tf.keras.preprocessing.image.ImageDataGenerator` দিয়ে কিভাবে ইমেজ ডাটা লোড করা যায় । * `tf.data` দিয়ে কিভাবে ইমেজ ডাটা লোড করা যায় । * উপরের দুইটার কোনটাতে কি সুবিধা পাওয়া যাবে । * কোনটাতে কেমন সময় লাবে ।   প্রয়োজনীয় প্যাকেজ ইম্পোট করে নেই<jupyter_code>try:
  # %tensorflow_version এই কমান্ড কেবলমাত্র colab এ কাজ করে লোকাল নোটবুকে কাজ করবে না । 
  # এই জন্য try except ব্যাবহার করা হয়েছে । 
  %tensorflow_version 2.x
except Exception:
  pass
import tensorflow as tf
AUTOTUNE = tf.data.experimental.AUTOTUNE
import IPython.display as display
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import os
# টেন্সফ্লো ভার্সন চেক করে নিন 
tf.__version__<jupyter_output><empty_output><jupyter_text>ডাটাসেট ডাউনলোড ডাটাসেট ডাউনলোড করার জন্য আমরা `tf.keras.utils.get_file` এই ফাংশন ব্যাবহার করব । এখানে আমরা ডাটাসেট url এবং কি নামের (`fname='flower_photos'`) ফোল্ডারে ডাউনলোড হয়ে জমা হবে সেটা বলে দিচ্ছি । এবং `flower_photos.tgz` যেহেতু একটা জিপ ফাইল তাই এটাকে আনজিপ করার জন্য আমরা `untar=True` দিয়ে দিব ।<jupyter_code>import pathlib

DATASET_URL = 'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz'

data_dir = tf.keras.utils.get_file(origin=DATASET_URL, fname='flower_photos', untar=True)
data_dir = pathlib.Path(data_dir)
print('Dataset directory:', data_dir)
!sudo apt install -qq tree
!tree -L 1 /root/.keras/datasets/flower_photos<jupyter_output>tree is already the newest version (1.7.0-5).
0 upgraded, 0 newly installed, 0 to remove and 25 not upgraded.
/root/.keras/datasets/flower_photos
├── daisy
├── dandelion
├── LICENSE.txt
├── roses
├── sunflowers
└── tulips

5 directories, 1 file<jupyter_text>আমরা দেখতে পাচ্ছি যে ৫ টা আলাদা আলাদা ফুলের ফোল্ডার আছে এবং একটা টেক্সট ফাইল আছে ।<jupyter_code>image_count = len(list(data_dir.glob('*/*.jpg')))
image_count<jupyter_output><empty_output><jupyter_text>আমরা দেখতে পাচ্ছি যে সব মিলে ৩৬৭০ টা ফুলের ছবি আছে । এখন আমরা দেখব যে কোন ফুল কয়টা করে আছে ।<jupyter_code>FLOWERS = ['daisy', 'dandelion', 'roses','sunflowers','tulips']
for flower in FLOWERS:
    total_flower = len(list(data_dir.glob(flower + "/*.jpg")))
    print("`{:10s}` folder contain {} flower images".format(flower, total_flower))<jupyter_output>`daisy     ` folder contain 633 flower images
`dandelion ` folder contain 898 flower images
`roses     ` folder contain 641 flower images
`sunflowers` folder contain 699 flower images
`tulips    ` folder contain 799 flower images<jupyter_text>আমরা কিছু ৩ টা টিউলিপ ফুল প্লট করে দেখি । আমরা প্রত্যেকটা ফুলের ছবির সাথে তাদের সাইজ প্রিন্ট করেছি । এবং আমরা দেখতে পাচ্ছি যে এক একটা ছবির সাইজ এক এক রকম । আমাদের মডেলে ডটা ফিট করার আগে অবশ্যই সব ছবিকে একটা ফিক্স সাইজে নিয়ে আসতে হবে ।<jupyter_code>roses = list(data_dir.glob('tulips/*'))

for image_path in roses[:3]:
    image = Image.open(str(image_path))
    print('image size', image.size)
    display.display(image)<jupyter_output>image size (240, 240)
{'fraction_non_alphanumeric': 0.18765586034912718, 'fraction_numerical': 0.014339152119700748, 'mean_word_length': 5.2189922480620154, 'pattern_counts': {'":': 0, '<': 18, '<?xml version=': 0, '>': 18, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '507516', 'license': 'Apache-2.0', 'n_tokens_mistral': 2074, 'n_tokens_neox': 2299, 'n_words': 383, 'path': 'vision/dl_computer_vision_part_1.ipynb', 'repo_name': 'menon92/DL-Sneak-Peak', 'size': '3208'}