الكود الجاهز للاستخدام وأجهزة الكمبيوتر المحمولة التعليمية لزيادة طريقك إلى تصنيف صور قليلة. هذا المستودع مصنوع لك إذا:
لا تضيع في المستودعات الكبيرة مع مئات الطرق ولا تفسير حول كيفية استخدامها. هنا ، نريد تغطية كل سطر من الكود بواسطة برنامج تعليمي.
تريد أن تتعلم تعلم القليل من اللقطة ولا تعرف من أين تبدأ؟ ابدأ مع دروسنا.
| دفتر | وصف | كولاب |
|---|---|---|
| الخطوات الأولى في تصنيف صور قليلة | في الأساس قليلة التعلم 101 ، في أقل من 15 دقيقة. | |
| مثال على التدريب العرضي | استخدمه كنقطة انطلاق إذا كنت ترغب في تصميم برنامج نصي للتدريب العرضي باستخدام EasyFSL. | |
| مثال على التدريب الكلاسيكي | استخدمه كنقطة انطلاق إذا كنت ترغب في تصميم برنامج نصي للتدريب الكلاسيكي باستخدام EasyFSL. | |
| اختبار مع التضمينات المسبقة مسبقا | تستخدم معظم أساليب القليل من العمود الفقري المجمد في وقت الاختبار. باستخدام EasyFSL ، يمكنك استخراج جميع التضمين لمجموعة البيانات الخاصة بك مرة واحدة وإلى الأبد ، ثم إجراء الاستدلال مباشرة على التضمينات. |
أساليب التعلم المتطورة القليلة:
مع 11 طريقة مدمجة ، تعد EasyFSL أكثر مكتبة التعلم المفتوحة للمصدر القليلة!
نحن نقدم أيضًا عدد قليل من فئة SshotClassifier لبدء تنفيذ أي خوارزمية تصنيف قليلة ، بالإضافة إلى البنية الشائعة الاستخدام.
راجع قسم المعايير أدناه لمزيد من التفاصيل حول الأساليب.
أدوات لتحميل البيانات:
يختلف تحميل البيانات في FSL قليلاً عن التصنيف القياسي لأننا نأخذ مجموعات من الحالات في شكل مهام تصنيف قليلة. لا عرق! في easyfsl لديك:
البرامج النصية لإعادة إنتاج معاييرنا:
scripts/predict_embeddings.py لاستخراج جميع التضمين من مجموعة بيانات مع العمود الفقري المعطى مسبقًاscripts/benchmark_methods.py لتقييم طريقة على مجموعة بيانات الاختبار باستخدام التضمينات المسبقة مسبقًا.وأيضًا: بعض المرافق التي شعرت بها غالبًا ما استخدمت في بحثي ، لذلك أشارككم.
هناك ما يكفي من مجموعات البيانات المستخدمة في تعلم القليل من اللقطة لأي شخص يضيع فيها. إنهم جميعًا هنا ، مرسومون ، قابلون للتنزيل وسهل الاستخدام ، في EasyFSL.
Cu-Birds
نحن نقدم وصفة make download-cub لتنزيل مجموعة البيانات واستخراجها ، إلى جانب تقسيم (Train / Val / Test) القياسي على طول الفصول. بمجرد تنزيل مجموعة البيانات ، يمكنك إنشاء مثيل لكائنات مجموعة البيانات في الكود الخاص بك مع هذه العملية المعقدة الفائقة:
from easyfsl . datasets import CUB
train_set = CUB ( split = "train" , training = True )
test_set = CUB ( split = "test" , training = False )tireedimagenet
لاستخدامه ، تحتاج إلى مجموعة بيانات ILSVRC2015. بمجرد تنزيل مجموعة البيانات واستخراجها ، تأكد من أن توطينه على القرص يتوافق مع مسارات الفصل المحددة في ملفات المواصفات. ثم:
from easyfsl . datasets import TieredImageNet
train_set = TieredImageNet ( split = "train" , training = True )
test_set = TieredImageNet ( split = "test" , training = False )miniimagenet
مثل TieredImagenet ، نقدم ملفات المواصفات ، لكنك تحتاج إلى مجموعة بيانات ILSVRC2015. بمجرد الحصول عليها:
from easyfsl . datasets import MiniImageNet
train_set = MiniImageNet ( root = "where/imagenet/is" , split = "train" , training = True )
test_set = MiniImageNet ( root = "where/imagenet/is" , split = "test" , training = False ) نظرًا لأن Miniimagenet صغير نسبيًا ، يمكنك أيضًا تحميله على ذاكرة الوصول العشوائي مباشرةً في إنشاء مثيله ببساطة عن طريق إضافة load_on_ram=True إلى المنشئ. يستغرق بضع دقائق ولكن يمكن أن يجعل تدريبك أسرع بكثير!
الفطريات الدنماركية
لقد بدأت مؤخرًا استخدامه كمعايير تعليمية قليلة ، ويمكنني أن أخبرك أنه مجال رائع. لاستخدامه ، قم أولاً بتنزيل البيانات:
# Download the original dataset (/! 110GB)
wget http://ptak.felk.cvut.cz/plants/DanishFungiDataset/DF20-train_val.tar.gz
# Or alternatively the images reduced to 300px (6.5Gb)
wget http://ptak.felk.cvut.cz/plants/DanishFungiDataset/DF20-300px.tar.gz
# And finally download the metadata (83Mb) to data/fungi/
wget https://public-sicara.s3.eu-central-1.amazonaws.com/easy-fsl/DF20_metadata.csv -O data/fungi/DF20_metadata.csvثم قم بتشكيل مجموعة البيانات بنفس العملية كما هو الحال دائمًا:
from easyfsl . datasets import DanishFungi
dataset = DanishFungi ( root = "where/fungi/is" )لاحظ أنني لم أحدد مجموعة قطار واختبار لأن CSV الذي أعطيته لك يصف مجموعة البيانات بأكملها. أوصي باستخدامه لاختبار النماذج مع الأوزان المدربة على مجموعة بيانات أخرى (مثل ImageNet). ولكن إذا كنت ترغب في اقتراح تقسيم قطار/Val/اختبار على طول الفصول ، فأنت مرحبًا بك في المساهمة!
قم بتثبيت الحزمة: pip install easyfsl أو ببساطة مفترق المستودع.
قم بتنزيل بياناتك.
صمم نصوص التدريب والتقييم الخاص بك. يمكنك استخدام مثال دفاترنا للتدريب العرضي أو التدريب الكلاسيكي.
هذا المشروع مفتوح جدًا للمساهمات! يمكنك المساعدة بطرق مختلفة:
استخدمنا EasyFSL لقياس عشرات الطرق. يتم حساب أوقات الاستدلال على أكثر من 1000 مهمة باستخدام ميزات مسبقًا. فهي مؤلفة فقط. لاحظ أن وقت الاستدلال لطرق التثبيت يعتمد بشدة على عدد خطوات الضبط.
يتم تعريف جميع الطرق المفرطة في ملف JSON هذا. تم اختيارهم على مجموعة التحقق من صحة Miniimagenet. يمكن استنساخ الإجراء مع make hyperparameter-search . قررنا استخدام أجهزة Miniimagenet المفرطة لجميع المعايير من أجل تسليط الضوء على القدرة على تكييف الطرق المختلفة. لاحظ أن جميع الطرق تستخدم تطبيع L2 للميزات ، باستثناء الفذ لأنه يضر بأداءها.
لا توجد نتائج لشبكات الرياضيات والعلاقات لأن الأوزان المدربة للوحدات الإضافية غير متوفرة.
تستخدم جميع الطرق نفس العمود الفقري: ResNet12 مخصص باستخدام المعلمات المدربة التي يوفرها المؤلفون من الفذ (تنزيل: miniimagenet ، tireedimagenet).
يتم عرض أفضل النتائج الاستقرائية والأفضل لكل عمود بالخط العريض.
| طريقة | ind / trans | ميني ImageNet 1 طلقة | ميني ImageNet 5 طلقة | متدرج ImageNet 1 طلقة | متدرج ImageNet 5 طلقة | وقت |
|---|---|---|---|---|---|---|
| بروتونيه | حثي | 63.6 | 80.4 | 60.2 | 77.4 | 6s |
| Simpleshot | حثي | 63.6 | 80.5 | 60.2 | 77.4 | 6s |
| MatchingNet | حثي | - | - | - | - | - |
| العلاقة | حثي | - | - | - | - | - |
| ضبط دقيق | حثي | 63.3 | 80.5 | 59.8 | 77.5 | 1mn33s |
| العمل الفذ | حثي | 64.7 | 80.1 | 61.3 | 76.2 | 3s |
| BD-CSPN | تحويلية | 69.8 | 82.2 | 66.3 | 79.1 | 7s |
| لابلاسيانشوت | تحويلية | 69.8 | 82.3 | 66.2 | 79.2 | 9s |
| PT-Map | تحويلية | 76.1 | 84.2 | 71.7 | 80.7 | 39mn40s |
| تيم | تحويلية | 74.3 | 84.2 | 70.7 | 80.7 | 3mn05s |
| التحول العاطفي | تحويلية | 63.0 | 80.6 | 59.1 | 77.5 | 30s |
للتكاثر:
data/models/feat_resnet12_mini_imagenet.pth (resp. tiered ).make extract-all-features-with-resnet12 .make benchmark-mini-imagenet (Resp. tiered ).