أداة مجموعة بيانات الصور (IDT) هي تطبيق CLI تم تطويره لتسهيل وتسريع إنشاء مجموعات بيانات الصور لاستخدامها في التعلم العميق. تحقق الأداة ذلك عن طريق استخراج الصور من العديد من محركات البحث مثل duckgo وbing وdeviantart. يعمل IDT أيضًا على تحسين مجموعة بيانات الصورة، على الرغم من أن هذه الميزة اختيارية، إلا أنه يمكن للمستخدم تصغير حجم الصور وضغطها للحصول على حجم وأبعاد الملف الأمثل. مجموعة بيانات نموذجية تم إنشاؤها باستخدام idt والتي تحتوي على إجمالي 23.688 ملف صورة تزن 559.2 ميجابايت فقط.
أنا فخور بالإعلان عن الإصدار الأحدث لدينا! ؟؟
ما تغير
يمكنك تثبيته عبر النقطة أو استنساخ هذا المستودع.
user@admin:~ $ pip3 install idt
أو
user@admin:~ $ git clone https://github.com/deliton/idt.git && cd idt
user@admin:~/idt $ sudo python3 setup.py install
أسرع طريقة لبدء استخدام IDT هي تشغيل أمر "تشغيل" البسيط. فقط اكتب في وحدة التحكم المفضلة لديك شيئًا مثل:
user@admin:~ $ idt run -i apples
سيؤدي هذا إلى تنزيل 50 صورة للتفاح بسرعة. بشكل افتراضي، يستخدم محرك البحث duckgo للقيام بذلك. يقبل أمر التشغيل الخيارات التالية:
خيار | وصف |
---|---|
-i أو --input | الكلمة الأساسية للعثور على الصور المطلوبة. |
-s أو --size | كمية الصور التي سيتم تنزيلها. |
-e أو --engine | محرك البحث المطلوب (الخيارات: duckgo، bing، bing_api وflickr_api) |
--طريقة تغيير الحجم | اختر طريقة تغيير حجم الصور. (الخيارات: الجانب الأطول، والجانب الأقصر، والمحصول الذكي) |
-هو أو - حجم الصورة | خيار لتعيين نسبة حجم الصورة المطلوبة. الافتراضي = 512 |
-ak أو --api-key | إذا كنت تستخدم محرك بحث يتطلب مفتاح API، فهذا الخيار مطلوب |
يتطلب IDT ملف تكوين يخبره بكيفية تنظيم مجموعة البيانات الخاصة بك. يمكنك إنشائه باستخدام الأمر التالي:
user@admin:~ $ idt init
سيؤدي هذا الأمر إلى تشغيل منشئ ملف التكوين وسيطلب معلمات مجموعة البيانات المطلوبة. في هذا المثال، لنقم بإنشاء مجموعة بيانات تحتوي على صور لسياراتك المفضلة. المعلمات الأولى التي سيطرحها هذا الأمر هي ما الاسم الذي يجب أن تحمله مجموعة البيانات الخاصة بك؟ في هذا المثال، دعونا نسمي مجموعة البيانات الخاصة بنا "سياراتي المفضلة"
Insert a name for your dataset: : My favorite cars
بعد ذلك ستسألك الأداة عن عدد العينات المطلوبة لكل عملية بحث لتركيب مجموعة البيانات الخاصة بك. من أجل بناء مجموعة بيانات جيدة للتعلم العميق، يلزم وجود العديد من الصور، وبما أننا نستخدم محرك بحث لاستخراج الصور، يلزم إجراء العديد من عمليات البحث بكلمات رئيسية مختلفة لتركيب مجموعة بيانات جيدة الحجم. ستتوافق هذه القيمة مع عدد الصور التي يجب تنزيلها في كل عملية بحث. في هذا المثال، نحتاج إلى مجموعة بيانات تحتوي على 250 صورة في كل فئة، وسنستخدم 5 كلمات رئيسية لربط كل فئة. لذا، إذا كتبنا الرقم 50 هنا، فسيقوم IDT بتنزيل 50 صورة لكل كلمة رئيسية مقدمة. إذا قدمنا 5 كلمات رئيسية، فيجب أن نحصل على 250 صورة المطلوبة.
How many samples per search will be necessary? : 50
ستطلب الأداة الآن نسبة حجم الصورة. نظرًا لأن استخدام الصور الكبيرة لتدريب الشبكات العصبية ليس أمرًا قابلاً للتطبيق، فيمكننا اختياريًا اختيار إحدى نسب حجم الصورة التالية وتصغير حجم صورنا إلى هذا الحجم. في هذا المثال، سنختار 512x512، على الرغم من أن 256x256 سيكون خيارًا أفضل لهذه المهمة.
Choose images resolution:
[1] 512 pixels / 512 pixels (recommended)
[2] 1024 pixels / 1024 pixels
[3] 256 pixels / 256 pixels
[4] 128 pixels / 128 pixels
[5] Keep original image size
ps: note that the aspect ratio of the image will not be changed,
so possibly the images received will have slightly different size
What is the desired image size ratio: 1
ثم اختر "longer_side" لطريقة تغيير الحجم.
[1] Resize image based on longer side
[2] Resize image based on shorter side
[3] Smartcrop
ps: note that the aspect ratio of the image will not be changed,
so possibly the images received will have slightly different size
Desired Image resize method: : longer_side
يجب عليك الآن اختيار عدد الفئات/المجلدات التي يجب أن تحتوي عليها مجموعة البيانات الخاصة بك. في هذا المثال، يمكن أن يكون هذا الجزء شخصيًا للغاية، لكن سياراتي المفضلة هي: شيفروليه إمبالا، ورينج روفر إيفوك، وتيسلا موديل إكس، و(لماذا لا) أفتوفاز لادا. لذلك في هذه الحالة لدينا 4 فئات، واحدة لكل فئة مفضلة.
How many image classes are required? : 4
بعد ذلك، سيُطلب منك الاختيار بين أحد محركات البحث المتاحة. في هذا المثال، سنستخدم DuckGO للبحث عن الصور لنا.
Choose a search engine:
[1] Duck GO (recommended)
[2] Bing
[3] Bing API
[4] Flickr API
Select option:: 1
الآن يتعين علينا القيام ببعض ملء النموذج المتكرر. يجب علينا تسمية كل فئة وجميع الكلمات الرئيسية التي سيتم استخدامها للعثور على الصور. لاحظ أنه يمكن تغيير هذا الجزء لاحقًا بواسطة الكود الخاص بك، لإنشاء المزيد من الفئات والكلمات الرئيسية.
Class 1 name: : Chevrolet Impala
بعد كتابة اسم الفئة الأولى، سيُطلب منا تقديم جميع الكلمات الرئيسية للعثور على مجموعة البيانات. تذكر أننا طلبنا من البرنامج تنزيل 50 صورة لكل كلمة رئيسية، لذلك يجب علينا توفير 5 كلمات رئيسية في هذه الحالة للحصول على جميع الصور البالغ عددها 250 صورة. يجب فصل كل كلمة رئيسية بفواصل (،)
In order to achieve better results, choose several keywords that will
be provided to the search engine to find your class in different settings.
Example:
Class Name: Pineapple
keywords: pineapple, pineapple fruit, ananas, abacaxi, pineapple drawing
Type in all keywords used to find your desired class, separated by commas: Chevrolet Impala 1967 car photos,
chevrolet impala on the road, chevrolet impala vintage car, chevrolet impala convertible 1961, chevrolet impala 1964 lowrider
ثم كرر عملية ملء اسم الفصل والكلمات الرئيسية الخاصة به حتى تقوم بملء جميع الفئات الأربعة المطلوبة.
Dataset YAML file has been created successfully. Now run idt build to mount your dataset!
تم إنشاء ملف تكوين مجموعة البيانات الخاصة بك. الآن فقط قم بصدأ الأمر التالي وشاهد السحر يحدث:
user@admin:~ $ idt build
وانتظر بينما يتم تركيب مجموعة البيانات:
Creating Chevrolet Impala class
Downloading Chevrolet Impala 1967 car photos [#########################-----------] 72% 00:00:12
في النهاية، ستكون جميع صورك متاحة في مجلد يحمل اسم مجموعة البيانات. كما يتم أيضًا تضمين ملف CSV الذي يحتوي على إحصائيات مجموعة البيانات في المجلد الجذر لمجموعة البيانات.
نظرًا لأن التعلم العميق يتطلب منك غالبًا تقسيم مجموعة البيانات الخاصة بك إلى مجموعة فرعية من مجلدات التدريب/التحقق من الصحة، فيمكن لهذا المشروع أيضًا القيام بذلك نيابةً عنك! فقط قم بتشغيل:
user@admin:~ $ idt split
الآن يجب عليك اختيار نسبة القطار/الصالحة. في هذا المثال، اخترت أن يتم حجز 70% من الصور للتدريب، بينما سيتم حجز الباقي للتحقق من صحتها:
Choose the desired proportion of images of each class to be distributed in train/valid folders.
What percentage of images should be distributed towards training?
(0-100): 70
70 percent of the images will be moved to a train folder, while 30 percent of the remaining images
will be stored in a validation folder.
Is that ok? [Y/n]: y
وهذا كل شيء! يجب الآن العثور على تقسيم مجموعة البيانات باستخدام الدلائل الفرعية/الدليل الفرعي الصالح المطابق.
يتم تطوير هذا المشروع في وقت فراغي ولا يزال يحتاج إلى الكثير من الجهد ليكون خاليًا من الأخطاء. نقدر حقًا طلبات السحب والمساهمين، فلا تتردد في المساهمة بأي طريقة ممكنة!