AutoML Vision Edge ile görüntü etiketleme modelini eğitme

Görüntü etiketleme modeli eğitmek için AutoML Vision Edge'e bir dizi görüntü ve bunlara karşılık gelen etiketler sağlarsınız. AutoML Vision Edge, bu veri kümesini bulutta yeni bir model eğitmek için kullanır. Bu modeli, uygulamanızda cihaz üzerinde görüntü etiketleme için kullanabilirsiniz. (Bu özellik hakkında genel bilgi için Genel Bakış bölümüne bakın.)

AutoML Vision Edge, Google Cloud hizmetidir. Hizmetin kullanımı Google Cloud Platform Lisans Sözleşmesi'ne ve Hizmete Özgü Şartlar'a tabidir ve buna göre faturalandırılır. Faturalandırma bilgileri için AutoML Fiyatlandırma sayfasını inceleyin.

Başlamadan önce

1. Eğitim verilerinizi bir araya getirme

Öncelikle, etiketli görüntülerden 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, ön işleme sırasında çoğu görüntüyü küçültür. Bu nedenle, çok yüksek çözünürlüklü görüntüler sağlamanın genellikle doğruluk açısından bir avantajı yoktur.

  • Her etiketten en az 10, tercihen 100 veya daha fazla örnek ekleyin.

  • Her etiket için birden fazla 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ü resimleri (ör. güvenlik kamerasından alınan) içeriyorsa eğitim verileriniz bulanık ve düşük çözünürlüklü resimlerden oluşmalıdır.

  • AutoML Vision Edge tarafından oluşturulan modeller, gerçek dünyadaki nesnelerin fotoğrafları için optimize edilmiştir. X ışınları, elle çizilmiş resimler, taranmış belgeler, makbuzlar vb. için iyi sonuç vermeyebilir.

    Ayrıca, modeller genellikle insanların atayamadığı etiketleri tahmin edemez. Dolayısıyla, bir insan 1-2 saniye boyunca resme bakarak etiket atayamıyorsa model de bunu yapacak şekilde eğitilemez.

Eğitim resimleriniz hazır olduğunda bunları Firebase'e aktarmaya hazırlayın. Üç seçeneğiniz vardır:

1. seçenek: Yapılandırılmış zip arşivi

Eğitim resimlerinizi, her biri bir etikete göre adlandırılmış ve bu etiketin örneklerini içeren dizinler halinde düzenleyin. Ardından, dizin yapısını bir ZIP arşivi olarak sıkıştırın.

Bu zip arşivindeki dizin adları en fazla 32 ASCII karakteri uzunluğunda olabilir ve yalnızca alfanümerik karakterler ile alt çizgi karakterini (_) içerebilir.

Örneğin:

my_training_data.zip
  |____accordion
  | |____001.jpg
  | |____002.jpg
  | |____003.jpg
  |____bass_guitar
  | |____hofner.gif
  | |____p-bass.png
  |____clavier
    |____well-tempered.jpg
    |____well-tempered (1).jpg
    |____well-tempered (2).jpg

2. seçenek: CSV diziniyle Cloud Storage

Eğitim resimlerinizi Google Cloud Storage adresine yükleyin ve her resmin URL'sini, isteğe bağlı olarak da her resmin doğru etiketlerini listeleyen bir CSV dosyası hazırlayın. Bu seçenek, çok büyük veri kümeleri kullanılırken yararlıdır.

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

gs://your-training-data-bucket/001.jpg,accordion
gs://your-training-data-bucket/002.jpg,accordion
gs://your-training-data-bucket/003.jpg,accordion
gs://your-training-data-bucket/hofner.gif,bass_guitar
gs://your-training-data-bucket/p-bass.png,bass_guitar
gs://your-training-data-bucket/well-tempered.jpg,clavier
gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier
gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier

Resimler, Firebase projenizin ilgili Google Cloud projesinin bir parçası olan pakette depolanmalıdır.

CSV dosyasını hazırlama hakkında daha fazla bilgi için Cloud AutoML Vision belgelerindeki Eğitim verilerinizi hazırlama başlıklı makaleyi inceleyin.

3. seçenek: Etiketlenmemiş resimler

Eğitim resimlerinizi tek tek veya yapılandırılmamış bir zip dosyası içinde yükledikten sonra Firebase konsolunda etiketleyin. Sonraki adıma bakın.

2. Modelinizi eğitin

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

  1. Google Cloud konsolunda Vision 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 aktar sekmesinde, eğitim resimlerinizin bulunduğu bir zip arşivi veya resimleri yüklediğiniz Cloud Storage konumlarını içeren bir CSV dosyası 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 ve etiketlenmemiş görüntüleri etiketlemek için Görüntüler sekmesini kullanın.

  5. 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ı belirleyen 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 gecikme süresi veya küçük paket boyutu önemli olduğunda daha hızlı ve daha küçük modeller, doğruluk en önemli olduğunda ise daha yavaş ve daha büyük modeller eğitebilirsiniz.
      Düğüm saati bütçesi

      Modeli eğitmek için harcanabilecek maksimum süre (işlem saati cinsinden). Daha uzun eğitim süresi genellikle daha doğru bir modelle sonuçlanır.

      Sistem, modelin optimize edildiğini ve ek eğitimin doğruluğu artırmayacağını belirlerse eğitimin belirtilen süreden daha kısa bir sürede tamamlanabileceğini unutmayın. Yalnızca gerçekten 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 Değerlendir sekmesini tıklayarak modelin performans metriklerini görebilirsiniz.

Bu sayfanın önemli kullanım alanlarından biri, modeliniz için en iyi sonucu verecek 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 kesinlik, doğru etiketlenmiş resim sayısının, seçilen eşik göz önünde bulundurularak modelin etiketlediği resim sayısına oranıdır. Hassasiyeti yüksek olan bir model, etiketleri daha az sıklıkta yanlış atar (daha az yanlış pozitif).

Geri çağırma, doğru etiketlenen resim sayısının, modelin etiketleyebilmesi gereken içeriğe sahip resim sayısına oranıdır. Geri çağırması yüksek olan bir model, daha az sıklıkla etiket atamada başarısız olur (daha az yanlış negatif).

Hassasiyet veya hatırlama için optimizasyon yapmanız, kullanım alanınıza bağlıdır. Daha fazla bilgi için AutoML Vision başlangıç kılavuzu ve Kapsamlı ML kılavuzu - AutoML başlıklı makaleleri inceleyin.

Kendinizi rahat hissettiğiniz metrikleri üreten bir güven eşiği bulduğunuzda bunu not edin. Güven eşiğini, uygulamanızdaki modeli yapılandırmak için kullanacaksınız. (Uygun bir eşik değeri elde etmek için bu aracı istediğiniz zaman kullanabilirsiniz.)

4. Modelinizi yayınlama veya indirme

Modelin performansından memnunsanız ve modeli bir uygulamada kullanmak istiyorsanız üç seçeneğiniz vardır. Bu seçeneklerden herhangi bir kombinasyonu tercih edebilirsiniz: 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 etme ve kullanma sekmesinde, modelinizi bulutta çalıştıran online tahmin için dağıtabilirsiniz. Bu seçenek Cloud AutoML belgelerinde 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üncelleyebilir ve farklı kullanıcılara dinamik olarak farklı modeller sunmak için Remote Config ve A/B Testing kullanabilirsiniz.

Modeli yalnızca Firebase ile barındırarak sağlamayı ve uygulamanızla birlikte paketlememeyi seçerseniz uygulamanızın ilk indirme boyutunu küçültebilirsiniz. Ancak modeli uygulamanızla birlikte paketlemezseniz modelle ilgili işlevler, uygulamanız modeli ilk kez indirene kadar kullanılamaz.

Modelinizi yayınlamak için iki yöntemden birini kullanabilirsiniz:

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

Modeli Admin SDK model yönetimi 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, 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, Firebase projeniz veya başka bir Google Cloud proje olabilir. Bu değeri Firebase konsolunun veya Google Cloud konsol kontrol panelinin Ayarlar sayfasında bulabilirsiniz.
    MODEL_ID Modelin kimliği (AutoML Cloud API'den alınır).

    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 paketleme

Modelinizi uygulamanızla birlikte paketleyerek, Firebase'de barındırılan model kullanılamadığında uygulamanızın makine öğrenimi özelliklerinin çalışmaya devam etmesini sağlayabilirsiniz.

Hem modeli yayınlar hem de uygulamanızla birlikte paketlerseniz uygulama, mevcut en yeni sürümü kullanır.

Modelinizi indirmek için veri kümenizin Test etme ve kullanma 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ı öğrenin.