عند تدريب نماذج الذكاء الاصطناعي، خاصة في مجالات مثل رؤية الكمبيوتر، فإن إعداد مجموعة البيانات هو إحدى المهام الأكثر استهلاكًا للوقت. سواء كنت تقوم بإنشاء نماذج لتصنيف الصور، أو اكتشاف الكائنات، أو أي مهمة أخرى، فإن وضع العلامات على الصور غالبًا ما يكون ضروريًا لضمان قدرة النموذج على التعرف على الأنماط بدقة. يمكن أن يصبح تصنيف مجموعات البيانات الكبيرة يدويًا أمرًا مرهقًا للغاية، وهنا يأتي دور تطبيق سطح المكتب لتصنيف الصور، الذي تم إنشاؤه باستخدام Python وحزمة Tkinter.
في هذه المقالة، سنستكشف كيف تعمل هذه الأداة على تبسيط عملية تصنيف الصور، مما يجعلها في متناول المطورين وعلماء البيانات على حدٍ سواء. الأداة مفتوحة المصدر ومتوفرة على GitHub، مما يجعلها موردًا قيمًا لأي شخص يعمل على نماذج الذكاء الاصطناعي التي تتطلب مجموعات بيانات صور مصنفة.
مقدمة
تم تصميم تطبيق سطح المكتب لتصنيف الصور لمساعدة المستخدمين على تصنيف مجموعات بيانات الصور الكبيرة بشكل أكثر كفاءة. تم إنشاء هذا التطبيق باستخدام Tkinter، مكتبة واجهة المستخدم الرسومية القياسية في Python، ويوفر واجهة رسومية مباشرة لتعيين تسميات للصور وإعادة تسمية الملفات بناءً على تلك التصنيفات.
سواء كنت تقوم بتطوير نموذج ذكاء اصطناعي للتعرف على الوجوه، أو اكتشاف الكائنات، أو تصنيف المنتجات، فمن المحتمل أنك ستحتاج إلى تصنيف بياناتك يدويًا. تتضمن العملية عادةً فتح ملفات الصور وعرضها ثم تصنيفها أو تصنيفها، الأمر الذي قد يستغرق وقتًا طويلاً. باستخدام هذا التطبيق، يمكنك تبسيط هذه العملية.
يتيح التطبيق للمستخدمين عرض صورة، وتحديد تصنيف من قائمة محددة مسبقًا، وإعادة تسمية ملف الصورة تلقائيًا ليعكس التصنيف — كل ذلك من واجهة نظيفة وبسيطة. يمكن تخصيص المشروع بسهولة ليناسب سير عمل أو مجموعات بيانات محددة.
لماذا يهم وضع العلامات على الصور
في التعلم الآلي، لا سيما في
التعلم الخاضع للإشراف، يكون أداء النموذج الخاص بك جيدًا مثل جودة البيانات المصنفة. وهذا يجعل عملية وضع العلامات جزءًا مهمًا من تطوير نموذج عالي الأداء. يمكن أن تؤدي البيانات ذات التصنيف السيئ إلى حدوث تشويش، مما يؤدي إلى تنبؤات غير صحيحة أو تصنيفات خاطئة، مما يقلل من دقة النموذج الخاص بك.
في مجالات مثل
التصوير الطبي، القيادة الذاتية، أو التعرف على المنتجات، تعد مجموعات البيانات ذات التصنيف الجيد أمرًا ضروريًا. ولذلك، فإن الأدوات التي يمكن أن تساعد في تصنيف وتنظيم مجموعات البيانات الكبيرة لا تقدر بثمن لأي مطور للذكاء الاصطناعي.
الميزات الرئيسية لتطبيق تسمية الصور
يوفر تطبيق سطح المكتب لتصنيف الصور العديد من الميزات التي تجعله أداة أساسية لممارسي الذكاء الاصطناعي:
- واجهة سهلة الاستخدام: تم تصميم الواجهة باستخدام Tkinter، وهي واجهة نظيفة وبسيطة، مما يجعل من السهل على المستخدمين التنقل خلال عملية تصنيف الصور.
- تحديد التصنيف: يمكن للمستخدمين تحديد مجموعة من التصنيفات مسبقًا، مثل "Cat"، و"Dog"، و"Car"، وما إلى ذلك، وتطبيق هذه التصنيفات بسرعة على الصور.
- إعادة التسمية التلقائية: بمجرد التسمية، يتم تحديث اسم ملف الصورة تلقائيًا ليعكس التسمية المخصصة.
- الأدلة المخصصة: يمكن للمستخدمين تحديد الأدلة لكل من الصور المدخلة والمخرجات المسماة، مما يجعل من السهل إدارة مجموعات البيانات.
- التعليقات في الوقت الفعلي: توفر الأداة تعليقات فورية من خلال عرض الصورة المصنفة وتأكيد الملصق المطبق.
- تصنيف الدُفعات: يمكنك تصنيف صور متعددة بالتسلسل دون الحاجة إلى تنظيم الملفات يدويًا بعد ذلك.
إعداد التطبيق
للبدء، ستحتاج إلى استنساخ مستودع GitHub وتثبيت التبعيات الضرورية. تم إنشاء التطبيق باستخدام
Python 3.x وTkinter، واختياريًا، يمكنك استخدام PyInstaller لتجميعه في ملف قابل للتنفيذ مستقل.
الخطوة 1: استنساخ المستودع
يمكنك استنساخ المستودع من GitHub عن طريق تشغيل:
استنساخ git https://github.com/imankarimi/image-labeling.git
git clone https://github.com/imankarimi/image-labeling.git
الخطوة 2: تثبيت التبعيات
إذا لم يكن Tkinter مثبتًا لديك، فيمكنك تثبيته باستخدام:
تثبيت النقطة TK
git clone https://github.com/imankarimi/image-labeling.git
إذا كنت تخطط لتجميع التطبيق في ملف قابل للتنفيذ لسهولة التوزيع، فستحتاج أيضًا إلى
PyInstaller:
تثبيت النقطة pyinstaller
git clone https://github.com/imankarimi/image-labeling.git
كيف يعمل التطبيق
بمجرد إعداد التطبيق، سيؤدي تشغيله إلى فتح واجهة رسومية حيث يمكنك تحميل دليل يحتوي على صور. يمكنك بعد ذلك التنقل بين الصور وتطبيق التصنيفات والسماح للتطبيق بإعادة تسمية الملفات تلقائيًا.
إليك تفاصيل كيفية عمل العملية:
- اختر دليل الإدخال: حدد المجلد الذي يحتوي على الصور المراد تصنيفها.
- تعيين التصنيفات: استخدم القائمة المنسدلة أو تحديد زر لتعيين تصنيفات محددة مسبقًا لكل صورة.
- إعادة تسمية الملفات: يقوم التطبيق بإعادة تسمية ملفات الصور بناءً على التصنيفات المخصصة، بحيث يتم تنظيمها لتدريب النموذج الخاص بك.
- الحفظ والتنظيم: بمجرد تصنيف الصور، يمكن حفظها في دليل جديد لاستخدامها لاحقًا في التدريب النموذجي أو التقييم.
مثال واجهة المستخدم الرسومية:
تم إنشاء نافذة واجهة المستخدم الرسومية الرئيسية باستخدام أدوات Tkinter Frame، وLabel، وButton، والتي تسمح للمستخدمين بالتنقل والتفاعل مع التطبيق. فيما يلي مقتطف من المنطق الأساسي:
استيراد tkinter كـ tk
من ملف حوار استيراد tkinter
استيراد نظام التشغيل
فئة ImageLabelingApp:
تعريف __init__(الذات، الجذر):
self.root = root
self.root.title('تطبيق تصنيف الصور')
self.image_label = tk.Label(root, text="لم يتم تحميل أي صورة")
self.image_label.pack()
self.select_folder_button = tk.Button(root, text="Select Folder", Command=self.select_folder)
self.select_folder_button.pack()
self.label_buttons = []
للتسمية في ["Cat"، "Dog"، "Car"]: # أمثلة على التسميات
btn = tk.Button(root, text=label, Command=lambda l=label: self.apply_label(l))
self.label_buttons.append(btn)
بي تي ان.باك()
بالتأكيد حدد_مجلد(ذاتي):
Folder_selected = filedialog.askdirectory()
self.load_images_from_folder(folder_selected)
قم بإلغاء تحميل_images_from_folder(self,folder_path):
self.image_paths = [os.path.join(folder_path, f) لـ f في os.listdir(folder_path) إذا f.endswith(".png")]
الصورة الحالية = 0
self.show_image(self.image_paths[self.current_image])
بالتأكيد show_image(self, image_path):
self.image_label.config(text=image_path)
def Apply_label(self, label):
current_image_path = self.image_paths[self.current_image]
new_image_name = f"{label}_{os.path.basename(current_image_path)}"
new_image_path = os.path.join(os.path.dirname(current_image_path), new_image_name)
os.rename (current_image_path، new_image_path)
self.current_image = 1
إذا كانت self.current_image
git clone https://github.com/imankarimi/image-labeling.git
في هذا الرمز، يتم عرض الصور من المجلد المحدد، ويمكن للمستخدمين تعيين تسميات محددة مسبقًا عن طريق النقر على الأزرار. يقوم التطبيق بإعادة تسمية الصور عن طريق إلحاق التسمية المحددة.
تخصيص لمشروعك
تتمثل إحدى نقاط قوة التطبيق في مرونته. يمكنك تخصيصها بسهولة لمشاريعك عن طريق تحرير قائمة التصنيفات المحددة مسبقًا، أو تعديل تخطيط واجهة المستخدم الرسومية، أو إضافة وظائف جديدة مثل:
إضافة - اختصار لوحة المفاتيح لتعيين التسميات بشكل أسرع.
السماح بـ - تصنيفات متعددة لكل صورة.
تنفيذ - وظيفة التراجع للعودة عن التصنيفات الخاطئة.
التحسينات المستقبلية
هناك بعض التحسينات المحتملة التي يمكن إضافتها إلى التطبيق:
- التكامل مع التخزين السحابي: السماح للمستخدمين بتسمية الصور مباشرة من الخدمات السحابية مثل AWS S3، وGoogle Cloud Storage، وما إلى ذلك.
- معاينة الصور المتقدمة: توفير إمكانات التكبير والتصغير للحصول على تصنيف أكثر تفصيلاً، وهو مفيد بشكل خاص لمجموعات البيانات مثل التصوير الطبي.
- خيارات تعزيز البيانات: دمج طرق زيادة البيانات مثل التدوير أو التكبير/التصغير أو التقليب لاستخدامها أثناء وضع العلامات لزيادة تنوع مجموعة البيانات.
خاتمة
يعمل تطبيق سطح المكتب لتصنيف الصور على تبسيط وأتمتة العملية الشاقة لتصنيف الصور يدويًا، مما يجعله أداة قيمة لتطوير نماذج الذكاء الاصطناعي. باستخدام Tkinter، يكون التطبيق خفيف الوزن ومتعدد المنصات وقابل للتعديل بسهولة ليناسب حالات الاستخدام المختلفة.
لمزيد من المعلومات وللمساهمة في المشروع، راجع مستودع GitHub: تطبيق Image Labeling على GitHub.