Catch up on highlights from Firebase at Google I/O 2023. Learn more

AutoML Vision Edge ile bir nesne algılama modeli eğitin

Bir nesne algılama modeli, bir görüntü etiketleme modeline benzer, ancak tüm görüntülere etiket atamak yerine, görüntülerin bölgelerine etiketler atar. Bir görüntüdeki nesneleri tanımak ve bulmak veya bir nesnenin bir dizi görüntüdeki 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 etiketlerine ve nesne sınırlarına sahip bir dizi görüntü sağlarsınız. AutoML Vision Edge, cihaz üzerinde nesne algılama için kullanabileceğiniz bulutta yeni bir model eğitmek için bu veri kümesini kullanır.

Sen başlamadan önce

1. Egzersiz verilerinizi bir araya getirin

Öncelikle, etiketlenmiş görüntülerden oluşan bir eğitim veri kümesi oluşturmanız gerekir. Aşağıdaki yönergeleri aklınızda bulundurun:

  • Görseller şu formatlardan birinde olmalıdır: JPEG, PNG, GIF, BMP, ICO.

  • Her resim 30MB veya daha küçük olmalıdır. AutoML Vision Edge'in ön işleme sırasında çoğu görüntünün ölçeğini küçülttüğünü, dolayısıyla çok yüksek çözünürlüklü görüntüler sağlamanın genellikle hiçbir doğruluk avantajı olmadığını unutmayın.

  • Her etiket için en az 10 ve 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 durumunuz bulanık ve düşük çözünürlüklü görüntüler içeriyorsa (örneğin bir güvenlik kamerasından), egzersiz 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öntgen, el çizimleri, taranmış belgeler, makbuzlar vb. için iyi çalışmayabilirler.

    Ayrıca, modeller genellikle insanların atayamadığı etiketleri tahmin edemez. Dolayısıyla, bir insan resme 1-2 saniye bakarak etiket atayamıyorsa, model de muhtemelen bunu yapmak için eğitilemez.

Eğitim görüntülerinizi hazır hale getirdiğinizde, bunları Google Cloud'a aktarmaya hazırlayın. İki seçeneğiniz var:

1. Seçenek: CSV dizinli Bulut Depolama

Eğitim görüntülerinizi Google Cloud Storage'a yükleyin ve her görüntünün URL'sini ve isteğe bağlı olarak her görüntü için 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ılırken faydalıdır.

Örneğin, görüntülerinizi Cloud Storage'a 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ırlama kutuları, görüntüde göreli koordinatlar olarak belirtilir. Bkz. Egzersiz verileri CSV'sini biçimlendirme .

Görüntüler us-central1 bölgesinde bulunan ve Firebase projenizin ilgili Google Cloud projesinin bir parçası olan bir grupta depolanmalıdır.

2. Seçenek: Etiketlenmemiş resimler

Eğitim resimlerinizi etiketleyin ve yükledikten sonra Google Cloud Console'da nesne sınırları çizin. Bu yalnızca küçük veri kümeleri için önerilir. Sonraki adıma bakın.

2. Modelinizi eğitin

Ardından, görüntülerinizi kullanarak bir model eğitin:

  1. Google Cloud Console'da Vision Veri Kümeleri sayfasını açın. İstendiğinde projenizi seçin.

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

  3. Veri kümenizin İçe Aktar sekmesinde, eğitim görüntülerinizi, eğitim görüntülerinizin bir zip arşivini veya onları yüklediğiniz Bulut Depolama konumlarını içeren bir CSV dosyasını yükleyin. Bkz. Egzersiz verilerinizi birleştirme .

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

  5. Bir CSV yüklemediyseniz, her görüntü için, tanımak istediğiniz nesnelerin çevresine sınırlayıcı kutular çizin ve her nesneyi etiketleyin.

  6. Tren sekmesinde, Eğitimi başlat seçeneğine tıklayın.

    1. Modeli adlandırın ve Edge model tipini seçin.

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

      Modeli optimize et... Kullanılacak model yapılandırması. Düşük gecikme süresi veya küçük paket boyutunun önemli olduğu durumlarda daha hızlı, daha küçük modelleri veya doğruluğun en önemli olduğu durumlarda daha yavaş, daha büyük modelleri eğitebilirsiniz.
      Düğüm saati bütçesi

      Modeli eğitmek için harcanacak maksimum süre, hesaplama saatleri cinsinden. Daha fazla 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 sürede tamamlanabileceğini unutmayın. Yalnızca fiilen kullanılan saatler için faturalandırılırsınız.

      Tipik eğitim süreleri
      Çok küçük setler 1 saat
      500 resim 2 saat
      1.000 resim 3 saat
      5.000 resim 6 saat
      10.000 resim 7 saat
      50.000 resim 11 saat
      100.000 resim 13 saat
      1.000.000 resim 18 saat

3. Modelinizi değerlendirin

Eğitim tamamlandığında, modelin performans ölçümlerini görmek için Değerlendir sekmesine tıklayabilirsiniz.

Bu sayfanın önemli bir kullanımı, modeliniz için en uygun olan güven eşiğini belirlemektir. Güven eşiği, modelin bir görüntüye etiket ataması için sahip olması gereken minimum güvendir. Güven eşiği kaydırıcısını hareket ettirerek, farklı eşiklerin modelin performansını nasıl etkilediğini görebilirsiniz. Model performansı iki ölçüm kullanılarak ölçülür: kesinlik ve geri çağırma .

Görüntü sınıflandırması bağlamında kesinlik , doğru şekilde etiketlenen görüntü sayısının modelin seçilen eşik değerde etiketlediği görüntü sayısına oranıdır. Bir model yüksek duyarlılığa sahip olduğunda, etiketleri daha az sıklıkla yanlış atar (daha az yanlış pozitif).

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

Kesinlik veya geri çağırma için optimize edip etmeyeceğiniz, kullanım durumunuza bağlı olacaktır. Daha fazla bilgi için AutoML Vision başlangıç ​​kılavuzuna ve Kapsamlı Makine Öğrenimi kılavuzu - AutoML'ye bakın.

Rahat olduğunuz metrikleri üreten bir güven eşiği bulduğunuzda not alın; Uygulamanızdaki modeli yapılandırmak için güven eşiğini kullanacaksınız. (Uygun bir eşik değeri elde etmek için bu aracı istediğiniz zaman kullanabilirsiniz.)

4. Modelinizi yayınlayın veya indirin

Modelin performansından memnunsanız ve onu bir uygulamada kullanmak istiyorsanız, herhangi bir kombinasyonu seçebileceğiniz üç seçeneğiniz vardır: modeli çevrimiçi tahmin için dağıtın, modeli Firebase'de yayınlayın veya modeli indirin ve paketleyin uygulamanız ile.

Modeli dağıtın

Veri kümenizin Test Et ve Kullan sekmesinde, modelinizi bulutta çalıştıran çevrimiçi tahmin için dağıtabilirsiniz. Bu seçenek , Cloud AutoML belgelerinde ele alınmıştır. Bu sitedeki dokümanlar kalan iki seçeneği ele alır.

Modeli yayınla

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

Modeli yalnızca Firebase'de barındırarak sağlamayı ve uygulamanızla birlikte paketlememeyi seçerseniz, uygulamanızın ilk indirme boyutunu azaltabilirsiniz. Ancak, model uygulamanızla birlikte verilmemişse, uygulamanız modeli ilk kez indirene kadar modelle ilgili herhangi bir işlevin kullanılamayacağını unutmayın.

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

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

Modeli Admin SDK model yönetimi API'si ile yayınlamak için:

  1. SDK'yı yükleyin ve başlatın .

  2. Modeli yayınlayın.

    Aşağıdaki örneğe benzeyen bir dize olan modelin kaynak tanımlayıcısını belirtmeniz gerekecek:

    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 projeniz olabilir. Bu değeri Firebase konsolunun Ayarlar sayfasında veya Google Cloud Console kontrol panelinde bulabilirsiniz.
    MODEL_ID AutoML Cloud API'den aldığınız modelin kimliği.

    Piton

    # 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 indirin ve uygulamanızla birlikte paketleyin

Modelinizi uygulamanızla paketleyerek, Firebase tarafından barındırılan model mevcut olmadığında uygulamanızın makine öğrenimi özelliklerinin çalışmaya devam etmesini sağlayabilirsiniz.

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

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

Sonraki adımlar

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