اذهب إلى المحتوى
  • 0

هو اي الفرق مابين tf.data.Dataset.list_files - tf.io.read_file() - tf.image.decode_jpeg ؟

السؤال

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله تعالى وبركاته،

بالنسبة ل tf.data.Dataset.list_files فهو يعمل كمستكشف أولي بمعنى أنه يستعرض نظام الملفات الخاص بك للعثور على ملفات معينة تتوافق مع نمطك مثل .jpg" لكنه لا يقوم بفتحها فعليا فهو ببساطة ينشئ مجموعة بيانات تحتوي على مسارات الملفات كسلاسل نصية.
أي أنه يختلف ذلك عن tf.io.read_file() الذي يأخذ تلك المسارات المكتشفة ويسترجع المحتوى الخاص بكل ملف وهي البيانات الثنائية كما هي مخزنة في الملف، أي السلسلة من البايتات التي تكوّن الملف بدون أي معالجة أو تفسير مع الحفاظ على البيانات في شكلها المضغوط والمشفر دون تفسير ما تمثله البايتات.
وأخيرا يقوم tf.image.decode_jpeg بتحويل تلك البايتات الخام إلى تمثيل بصري ذي معنى عن طريق فك الضغط وتفسير الترميز الخاص ب JPEG وتحويلها إلى متجه ثلاثي الأبعاد بأبعاد تمثل الارتفاع والعرض وقنوات الألوان التي يمكن لنموذجك معالجتها.

  • 0
نشر

تمام جدا

بس بعد الخطوات دي كده انا حولت الصور الخام الي ارقم النمووذج يقدر يتعلم منها صح كده وانا عرف ان برد فيه خطوات معالجه تاني قبل التدريب النموذج بس انا اقصد انا الصور خالص بقات ارقم صح كده

بتاريخ 4 دقائق مضت قال ياسر مسكين:

وعليكم السلام ورحمة الله تعالى وبركاته،

بالنسبة ل tf.data.Dataset.list_files فهو يعمل كمستكشف أولي بمعنى أنه يستعرض نظام الملفات الخاص بك للعثور على ملفات معينة تتوافق مع نمطك مثل .jpg" لكنه لا يقوم بفتحها فعليا فهو ببساطة ينشئ مجموعة بيانات تحتوي على مسارات الملفات كسلاسل نصية.
أي أنه يختلف ذلك عن tf.io.read_file() الذي يأخذ تلك المسارات المكتشفة ويسترجع المحتوى الخاص بكل ملف وهي البيانات الثنائية كما هي مخزنة في الملف، أي السلسلة من البايتات التي تكوّن الملف بدون أي معالجة أو تفسير مع الحفاظ على البيانات في شكلها المضغوط والمشفر دون تفسير ما تمثله البايتات.
وأخيرا يقوم tf.image.decode_jpeg بتحويل تلك البايتات الخام إلى تمثيل بصري ذي معنى عن طريق فك الضغط وتفسير الترميز الخاص ب JPEG وتحويلها إلى متجه ثلاثي الأبعاد بأبعاد تمثل الارتفاع والعرض وقنوات الألوان التي يمكن لنموذجك معالجتها.

 

  • 0
نشر

لدينا tf.data.Dataset.list_files حيث تستخدم هذه الدالة لإنشاء كائن tf.data.Dataset يحتوي على قائمة بأسماء الملفات التي تتطابق مع النمط المحدد في pattern، و هذه الطريقة مفيدة عند العمل مع مجموعات بيانات كبيرة، حيث توفر وسيلة ديناميكية لتحميل الملفات دون الحاجة إلى تحديدها يدويا.

أما tf.io.read_file فتعمل هذه الدالة على قراءة محتوى الملف المحدد كبيانات خام دون تفسيرها أو تحويلها إلى صيغة محددة، و تستخدم عادة كخطوة وسيطة عند التعامل مع الصور أو النصوص، حيث يتم تحميل البيانات من الملفات قبل معالجتها أو تحويلها إلى نوع بيانات قابل للاستخدام داخل TensorFlow.

بالنسبة ل tf.image.decode_jpeg فتستخدم هذه الدالة لفك تشفير الصور المخزنة بصيغة JPEG وتحويلها إلى كائن Tensor، حيث تأخذ الدالة البيانات الخام التي تم تحميلها باستخدام tf.io.read_file، ثم تقوم بتحويلها إلى مصفوفة تمثل الصورة بالأبعاد، و يمكن تحديد عدد القنوات اللونية للصورة من خلال المعامل channels، حيث يمكن ضبطه إلى 3 للحصول على صورة ملونة أو 1 للحصول على صورة بتدرجات الرمادي، و هذه الدالة أساسية عند التعامل مع بيانات الصور في مشاريع تعلم الآلة ورؤية الحاسوب.

  • 0
نشر
بتاريخ 1 ساعة قال Ali Ahmed55:

طيب ممكن مثال بالكود ؟

فرضًا لدينا مجلد يحتوي على صور بصيغة JPEG، وتريد تحميلها وعرض أول صورة، فالطريقة كالتالي:

import tensorflow as tf
import matplotlib.pyplot as plt

file_paths = tf.data.Dataset.list_files("./images/*.jpg") 

def load_and_decode_image(file_path):
    image_data = tf.io.read_file(file_path)
    image = tf.image.decode_jpeg(image_data, channels=3)  
    return image

dataset = file_paths.map(load_and_decode_image)

iterator = iter(dataset)
first_image = next(iterator)

plt.imshow(first_image.numpy())
plt.axis('off')  
plt.show()

في file_paths نقوم بإنشاء Dataset يحتوي على مسارات ملفات الصور التي تنتهي بـ .jpg في المجلد المحدد.

و load_and_decode_image هي دالة تستقبل مسار ملف، تقرأه بـ tf.io.read_file، ثم تحول البايتات إلى صورة بـ tf.image.decode_jpeg.

بينما ميثود map هي للتكرار على كل عنصر في الـ Dataset لتحويل المسارات إلى صور.

وفي العرض plt.imshow(first_image.numpy()) نحدد أول صورة من الـ Dataset ونعرضها.

وفي حال أردنا صيغة أخرى غير JPEG مثل PNG، نكتب tf.image.decode_png بدلاً من tf.image.decode_jpeg، وتستطيع أيضًا إضافة خطوات إضافية مثل تغيير حجم الصورة بـ tf.image.resize إذا لزم الأمر.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...