برنامج تصنيف الصور بالذكاء الصناعي عبارة عن مشروع بواجهة رسومية (GUI) مبني بلغة Python يقوم بتصنيف الصور تلقائياً في مجلدات بحسب محتواها باستخدام نموذج الذكاء الاصطناعي CLIP المقدم من شركة OpenAI.
فمثلاً يقوم بتصنيف الصور إلى أشخاص، طعام، حيوانات، طبيعة، مباني، مركبات و أخرى.
للدقة أكثر، فإنه يقوم بمقارنة كل صورة مع مجموعة من الأوصاف النصية باستخدام نموذج CLIP (بنسخته clip-vit-base-patch32
) لاختيار الفئة الأنسب. ثم يُنقل الملف تلقائياً إلى مجلد يحمل إسم الفئة المناسبة باللغة العربية.
مميزات البرنامج
- تصنيف ذكي باستخدام نموذج CLIP المدرب مسبقاً من OpenAI.
- واجهة رسومية (GUI) مبنية بمكتبة Tkinter.
- يدعم صيغ الصور الشائعة (JPG و PNG و BMP إلخ..).
- ينظم الصور في مجلدات حسب الفئات (أشخاص، طعام، حيوانات، نباتات، طبيعة، مباني، مركبات، أخرى).
- يعرض تقدم العملية و يوفر سجل نصي لجميع الأحداث.
التقنيات المستخدمة
- لغة بايثون - الإصدار 3.8 أو أي إصدار أحدث.
- مكتبة Tkinter - لإنشاء الواجهة الرسومية للبرنامج.
- مكتبة Torch - لبناء وتدريب نماذج التعلم العميق (Deep Learning) باستخدام PyTorch.
- مكتبة Transformers - من Hugging Face توفر نماذج جاهزة لمعالجة اللغة الطبيعية مثل BERT وGPT.
- مكتبة Pillow - لمعالجة الصور (فتح، تعديل، وحفظ الصور).
متطلبات البرنامج
تشغيل المشروع يتطلب وجود لغة بايثون الإصدار 3.8 أو أي إصدار أحدث. كما يجب تثبيت المكتبات التي ذكرناها و التي يمكن تحميلها دفعة واحدة باستعمال مدير الحزم pip من خلال تنفيذ الأمر التالي.
pip install torch transformers Pillow
أو من خلال ملف requirements.txt
:
pip install -r requirements.txt
طريقة التشغيل
يمكن تشغيل البرنامج بواسطة موجه الأوامر من خلال التوجه لمجلد المشروع و تشغيل الملف main.py
من خلال كتابة الأمر التالي.
python image_classifier.py
خطوات استخدامه
- حدد مجلد الصور المصدر (أي المراد تصنيفها).
- حدد مجلد الوجهة (حيث سيتم نقل الصور المصنفة).
- في النهاية، إضغط على زر "بدء تصنيف الصور".
إذا اخترت صورة لطفل يأكل بيتزا، النموذج قد يصنفها على أنها "طعام" أو "أشخاص" حسب نسبة التشابه الأكبر.
ملاحظات
- يتم تحميل نموذج CLIP تلقائياً عند التشغيل الأول من
transformers
- الملفات تُنقل إلى مجلدات فرعية بحسب الفئة المحددة.
- لا حاجة لإعادة تحميل النموذج في كل مرة، يتم حفظه تلقائياً في cache محلي.