Hub documentation
مجموعة بيانات الصور
مجموعة بيانات الصور
ستوضح لك هذه الدليل كيفية تكوين مستودع مجموعة البيانات الخاصة بك مع ملفات الصور. يمكنك العثور على أمثلة مرافقة للمستودعات في مجموعة أمثلة مجموعات بيانات الصور.
يتمتع مجموعة بيانات ذات بنية مدعومة وصيغ ملفات تلقائيًا بمشغل مجموعات البيانات في صفحتها على Hub.
تُحمَّل معلومات إضافية عن الصور الخاصة بك - مثل التسميات أو صناديق الحدود للكشف عن الكائنات - تلقائيًا ما دمتَ تتضمن هذه المعلومات في ملف بيانات وصفية (metadata.csv/metadata.jsonl/metadata.parquet).
بديلًا عن ذلك، يمكن أن تكون الصور في ملفات Parquet أو في أرشيفات TAR تتبع صيغة WebDataset.
الصور فقط
إذا كان مجموعة بياناتك تتكون من عمود واحد يحتوي على الصور فقط، يمكنك ببساطة تخزين ملفات الصور الخاصة بك في الجذر:
my_dataset_repository/
├── 1.jpg
├── 2.jpg
├── 3.jpg
└── 4.jpgأو في مجلد فرعي:
my_dataset_repository/
└── images
├── 1.jpg
├── 2.jpg
├── 3.jpg
└── 4.jpgتُؤيَّد عدة صيغ في الوقت نفسه، بما في ذلك PNG وJPEG وTIFF وWebP.
my_dataset_repository/
└── images
├── 1.jpg
├── 2.png
├── 3.tiff
└── 4.webpإذا كان لديك عدة تقسيمات، يمكنك وضع صورك في مجلدات تحمل أسماء مناسبة:
my_dataset_repository/
├── train
│ ├── 1.jpg
│ └── 2.jpg
└── test
├── 3.jpg
└── 4.jpgراجع أسماء الملفات والتقسيمات لمزيد من المعلومات وطرق أخرى لتنظيم البيانات حسب التقسيمات.
أعمدة إضافية
إذا كانت هناك معلومات إضافية ترغب في تضمينها حول مجموعة بياناتك، مثل التسميات النصية أو صناديق الحدود، أضفها كملف metadata.csv في مستودعك. يتيح لك ذلك إنشاء مجموعات بيانات بسرعة لمهام مختلفة في مجال الرؤية الحاسوبية مثل التسمية النصية أو كشف الكائنات.
my_dataset_repository/
└── train
├── 1.jpg
├── 2.jpg
├── 3.jpg
├── 4.jpg
└── metadata.csvيجب أن يحتوي ملف metadata.csv الخاص بك على عمود file_name يربط ملفات الصور ببياناتها الوصفية:
file_name,text
1.jpg,a drawing of a green pokemon with red eyes
2.jpg,a green and yellow toy with a red nose
3.jpg,a red and white ball with an angry look on its face
4.jpg,a cartoon ball with a smile on its faceيمكنك أيضًا استخدام ملف JSONL metadata.jsonl:
{"file_name": "1.jpg","text": "a drawing of a green pokemon with red eyes"}
{"file_name": "2.jpg","text": "a green and yellow toy with a red nose"}
{"file_name": "3.jpg","text": "a red and white ball with an angry look on its face"}
{"file_name": "4.jpg","text": "a cartoon ball with a smile on its face"}وللبيانات الأكبر حجماً أو إذا كنت مهتماً بميزات استرجاع البيانات المتقدمة، يمكنك استخدام ملف Parquet metadata.parquet.
المسارات النسبية
يجب أن يكون ملف البيانات الوصفية موجودًا إما في نفس المجلد الذي توجد فيه الصور المرتبطة به، أو في أي مجلد أبوي، كما في هذا المثال:
my_dataset_repository/
└── train
├── images
│ ├── 1.jpg
│ ├── 2.jpg
│ ├── 3.jpg
│ └── 4.jpg
└── metadata.csvفي هذه الحالة، يجب أن تكون عمود file_name مسارًا نسبيًا كاملًا إلى الصور، وليس مجرد اسم الملف:
file_name,text
images/1.jpg,a drawing of a green pokemon with red eyes
images/2.jpg,a green and yellow toy with a red nose
images/3.jpg,a red and white ball with an angry look on its face
images/4.jpg,a cartoon ball with a smile on it's faceلا يمكن وضع ملفات البيانات الوصفية في مجلدات فرعية من المجلد الذي تحتوي عليه الصور.
بشكلٍ أكثر عمومية، يجب أن تحتوي أي عمود يُسمى file_name أو *_file_name على المسار النسبي الكامل للصور.
تصنيف الصور
لأُطُر بيانات تصنيف الصور، يمكنك أيضًا استخدام إعداد بسيط: استخدم المجلدات لتسمية فئات الصور. احفظ ملفات الصور الخاصة بك في بنية مجلدات على النحو التالي:
my_dataset_repository/
├── green
│ ├── 1.jpg
│ └── 2.jpg
└── red
├── 3.jpg
└── 4.jpgيتضمن مجموعة البيانات المُنشأة بهذه البنية عمودين: image وlabel (بقيم green وred).
يمكنك أيضًا توفير عدة تقسيمات. للقيام بذلك، يجب أن يكون لمجلد مجموعة البيانات البنية التالية (انظر أسماء الملفات والتقسيمات لمزيد من المعلومات):
my_dataset_repository/
├── test
│ ├── green
│ │ └── 2.jpg
│ └── red
│ └── 4.jpg
└── train
├── green
│ └── 1.jpg
└── red
└── 3.jpgيمكنك تعطيل الإضافة التلقائية لعمود label في إعدادات YAML. إذا لم تحمل أسماء المجلدات أي معنى خاص، فاضبط drop_labels: true في ترويسة README:
configs:
- config_name: default # Name of the dataset subset, if applicable.
drop_labels: trueمجموعات بيانات كبيرة الحجم
تنسيق WebDataset
يناسب تنسيق WebDataset مجموعات البيانات الكبيرة من الصور (انظر timm/imagenet-12k-wds على سبيل المثال). يتكون من أرشيفات TAR تحتوي على الصور وبياناتها الوصفية، وهو مُحسَّن للبث. وهو مفيد إذا كان لديك عدد كبير من الصور ولتحصل على محمّلات بيانات للبث للتدريب على نطاق واسع.
my_dataset_repository/
├── train-0000.tar
├── train-0001.tar
├── ...
└── train-1023.tarلإنشاء أرشيف TAR بصيغة WebDataset، أنشئ مجلداً يحتوي على الصور وملفات البيانات الوصفية المراد أرشفتها، ثم أنشئ أرشيف TAR باستخدام أمر tar على سبيل المثال.
عادةً ما يكون الحجم المعتاد لكل أرشيف حوالي 1 غيغابايت.
تأكد من أن كل زوج من الصورة والبيانات الوصفية يتشاركان في نفس بادئة الملف، على سبيل المثال:
train-0000/
├── 000.jpg
├── 000.json
├── 001.jpg
├── 001.json
├── ...
├── 999.jpg
└── 999.jsonلاحظ أنه من أجل راحة المستخدم وتمكين Dataset Viewer، يتم تحويل كل مجموعة بيانات مستضافة في Hub تلقائيًا إلى صيغة Parquet حتى حجم 5 جيجابايت. اقرأ المزيد حول ذلك في وثائق Parquet format.
تنسيق Parquet
بدلاً من رفع الصور وبيانات الوصف كملفات منفصلة، يمكنك تضمين كل شيء داخل ملف Parquet. يكون هذا مفيدًا إذا كان لديك عدد كبير من الصور، أو إذا كنت ترغب في تضمين أعمدة صور متعددة، أو إذا كنت تريد تخزين معلومات إضافية عن الصور في نفس الملف. كما أن Parquet مفيد لتخزين بيانات مثل البايتات الخام، وهو ما لا يدعمه JSON/CSV.
my_dataset_repository/
└── train.parquetيمكن إنشاء ملفات Parquet تحتوي على بيانات صور باستخدام pandas أو مكتبة datasets. لإنشاء ملفات Parquet تحتوي على بيانات صور في pandas، يمكنك استخدام pandas-image-methods وdf.to_parquet(). في datasets، يمكنك تعيين نوع العمود إلى Image() واستخدام الطريقة ds.to_parquet(...) أو ds.push_to_hub(...). يمكنك العثور على دليل حول تحميل مجموعات بيانات الصور في datasets هنا.
بديلًا عن ذلك، يمكنك ضبط نوع الصورة يدويًا لملفات Parquet التي تم إنشاؤها باستخدام أدوات أخرى. أولًا، تأكد من أن أعمدة الصور لديك من النوع struct، مع حقل ثنائي "bytes" لبيانات الصورة وحقل نصي "path" لاسم ملف الصورة أو مساره. ثم يجب عليك تحديد أنواع الميزات للأعمدة مباشرةً في YAML داخل ترويسة README، على سبيل المثال:
dataset_info:
features:
- name: image
dtype: image
- name: caption
dtype: stringيُوصى باستخدام Parquet للصور الصغيرة (أقل من 1 ميغابايت لكل صورة) ومجموعات الصفوف الصغيرة (100 صفوف لكل مجموعة صفوف، وهو ما يستخدمه datasets للصور). أما للصور الأكبر، فيُوصى باستخدام صيغة WebDataset، أو مشاركة ملفات الصور الأصلية (اختياريًا مع ملفات البيانات الوصفية، ووفقًا لـتوصيات وحدود المستودعات المتعلقة بالتخزين وعدد الملفات).