يمكن استخدام التعلم الشامل لأتمتة عملية استخراج المعالم يدويًا من الصور. باستخدام نماذج ArcGIS المدربة مسبقًا، يمكنك تقليل الحاجة إلى مجموعات بيانات ضخمة، وقدرة حوسبية عالية، ومعرفة أو خبرة في مجال التعلم الشامل. تم تدريب هذه النماذج على بيانات جغرافية متنوعة، وهي تعمل بشكل جيد في مختلف المناطق. نماذج ArcGIS المدربة مسبقًا متاحة لأي شخص لديه حساب ArcGIS عبر ArcGIS Living Atlas of the World. في سير العمل التالي، يُستخدم نموذج Car Detection-USA لتحديد السيارات في صور الطائرات المسيرة والصور الجوية العالية الدقة.
المتطلبات
تجب تلبية المتطلبات التالية لتنفيذ سير العمل هذا:
- صور جوية لتشغيل النموذج عليها.
ملاحظة:
يمكنك تنزيل صور جوية تحتوي على سيارات من OpenAerialMap.
- يُعد التعلم الشامل قويًا من الناحية الحسابية ويُوصى باستخدام وحدة معالجة رسومات قوية لمعالجة مجموعات البيانات الكبيرة.
الاستدلال عن طريق النماذج المدربة مسبقًا
تصف الأقسام التالية العمليات المتضمنة في الاستدلال باستخدام نموذج ArcGIS المدرب مسبقًا.
عمليات استيراد مكتبة Python
قم باستيراد مكتبات Python التالية:from arcgis.gis import GIS
from arcgis.learn import detect_objects
from arcgis.raster.analytics import copy_raster
gis = GIS("home")
إضافة البيانات والنموذج للتحليل
هناك طريقتان يمكنك استخدامهما لإضافة مجموعة البيانات إلى دفتر ملاحظاتك.
تتضمن الطريقة الأولى تحميل الصور الجوية إلى مساحة عمل دفتر الملاحظات، وإضافتها إلى خلية الكود، ثم تشغيل دالة copy_raster() لاستخراج البيانات.dataset = "/arcgis/home/Aerial imagery.tif"
imagery = copy_raster(input_raster=dataset, output_name="Aerial_imagery", raster_type_name="Raster Dataset")
تتضمن الطريقة الثانية إضافة الصور الجوية كطبقة صور مستضافة إلى بوابتك الإلكترونية، ثم إضافة طبقة الصور إلى دفتر ملاحظاتك باستخدام معرف العنصر الخاص بها.imagery = gis.content.get("<imagery-layer-item-id>")
إضافة حزمة التعلم الشامل
يمكنك تنزيل نموذج Car Detection - USA المدرب مسبقًا من ArcGIS Living Atlas. بعد تنزيل النموذج، أضفه كعنصر إلى بوابتك الإلكترونية، ثم قم بالوصول إليه في دفتر ملاحظاتك باستخدام معرف العنصر الخاص به.model = gis.content.get("<deep-learning-package-item-id>")
تشغيل النموذج
لتشغيل النموذج المدرب مسبقًا في دفتر ملاحظاتك، استخدم وحدة detect_objects من arcgis.learn. ستتعامل الوحدة مع صورك كمدخلات، وستعمل على اكتشاف وإحصاء عدد السيارات الموجودة فيها.
ملاحظة:
يمكنك تحسين أداء النموذج عن طريق زيادة وسيطات النموذج بقيم مختلفة لحين الوصول إلى النتيجة المطلوبة:
model_arguments = {
"padding": "100", # The number of pixels at the border of image tiles from which predictions are blended for adjacent tiles. To smooth the output while reducing artifacts, increase the value
"batch_size": "16", # Change batch size as per GPU specifications
"threshold": "0.5", # Get detections greater than 50% confidence
"tile_size": "224", # The width and height of image tiles into which the imagery is split for prediction
}
ملاحظة:
إذا تم تكوين وحدة معالجة رسومات، يمكنك تعيين سياق داخل طريقة detect_object() لتعيينها على بيئة وحدة معالجة الرسومات:context = { "processorType": "GPU" }
num_cars = {}
detected_cars = detect_objects(
input_raster=imagery,
model = model,
output_name = "detected_cars",
)
num_cars[imagery.name] = len(detected_cars.query(as_df=True))
نتائج النماذج
وأخيرًا، بمجرد تشغيل النموذج، يمكنك عرض ناتج num_cars:print(f"Number of cars is {num_cars}.")