إدارة مجموعات بيانات الرؤية الحاسوبية في بايثون بكفاءة باستخدام مكتبة Remo
مقدمة إلى إدارة مجموعات بيانات الرؤية الحاسوبية
تُعد الرؤية الحاسوبية (Computer Vision) من أهم تطبيقات التعلم الآلي (Machine Learning) وأكثرها انتشارًا، حيث تساهم في إحداث ثورة في العديد من القطاعات الصناعية والتجارية. تشمل تطبيقاتها الشائعة الصيانة التنبؤية للبنية التحتية الصناعية وخطوط أنابيب النفط والغاز والعقارات التجارية، بالإضافة إلى أتمتة ضمان الجودة، وإدارة مخزون الأراضي والطرود بناءً على صور الأقمار الصناعية ولقطات الطائرات بدون طيار.
لإنجاز هذه المهام، تُستخدم تقنيات متعددة مثل:
- تصنيف الصور (
Image Classification) - اكتشاف الكائنات (
Object Detection) - تجزئة الكائنات (
Instance Segmentation)
على الرغم من التطور الكبير الذي شهدته الأطر البرمجية مثل TensorFlow وKeras وPyTorch خلال العقد الماضي، مما سهّل تطوير نماذج الرؤية الحاسوبية، إلا أن التعامل مع بيانات الصور لا يزال يمثل تحديًا نسبيًا. يعود ذلك إلى الحاجة الماسة إلى المعالجة المسبقة للصور، وعمليات التصنيف (labelling)، وتصور التعليقات البرمجية (annotation visualization).
في هذا المقال، سنقدم لكم مكتبة Remo، وهي مكتبة بايثون مجانية مصممة لمساعدة المطورين على إنجاز مهام الرؤية الحاسوبية بكفاءة. تتيح لك Remo:
- تنظيم وتصور الصور والتعليقات البرمجية.
- التعليق على الصور بكفاءة عالية.
- العمل والتعاون كفريق على البيانات.
يمكن استخدام Remo إما في بيئة Jupyter Notebook أو Google Colab. في هذا المقال، ستعتمد جميع الأكواد على إعداد Google Colab، ويمكن الوصول إلى دفتر الملاحظات الكامل مجانًا عبر الرابط المرفق في الوثائق الرسمية للمكتبة.
كيف تُحدث Remo ثورة في إدارة الصور والبيانات؟
تتوفر العديد من أدوات التعليق المفتوحة التقليدية للصور، ويُعد LabelImg أحد أشهرها. ولكن مقارنةً بهذه الأدوات، تقدم Remo أدوات ذكية لإنشاء التعليقات البرمجية (annotations) بكفاءة أكبر، مثل الاختصارات وميزة الرسم بالنقر (xclick draw). كما توفر وظائف تساعد على التعاون وتنظيم سير العمل، حيث يمكنك تحديد الصور كـ Done (تم الانتهاء منها) أو To Do (قيد التنفيذ)، وفرزها والبحث فيها، وهو أمر مفيد للغاية عند التعامل مع آلاف الصور.
لكن الابتكار الحقيقي لـ Remo يكمن في إدارة مجموعات البيانات (datasets). في الوقت الحالي، تُخزن الصور في مشاريع الرؤية الحاسوبية عادةً كملفات عادية (flat files) على قرص صلب محلي أو في تخزين سحابي، وتُحفظ التعليقات البرمجية كملفات XML أو JSON أو CSV خام. لتصورها، كان المستخدم يضطر عادةً إلى فتح كل ملف على حدة ومحاولة تخيل مكان التعليقات، أو رسمها واحدة تلو الأخرى في بايثون.
على النقيض من ذلك، تمنحك Remo تحكمًا كاملاً ورؤية واضحة لجميع البيانات، مما يبسط عملية إدارة البيانات بشكل جذري ويزيد من كفاءة سير العمل.
دليل عملي: استعراض وظائف Remo الأساسية
لإظهار كيفية عمل Remo، سنستعرض الخطوات الأساسية بدءًا من التثبيت وحتى تصدير التعليقات البرمجية.
تثبيت Remo وتجهيز بيئة العمل
أولاً وقبل كل شيء، نحتاج إلى تثبيت جميع التبعيات الضرورية. يمكن القيام بذلك بسهولة في بيئة Google Colab عن طريق تشغيل سطري الكود التاليين:
!pip install remo
!python -m remo_app init --colab
إنشاء مجموعة بيانات جديدة
بعد تثبيت Remo، يمكننا إنشاء مجموعة بيانات باستخدام بعض الصور النموذجية المتاحة مجانًا على خدمات الويب من أمازون (Amazon Web Services).
import remo
import pandas
link = [
'https://remo-scripts.s3-eu-west-1.amazonaws.com/open_images_sample_dataset.zip'
]
df = remo.create_dataset(name = 'Example Images Dataset', urls = link, annotation_task = "Object Detection")
# Output
# Acquiring data - completed
# Processing annotation files: 1 of 1 files
# Processing data - completed
# Data upload completed
يُظهر المخرج أن عملية الحصول على البيانات ومعالجة ملفات التعليقات البرمجية وتحميل البيانات قد اكتملت بنجاح.
استعراض مجموعات البيانات المتاحة
عبر تشغيل الأمر remo.list_datasets()، يمكننا بسهولة التحقق من مجموعات البيانات المتاحة حاليًا.
remo.list_datasets()
# Output
# [Dataset 1 - 'Example Images Dataset' - 10 images]
يُشير المخرج إلى وجود مجموعة بيانات واحدة باسم 'Example Images Dataset' تحتوي على 10 صور.
التفاعل مع الواجهة الرسومية لـ Remo
نحن الآن جاهزون لاستخدام الواجهة الرسومية (GUI) لـ Remo لفحص مجموعة البيانات الخاصة بنا والاطلاع على الخيارات المختلفة المتاحة. في الشكل 1، سترى مثالًا بسيطًا يوضح مدى سهولة تصور بياناتنا والتعليق عليها باستخدام Remo.
df.view()

الشكل 1: واجهة المستخدم الرسومية (GUI) لـ Remo.
تحليل البيانات الأولية والإحصائيات المتقدمة
ميزة أخرى مهمة لاستخدام Remo هي أنها تتيح لك الحصول بسرعة على إحصائيات رئيسية لمجموعة البيانات، إما من خلال كود بايثون أو عبر واجهة المستخدم. يمكن أن يكون هذا مفيدًا بشكل خاص عندما تحاول فهم كيفية توزيع التعليقات البرمجية بين الصور المختلفة، وما إذا كان توزيع الفئات الإجمالي متوازنًا أم لا.
الحصول على إحصائيات التعليقات البرمجية (Annotations)
يمكنك الحصول على إحصائيات مفصلة حول التعليقات البرمجية باستخدام الدالة df.get_annotation_statistics().
df.get_annotation_statistics()
# Output
# [{'AnnotationSet ID': 1,
# 'AnnotationSet name': 'Object detection',
# 'creation_date': None,
# 'last_modified_date': '2020-11-28T22:04:48.263767Z',
# 'n_classes': 18,
# 'n_images': 10,
# 'n_objects': 98,
# 'top_3_classes': [{'count': 27, 'name': 'Fruit'},
# {'count': 12, 'name': 'Sports equipment'},
# {'count': 10, 'name': 'Human arm'}]}]
يُظهر المخرج تفاصيل مثل عدد الفئات (n_classes)، وعدد الصور (n_images)، وعدد الكائنات (n_objects)، بالإضافة إلى الفئات الثلاث الأكثر شيوعًا (top_3_classes) مع عدد مرات ظهور كل منها.
عرض الإحصائيات عبر الواجهة الرسومية
يمكنك رؤية نتائج مماثلة باستخدام الواجهة الرسومية لـ Remo، مما يوفر تصورًا بيانيًا لهذه الإحصائيات.
df.view_annotation_stats()

الشكل 2: وظائف الإحصائيات في Remo.
تصدير التعليقات البرمجية للاستخدام المستقبلي
أخيرًا، إذا استخدمت واجهة Remo لإضافة تعليقات برمجية إلى الصور المختلفة في مجموعة البيانات الخاصة بك، فيمكن تصدير هذه التعليقات تلقائيًا بتنسيق CSV. يتيح لك ذلك استخدامها لاحقًا والاستفادة من وظيفة Remo المسماة export_annotations_to_file().
df.export_annotations_to_file('images_annotations.zip', annotation_format='csv', export_tags = False)
تُمكن هذه الوظيفة من حفظ التعليقات البرمجية في ملف مضغوط، مما يسهل مشاركتها أو استخدامها في مراحل لاحقة من مشروعك.
الخلاصة التقنية
تُعد مكتبة Remo إضافة قيمة لمجتمع الرؤية الحاسوبية، حيث تعالج التحديات الجوهرية المتعلقة بإدارة مجموعات البيانات وتصنيفها. تتميز المكتبة بقدرتها على تبسيط سير العمل المعقد، وتقديم واجهة مستخدم سهلة الاستخدام، ودعم التعاون الفعال بين فرق العمل. إن دمجها السلس مع بيئات مثل Jupyter Notebook وGoogle Colab، وقدرتها على التعامل مع تنسيقات ملفات متعددة، يجعلها أداة قوية للمطورين والباحثين على حد سواء. إن الابتكار في طريقة تخزين وعرض التعليقات البرمجية، بعيدًا عن الملفات المسطحة التقليدية، يمثل قفزة نوعية نحو إدارة بيانات أكثر كفاءة وشفافية في مشاريع الرؤية الحاسوبية. للمزيد من التفاصيل حول دمج Remo مع أطر عمل أخرى مثل PyTorch أو إعداد سير العمل في Jupyter Notebook، يُنصح بالرجوع إلى الوثائق الرسمية للمكتبة.