AutoML Vision Edge ile nesne algılama modeli eğitme

Nesne algılama modeli, resim etiketleme modeline benzer ancak resimlerin tamamına etiket atamak yerine resimlerin bölgelerine etiket atar. Bir resimdeki nesneleri tanıyıp konumlandırmak veya bir nesnenin bir dizi resimdeki hareketlerini izlemek için nesne algılama modellerini kullanabilirsiniz.

Bir nesne algılama modelini eğitmek için AutoML Vision Edge'e karşılık gelen nesne etiketleri ve nesne sınırları içeren bir resim grubu sağlarsınız. AutoML Vision Edge, bulutta yeni bir model eğitmek için bu veri kümesini kullanır. Bu modeli cihaz üzerinde nesne algılama için kullanabilirsiniz.

Başlamadan önce

1. Eğitim verilerinizi bir araya getirme

Öncelikle, etiketli resimlerden oluşan bir eğitim veri kümesi oluşturmanız gerekir. Aşağıdaki kuralları göz önünde bulundurun:

  • Resimler şu biçimlerden birinde olmalıdır: JPEG, PNG, GIF, BMP, ICO.

  • Her resim 30 MB veya daha küçük olmalıdır. AutoML Vision Edge'in ön işleme sırasında çoğu resmin çözünürlüğünü düşürdüğünü unutmayın. Bu nedenle, genellikle çok yüksek çözünürlüklü resimler sağlamanın doğruluk açısından bir avantajı yoktur.

  • Her etiket için en az 10, tercihen 100 veya daha fazla örnek ekleyin.

  • Her etiket için birden çok açı, çözünürlük ve arka plan ekleyin.

  • Eğitim verileri, tahminlerin yapılacağı verilere mümkün olduğunca yakın olmalıdır. Örneğin, kullanım alanınız bulanık ve düşük çözünürlüklü görüntüler (güvenlik kamerasından alınan görüntüler gibi) içeriyorsa eğitim verileriniz bulanık, düşük çözünürlüklü görüntülerden oluşmalıdır.

  • AutoML Vision Edge tarafından oluşturulan modeller, gerçek dünyadaki nesnelerin fotoğrafları için optimize edilmiştir. Röntgenler, el çizimleri, taranmış belgeler, makbuzlar vb. için iyi sonuç vermeyebilir.

    Ayrıca modeller genellikle insanların atayamayacağı etiketleri tahmin edemez. Bu nedenle, bir insan resme 1-2 saniye bakarak etiket atayamazsa model de bunu yapmak için eğitilemez.

Eğitim resimleriniz hazır olduğunda bunları Google Cloud'e aktarmaya hazırlayın. İki seçeneğiniz vardır:

1. seçenek: CSV dizini içeren Cloud Storage

Eğitim görüntülerinizi Google Cloud Storage hizmetine yükleyin ve her görüntünün URL'si ile isteğe bağlı olarak doğru nesne etiketlerini ve sınırlayıcı bölgeleri listeleyen bir CSV dosyası hazırlayın. Bu seçenek, büyük veri kümeleri kullanırken faydalıdır.

Örneğin, resimlerinizi Cloud Storage hizmetine yükleyin ve aşağıdaki gibi bir CSV dosyası hazırlayın:

gs://your-training-data-bucket/001.jpg,accordion,0.2,0.4,,,0.3,0.5,,
gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,,
gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,

Nesne sınırlayıcı kutuları, resimdeki göreli koordinatlar olarak belirtilir. Eğitim verileri CSV dosyasını biçimlendirme başlıklı makaleyi inceleyin.

Resimler, us-central1 bölgesinde bulunan ve Firebase projenizin ilgili Google Cloud projesinin bir parçası olan bir pakette depolanmalıdır.

2. Seçenek: Etiketsiz resimler

Yükledikten sonra eğitim resimlerinizi etiketleyin ve Google Cloud konsolunda nesne sınırlarını çizin. Bu işlem yalnızca küçük veri kümeleri için önerilir. Sonraki adıma bakın.

2. Modelinizi eğitin

Ardından, resimlerinizi kullanarak bir model eğitin:

  1. Google Cloud konsolunda Görüntü Veri Kümeleri sayfasını açın. İstendiğinde projenizi seçin.

  2. Yeni veri kümesi'ni tıklayın, veri kümesi için bir ad girin, eğitmek istediğiniz model türünü seçin ve Veri kümesi oluştur'u tıklayın.

  3. Veri kümenizin İçe aktarma sekmesinde, eğitim görüntülerinizi, eğitim resimlerinizin ZIP arşivini veya bunları yüklediğiniz Cloud Storage konumlarını içeren bir CSV dosyasını yükleyin. Eğitim verilerinizi bir araya getirme başlıklı makaleyi inceleyin.

  4. İçe aktarma görevi tamamlandıktan sonra, eğitim verilerini doğrulamak için Görüntüler sekmesini kullanın.

  5. CSV yüklemediyseniz her resim için tanımak istediğiniz nesnelerin etrafına sınırlayıcı kutular çizin ve her nesneyi etiketleyin.

  6. Eğit sekmesinde Eğitimi başlat'ı tıklayın.

    1. Modele ad verin ve Edge model türünü seçin.

    2. Oluşturulan modelin performansını yöneten aşağıdaki eğitim ayarlarını yapılandırın:

      Model için kullanılacak optimizasyon seçeneği: Kullanılacak model yapılandırması. Düşük gecikmenin veya küçük paket boyutunun önemli olduğu durumlarda daha hızlı, daha küçük modeller, doğruluğun en önemli olduğu durumlarda ise daha yavaş, daha büyük modeller eğitebilirsiniz.
      Düğüm saati bütçesi

      Modeli eğitmek için harcanabilecek maksimum işlem saati. Daha uzun eğitim süresi genellikle daha doğru bir modele yol açar.

      Sistem, modelin optimize edildiğini ve ek eğitimin doğruluğu artırmayacağını belirlerse eğitimin belirtilen süreden daha kısa sürede tamamlanabileceğini unutmayın. Yalnızca gerçekte kullanılan saatler için faturalandırılırsınız.

      Genel eğitim süreleri
      Çok küçük kümeler1 saat
      500 resim2 saat
      1.000 resim3 saat
      5.000 resim6 saat
      10.000 resim7 saat
      50.000 resim11 saat
      100.000 resim13 saat
      1.000.000 resim18 saat

3. Modelinizi değerlendirme

Eğitim tamamlandığında, modelin performans metriklerini görmek için Değerlendir sekmesini tıklayabilirsiniz.

Bu sayfanın önemli kullanım alanlarından biri, modeliniz için en iyi sonucu veren güven eşiğini belirlemektir. Güven eşiği, modelin bir görüntüye etiket ataması için gereken minimum güvendir. Güven eşiği kaydırma çubuğunu hareket ettirerek farklı eşiklerin modelin performansını nasıl etkilediğini görebilirsiniz. Model performansı, hassasiyet ve geri çağırma olmak üzere iki metrik kullanılarak ölçülür.

Resim sınıflandırma bağlamında hassasiyet, doğru etiketlenmiş resim sayısının, seçilen eşik göz önüne alındığında modelin etiketlediği resim sayısına oranıdır. Hassasiyeti yüksek olan modeller, etiketleri daha seyrek olarak yanlış atar (daha az yanlış pozitif).

Geri çağırma, doğru şekilde etiketlenmiş görüntülerin sayısının, modelin etiketleyebilmesi gereken içeriğe sahip görüntü sayısına oranıdır. Bir model yüksek geri çağırmaya sahip olduğunda herhangi bir etiketi daha seyrek atayamaz (daha az yanlış negatif sonuç).

Doğruluk veya hatırlama için optimize etmeniz, kullanım alanınıza bağlıdır. Daha fazla bilgi için AutoML Vision başlangıç kılavuzuna ve Inclusive ML guide - AutoML bölümüne bakın.

Rahat hissettiğiniz metrikler üreten bir güven eşiği bulduğunuzda bunu not edin. Uygulamanızda modeli yapılandırmak için güven eşiğini kullanacaksınız. (Uygun bir eşik değeri almak için bu aracı istediğiniz zaman kullanabilirsiniz.)

4. Modelinizi yayınlama veya indirme

Modelin performansından memnunsanız ve bir uygulamada kullanmak istiyorsanız üç seçeneğiniz vardır. Bu seçeneklerden dilediğinizi kullanabilirsiniz: modeli online tahmin için dağıtın, modeli Firebase'de yayınlayın veya modeli indirip uygulamanızla birlikte paketleyin.

Modeli dağıtma

Veri kümenizin Test ve kullanım sekmesinde, modelinizi bulutta çalıştıran online tahmin için dağıtabilirsiniz. Bu seçenek Cloud AutoML dokümanlarında ele alınmıştır. Bu sitedeki dokümanlar, kalan iki seçenekle ilgilidir.

Modeli yayınlama

Modeli Firebase'de yayınlayarak, yeni bir uygulama sürümü yayınlamadan modeli güncelleyebilirsiniz. Ayrıca farklı kullanıcı gruplarına dinamik olarak farklı modeller sunmak için Remote Config ve A/B Testing kullanabilirsiniz.

Modeli yalnızca Firebase'de barındırarak sağlamayı ve uygulamanızla birlikte paketlemeyi tercih ederseniz uygulamanızın ilk indirme boyutunu küçültebilirsiniz. Bununla birlikte, modelin uygulamanızla paket halinde olmaması durumunda uygulamanız modeli ilk kez indirene kadar modelle ilgili işlevlerin kullanılamayacağını unutmayın.

Modelinizi yayınlamak için aşağıdaki yöntemlerden birini kullanabilirsiniz:

  • TF Lite modelini, veri kümenizin Google Cloud konsolundaki Test et ve kullan sayfasından indirin ve ardından modeli Firebase konsolunun Özel model sayfasına yükleyin. Bu, genellikle tek bir modeli yayınlamanın en kolay yoludur.
  • Admin SDK'yı kullanarak modeli doğrudan Google Cloud projenizden Firebase'e yayınlayın. Bu yöntemi, birden fazla modeli toplu olarak yayınlamak veya otomatik yayınlama ardışık düzenleri oluşturmaya yardımcı olmak için kullanabilirsiniz.

Modeli Yönetici SDK'sı model management API ile yayınlamak için:

  1. SDK'yı yükleyip başlatın.

  2. Modeli yayınlayın.

    Modelin kaynak tanımlayıcısını belirtmeniz gerekir. Bu tanımlayıcı, aşağıdaki örneğe benzeyen bir dizedir:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER Modeli içeren Cloud Storage paketinin proje numarası. Bu, sizin Firebase projeniz veya başka bir Google Cloud projesi olabilir. Bu değeri Firebase konsolunun Ayarlar sayfasında veya Google Cloud konsolunun kontrol panelinde bulabilirsiniz.
    MODEL_ID AutoML Cloud API'den aldığınız model kimliği.

    Python

    # First, import and initialize the SDK.
    
    # Get a reference to the AutoML model
    source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format(
        # See above for information on these values.
        project_number,
        model_id
    ))
    
    # Create the model object
    tflite_format = ml.TFLiteFormat(model_source=source)
    model = ml.Model(
        display_name="example_model",  # This is the name you will use from your app to load the model.
        tags=["examples"],             # Optional tags for easier management.
        model_format=tflite_format)
    
    # Add the model to your Firebase project and publish it
    new_model = ml.create_model(model)
    new_model.wait_for_unlocked()
    ml.publish_model(new_model.model_id)
    

    Node.js

    // First, import and initialize the SDK.
    
    (async () => {
      // Get a reference to the AutoML model. See above for information on these
      // values.
      const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`;
    
      // Create the model object and add the model to your Firebase project.
      const model = await ml.createModel({
        displayName: 'example_model',  // This is the name you use from your app to load the model.
        tags: ['examples'],  // Optional tags for easier management.
        tfliteModel: { automlModel: automlModel },
      });
    
      // Wait for the model to be ready.
      await model.waitForUnlocked();
    
      // Publish the model.
      await ml.publishModel(model.modelId);
    
      process.exit();
    })().catch(console.error);
    

Modeli indirip uygulamanızla paket haline getirme

Modelinizi uygulamanızla paket haline getirerek Firebase tarafından barındırılan model kullanılamadığında uygulamanızın makine öğrenimi özelliklerinin çalışmaya devam etmesini sağlayabilirsiniz.

Modeli hem yayınlar hem de uygulamanızla birlikte paketlerseniz uygulama, mevcut en son sürümü kullanır.

Modelinizi indirmek için veri kümenizin Test ve kullanım sayfasında TF Lite'ı tıklayın.

Sonraki adımlar

Modeli yayınladığınıza veya indirdiğinize göre iOS+ ve Android uygulamalarınızda modeli nasıl kullanacağınızı öğrenebilirsiniz.