Datasets documentation

معالجة بيانات الصور

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

معالجة بيانات الصور

يُظهر هذا الدليل طرقًا محددة لمعالجة مجموعات بيانات الصور. تعلّم كيفية:

  • استخدم map() مع مجموعة بيانات الصور.
  • طبّق تحسينات البيانات على مجموعة بيانات باستخدام set_transform().

للاطلاع على دليل حول كيفية معالجة أي نوع من مجموعات البيانات، راجع دليل العملية العامة.

خريطة

يمكن لدالة map() تطبيق التحويلات على مجموعة بيانات كاملة.

على سبيل المثال، أنشئ دالة Resize أساسية:

>>> def transforms(examples):
...     examples["pixel_values"] = [image.convert("RGB").resize((100,100)) for image in examples["image"]]
...     return examples

الآن استخدم دالة map() لتغيير حجم مجموعة البيانات بأكملها، واضبط batched=True لتسريع العملية من خلال قبول دفعات من الأمثلة. تُعيد التحويلة pixel_values كائن PIL.Image قابل للتخزين المؤقت:

>>> dataset = dataset.map(transforms, remove_columns=["image"], batched=True)
>>> dataset[0]
{'label': 6,
 'pixel_values': <PIL.PngImagePlugin.PngImageFile image mode=RGB size=100x100 at 0x7F058237BB10>}

يوفر ملف التخزين المؤقت الوقت لأنك لا تحتاج إلى تنفيذ نفس التحويل مرتين. يُعدّ دالة map() الأنسب للعمليات التي تُنفَّذ مرة واحدة فقط لكل تدريب - مثل تغيير حجم صورة - بدلاً من استخدامها للعمليات التي تُنفَّذ في كل حقبة، مثل عمليات زيادة البيانات.

يتطلب map() بعض الذاكرة، لكن يمكنك تقليل متطلباته من الذاكرة باستخدام المعلمات التالية:

  • يحدد batch_size عدد الأمثلة التي تتم معالجتها في كل استدعاء لدالة التحويل.
  • يحدد writer_batch_size عدد الأمثلة المعالجة التي تُحفظ في الذاكرة قبل تخزينها.

تتخذ قيمتا المعاملين الافتراضية 1000، وهو ما قد يكون مكلفاً إذا كنت تخزّن الصور. خفّض هاتين القيمتين لتقليل استهلاك الذاكرة عند استخدام map().

تطبيق التحويلات

🤗 يطبّق Datasets عمليات زيادة البيانات من أي مكتبة أو حزمة على مجموعة بياناتك. يمكن تطبيق التحويلات على دفعات البيانات بشكل فوري باستخدام set_transform()، مما يستهلك مساحة أقراص أقل.

يستخدم المثال التالي torchvision، لكن يمكنك بحرية استخدام مكتبات أخرى لزيادة البيانات مثل Albumentations وKornia وimgaug.

على سبيل المثال، إذا كنت ترغب في تغيير خصائص اللون بصورة عشوائية:

>>> from torchvision.transforms import Compose, ColorJitter, ToTensor

>>> jitter = Compose(
...     [
...          ColorJitter(brightness=0.25, contrast=0.25, saturation=0.25, hue=0.7),
...          ToTensor(),
...     ]
... )

أنشئ دالةً لتطبيق تحويل ColorJitter:

>>> def transforms(examples):
...     examples["pixel_values"] = [jitter(image.convert("RGB")) for image in examples["image"]]
...     return examples

طبّق التحويل باستخدام دالة set_transform():

>>> dataset.set_transform(transforms)
Update on GitHub