دليل CoreML لـ Swift: أمثلة عملية وشاملة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

CoreML لـ Swift: دليل شامل مع أمثلة عملية

1. ما هو CoreML ولماذا تحتاجه؟

CoreML هو إطار عمل للتعلم الآلي طورته Apple لدمج نماذج التعلم الآلي مباشرة في تطبيقات iOS و macOS و watchOS و tvOS. على عكس الحلول السحابية، يقوم CoreML بجميع العمليات الحسابية على جهاز المستخدم، مما يضمن معالجة فورية للبيانات دون تأخير في نقلها عبر الشبكة، مع الحفاظ التام على خصوصية بيانات المستخدم.

لماذا تحتاج CoreML؟ أولاً، تتيح للمطورين إضافة وظائف ذكاء اصطناعي متقدمة (مثل التعرف على الصور، معالجة اللغة الطبيعية، تحليل الصوت) دون الحاجة للخوض في تفاصيل الشبكات العصبية. ثانياً، العمل على الجهاز يعني أن التطبيق يمكنه العمل في وضع عدم الاتصال بالإنترنت، وهو أمر بالغ الأهمية للعديد من حالات الاستخدام. ثالثاً، قامت Apple بتحسين CoreML للعمل مع Neural Engine و GPU و CPU، مما يضمن أقصى أداء على جميع أجهزة Apple.

يدعم CoreML النماذج المنشأة في أطر العمل الشهيرة (TensorFlow و PyTorch و scikit-learn)، ويمكن تحويلها إلى صيغة .mlmodel باستخدام أداة coremltools. يتكامل الإطار أيضًا بشكل وثيق مع Vision (لتحليل الصور) و Natural Language (للتعامل مع النصوص) و SoundAnalysis (للصوت).

2. التثبيت

CoreML هو إطار عمل مدمج من Apple ولا يتطلب تثبيتًا عبر مديري الحزم. لاستخدامه، يكفي استيراده إلى المشروع. ومع ذلك، لتحويل النماذج من الصيغ الأخرى، ستحتاج إلى حزمة Python coremltools.

تثبيت coremltools (Python):

pip install coremltools

ربط CoreML في مشروع Xcode:

import CoreML

للعمل مع الصور والفيديو، قم باستيراد Vision أيضًا:

import Vision

3. البداية السريعة — مثال عملي مصغر

لننشئ تطبيقًا بسيطًا يصنف صورة باستخدام النموذج المُدرّب مسبقًا MobileNetV2. أولاً، قم بتحميل النموذج MobileNetV2.mlmodel من مستودع Apple أو قم بتحويله باستخدام coremltools.

مثال مصغر لتصنيف الصور:

import CoreML
import Vision
import UIKit

// 1. تحميل النموذج
guard let model = try? VNCoreMLModel(for: MobileNetV2().model) else {
    fatalError("فشل تحميل النموذج")
}

// 2. إنشاء الطلب
let request = VNCoreMLRequest(model: model) { request, error in
    guard let results = request.results as? [VNClassificationObservation],
          let topResult = results.first else {
        print("فشل تصنيف الصورة")
        return
    }
    print("تم التعرف على: \(topResult.identifier) بنسبة ثقة \(topResult.confidence)")
}

// 3. تحميل الصورة
guard let image = UIImage(named: "cat.jpg"),
      let ciImage = CIImage(image: image) else {
    fatalError("فشل تحميل الصورة")
}

// 4. تنفيذ الطلب
let handler = VNImageRequestHandler(ciImage: ciImage)
try? handler.perform([request])

4. أهم الدوال/الفئات الأساسية

4.1. MLModel

التوقيع: class MLModel

الوظيفة: الفئة الرئيسية التي تمثل النموذج المُحمّل للتعلم الآلي. تسمح بإجراء التنبؤات والحصول على معلومات حول النموذج.

مثال:

// تحميل النموذج من ملف
guard let modelURL = Bundle.main.url(forResource: "MyModel", withExtension: "mlmodelc"),
      let model = try? MLModel(contentsOf: modelURL) else {
    fatalError("فشل تحميل النموذج")
}

// الحصول على بيانات وصف النموذج
let description = model.modelDescription

توصيات