عادةً ما تكون نماذج التعلم الشامل كبيرة الحجم وتتطلب قوة حوسبة هائلة. من خلال دمج تدريب النماذج مع ArcGIS API for Python، يمكنك إنشاء نماذج تعلم شامل صغيرة الحجم ومناسبة للنشر على الأجهزة الجوالة.
في سير عمل دفتر الملاحظات الحالي، يتم استخدام نموذج مستخرج الطرق متعدد المهام لاستخراج شبكة طرق من صور الأقمار الصناعية.
المتطلبات
لتنفيذ سير العمل هذا، يجب أن تستوفي المتطلبات التالية:
- مجموعة بيانات التدريب، التي تتألف من بيانات SpaceNet لخطوط وسط الطرق في منطقة باريس.
ملاحظة:
إذا لم تتمكن من الوصول إلى مجموعة بيانات التدريب، فسيلزم استخدام خادم البيانات النقطية لإنشاء بيانات تدريب مناسبة بالتنسيق المطلوب.
- يُعد التعلم الشامل قويًا من الناحية الحوسبية ويُوصى باستخدام وقت تشغيل دفتر ملاحظات متقدم مع دعم وحدة GPU.
عمليات استيراد مكتبة Python
قم باستيراد مكتبات Python التالية:from arcgis.gis import GIS
gis = GIS("home")
import os, zipfile
from pathlib import Path
from arcgis.learn import prepare_data, MultiTaskRoadExtractor
تحميل البيانات إلى مساحة العمل الخاصة بك
قم بتحميل مجموعة البيانات إلى مساحة عمل دفتر ملاحظاتك ضمن Files كملف .zip يحتوي على شرائح صور مصنفة في مجلد باسم images.#Adding zipped file from workspace
filepath = training_data = gis1.content.get('itemID')
filepath = training_data.download(save_path='/arcgis/home/input', file_name=training_data.name)
filepath
assert os.path.exists(filepath) == 1
#Extract zip
with zipfile.ZipFile(filepath, 'r') as zip_ref:
zip_ref.extractall(Path(filepath).parent)
#Get the data path
output_path = Path(os.path.join(os.path.splitext(filepath)[0]))
إعداد البيانات
تعمل دالة prepare_data() في ArcGIS API for Python على إعداد البيانات لعمليات سير عمل التعلم الشامل. تقرأ الدالة عينات التدريب وتقوم بأتمتة عملية إعداد البيانات عن طريق تطبيق تحويلات وتعديلات مختلفة على بيانات التدريب. تُتيح هذه الإضافات تدريب النماذج ببيانات محدودة، وتحول دون التكيف مع النماذج بشكل زائد عن الحد.data = prepare_data(
path=output_path,
batch_size=4,
chip_size=512
)
data.classes
للحصول على معلومات بشأن معلمات دالة prepare_data()، راجع مرجع واجهة برمجة التطبيقات arcgis.learn.
تصور بياناتك
بمجرد إعداد بياناتك، يمكنك استخدام دالة show_batch() لتمثيل عينات منها مرئيًا.data.show_batch(alpha=1)
تحميل بنية النموذج
يدعم إطار عمل Multi-task Road Extractor في arcgis.learn بنيتين معماريتين يمكن تعيينهما باستخدام المعلمة mt1_model. يمكن ضبط المعلمة على إما البنية linknet أو hourglass.
يمكن تعيين المعلمات المتقدمة الخاصة بالنموذج بشكل اختياري في هذه المرحلة:
- gaussian_thresh — تعيين الحد الأقصى لـ gaussian، والذي يسمح لك بتعيين عرض الطريق المطلوب.
- orient_bin_size — تعيين حجم السلة لزوايا التوجيه.
- orient_theta — تعيين عرض قناع الاتجاه.
model = MultiTaskRoadExtractor(data, mtl_model="hourglass")حساب معدل التعلم
يستخدم ArcGIS API for Python أداة تحديد معدل التعلم الخاصة بـ fast.ai للعثور على معدل التعلم الأمثل لتدريب نماذجك. استخدم طريقة lr_find() للعثور على معدل التعلم الأمثل لتدريب نموذج قوي. بمجرد تحديد معدل التعلم مع التشغيل الأول للنموذج، يمكنك تمريره كقيمة ثابتة لعمليات التشغيل الإضافية في أثناء إعادة تدريب النموذج.lr = model.lr_find()
#lr = 0.0005754 #from the first run
ملاءمة النموذج
تُستخدم طريقة fit() لتدريب نموذجك. تتطلب الطريقة إدخالاً لمعلمة الدورات. تُحدد الدورة عدد مرات تعرض النموذج لمجموعة بيانات التدريب بأكملها. تتيح كل دورة للنموذج التعلم وتعديل الترجيحات بناءً على البيانات. في المثال التالي، يتم تشغيل النموذج لمدة ثلاث دورات لأغراض الاختبار.
يُنصح بالبدء بـ 25 دورة للحصول على نموذج أكثر دقة للنشر.
model.fit(3, lr=lr, early_stopping=True)تمثيل النتائج بشكل مرئي
للتحقق من صحة نتائج النموذج الخاص بك في دفتر ملاحظاتك، يمكنك استخدام طريقة show_results() لمقارنة تنبؤات النموذج بصور حقائق أرضية عشوائية.
model.show_results(rows=4, thresh=0.2)حفظ النموذج
بعد التأكد من دقة نموذجك الذي تم تدريبه، احفظه للاستخدام لاحقًا. يتم حفظ النموذج افتراضيًا كملف .dlpk في مجلد النماذج الفرعي داخل مجلد بيانات التدريب.
model.save('/arcgis/home/road_model_for_spacenet_data')نشر النموذج
يمكنك الآن نشر ملف .dlpk المحفوظ مع مجموعات بيانات أخرى ومشاركته داخل مؤسستك. للحصول على معلومات حول كيفية استخدام ملف .dlpk، راجع المثال: الاستدلال باستخدام نموذج مدرب مسبقًا.