Öğretici: Model Builder ile görüntülerde durdurma işaretlerini algılama

Görüntülerde dur işaretlerini algılamak ve bulmak için ML.NET Model Builder ve Azure Machine Learning kullanarak nesne algılama modeli derlemeyi öğrenin.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Verileri hazırlama ve anlama
  • Bir Model Builder yapılandırma dosyası oluşturma
  • Senaryoyu seçme
  • Eğitim ortamını seçme
  • Verileri yükleme
  • Modeli eğitme
  • Modeli değerlendirme
  • Tahminler için modeli kullanma

Not

Model Builder önizlemededir.

Önkoşullar

Önkoşulların ve yükleme yönergelerinin listesi için yükleme kılavuzunu Model Builder ziyaret edin.

Model Builder algılamaya genel bakış

Nesne algılama bir görüntü oluşturma sorunudur. Nesne algılama, görüntü sınıflandırması ile yakından ilgiliyken görüntü sınıflandırmayı daha ayrıntılı bir ölçekte gerçekleştirir. Nesne algılama, görüntüler içindeki varlıkları bulup kategorilere ayırıyor. Nesne algılama modelleri genellikle derin öğrenme ve sinir ağları kullanılarak eğitilmiş olur. Daha fazla bilgi için bkz. Derin öğrenme ve makine öğrenmesi.

Görüntüler farklı türlerde birden çok nesne içerdiği zaman nesne algılamayı kullanın.

Görüntü Sınıflandırması ile Nesne Sınıflandırması karşılaştırması gösteren ekran görüntüleri.

Nesne algılama için bazı kullanım örnekleri şunlardır:

  • Self-Driving Cars
  • Robotik
  • Yüz Algılama
  • İş Yeri Güvenliği
  • Nesne Sayma
  • Etkinlik Tanıma

Bu örnek, bir makine öğrenmesi modeli kullanarak görüntülerde dur işaretlerini algılayan bir C# .NET Core konsol uygulaması Model Builder. Bu öğreticinin kaynak kodunu deponun dotnet/machinelearning-samples GitHub bulabilirsiniz.

Verileri hazırlama ve anlama

Dur İşareti veri kümesi, Her biri en az bir durdurma işareti içeren Unsxoh'tanindirilen 50 görüntüden oluşur.

Yeni voTT projesi oluşturma

  1. 50 durdurma işareti görüntülerinin veri kümelerini indirin ve sıkıştırmasını açın.

  2. VoTT'i (Görsel Nesne Etiketleme Aracı) indirin.

  3. VoTT'yi açın ve Yeni dosya'Project.

    VoTT Giriş Ekranı

  4. Bu Project Ayarlar, Görünen Ad'ı "StopSignObjDetection" olarak değiştirir.

  5. Güvenlik Belirteci'ne Yeni Güvenlik Belirteci Oluştur olarak değiştirme.

  6. Kaynak Bağlantı'nın yanındaki Bağlantı Ekle'yi seçin.

  7. Bağlantı Ayarlar altında, kaynak bağlantının Görünen Adı'ı "StopSignImages" olarak ve Sağlayıcı olarak Yerel Dosya Sistemi'ne geçin. Klasör Yolu için, 50 eğitim görüntülerini içeren Stop-Signs klasörünü seçin ve ardından Bağlantıyı Kaydet'i seçin.

    VoTT Yeni Bağlantı İletişim Kutusu

  8. Bu Project Ayarlar, Kaynak Bağlantısı'nın (az önce oluşturduğunuz bağlantı) StopSignImages olarak değişir.

  9. Hedef Bağlantı'da StopSignImages'ı da seçin. Aşağıdaki Project Ayarlar ekran görüntüsüne benzer şekilde görüntü gerekir:

    VoTT Project Ayarlar İletişim Kutusu

  10. Kaydet'i Project.

Etiket ve etiket görüntüleri ekleme

Şimdi sol tarafta tüm eğitim görüntülerinin önizleme görüntülerinin, ortadaki seçili görüntünün önizlemesini ve sağ tarafta etiketler sütununu içeren bir pencere görüyor olun. Bu ekran Etiketler düzenleyicisidir.

  1. Yeni bir etiket eklemek için Etiketler araç çubuğundaki ilk (artı şeklindeki) simgeyi seçin.

    VoTT Yeni Etiket Simgesi

  2. Etiketi "Stop-Sign" olarak etiketle ve klavyenizde Enter tarak yazın.

    VoTT Yeni Etiketi

  3. Görüntüde her durdurma işareti çevresinde bir dikdörtgen çizmek için tıklayın ve sürükleyin. İmleç bir dikdörtgen çizmenizi sağ üst araç çubuğundan Dikdörtgen Çiz aracını seçmeyi deneyin veya R klavye kısayolunu kullanın.

  4. Dikdörtgeni çizdikten sonra, önceki adımlarda oluşturduğunuz Stop-Sign etiketini seçerek etiketi sınırlayıcı kutuya ekleyin.

  5. Veri kümesinde bir sonraki görüntünün önizleme görüntüsüne tıklayın ve bu işlemi tekrarlayın.

  6. Her görüntüde her dur işareti için 3-4. adıma devam edin.

    Resimlere Not Ek Açıklama

VoTT JSON'nizi dışarı aktarma

Tüm eğitim görüntülerinizi etiketleyenin ardından, eğitim için tüm eğitim görüntüleri tarafından Model Builder dışarı aktarabilirsiniz.

  1. Sol araç çubuğundaki dördüncü simgeyi (kutu içinde çapraz ok bulunan simge) seçerek Dışarı Aktar'a Ayarlar.

  2. Sağlayıcıyı VoTT JSON olarak bırakın.

  3. Varlık Durumunu Yalnızca etiketli Varlıklar olarak değiştirme.

  4. Görüntü Dahil'in işaretini kaldırın. Görüntüleri dahil ediyorsanız, eğitim görüntüleri oluşturulan dışarı aktarma klasörüne kopyalanır ve bu gerekli değildir.

  5. Dışarı Aktarmayı Kaydet'i Ayarlar.

    VoTT Dışarı Aktarma Ayarlar

  6. Geri dön düzenleyicisine (şerit gibi şekillendirilen sol araç çubuğundaki ikinci simge) tıklayın. Üst araç çubuğunda Dışarı Aktar'Project simgesini (kutu içinde ok gibi şekillendiren son simge) seçin veya Ctrl E klavye kısayolunu + kullanın.

    VoTT Dışarı Aktarma Düğmesi

Bu dışarı aktarma, Stop-Sign-Images klasörünüzde vott-json-export adlı yeni bir klasör oluşturur ve bu yeni klasörde StopSignObjDetection-export adlı bir JSON dosyası oluşturur. Bu JSON dosyasını sonraki adımlarda, bir nesne algılama modelini Model Builder.

Konsol uygulaması oluşturma

Bu Visual Studio StopSignDetection adlı bir C# .NET Core konsol uygulaması oluşturun.

Dosya mbconfig oluşturma

  1. Bu Çözüm Gezgini, StopSignDetection projesine sağ tıklayın ve Machine Learning Modeli Ekle... öğesini seçerek kullanıcı > arabirimini Model Builder açın.
  2. İletişim kutusunda, stopsigndetection Model Builder adını girin ve Ekle'ye tıklayın.

Senaryo seçme

Bu örnek için senaryo nesne algılamadır. Uygulamanın Senaryo adım Model Builder Nesne Algılama senaryosunu seçin.

Model Builder sihirbazı Visual Studio

Senaryo listesinde Nesne Algılamayı görmüyorsanız, Model Builder sürümünü güncelleştirmeniz gerekir.

Eğitim ortamını seçme

Şu anda Model Builder algılama modellerini yalnızca Azure Machine Learning desteklediği için Azure eğitim ortamı varsayılan olarak seçilir.

Azure eğitim ortamı seçimi

Bir modeli Azure ML kullanarak eğitmek için bir Azure ML denemesi oluşturmanız Model Builder.

Azure ML denemesi, bir veya daha fazla makine öğrenmesi eğitim çalıştırması için yapılandırmayı ve sonuçları kapsüller.

Bir Azure ML oluşturmak için öncelikle Ortamınızı Azure'da yapılandırmanız gerekir. Denemenin çalışması için aşağıdakiler gerekir:

  • Bir Azure aboneliği
  • Çalışma alanı: Eğitim ML bir parçası olarak oluşturulan tüm Azure ML kaynakları ve yapıtları için merkezi bir yer sağlayan Azure depolama alanı kaynağıdır.
  • İşlem: Azure Machine Learning işlem, eğitim için kullanılan bulut tabanlı bir Linux VM'dir. tarafından desteklenen işlem türleri hakkında daha fazla bilgi Model Builder.

Azure ML çalışma alanı ayarlama

Ortamınızı yapılandırmak için:

  1. Çalışma alanını ayarla düğmesini seçin.

  2. Yeni deneme oluştur iletişim kutusunda Azure aboneliğinizi seçin.

  3. Mevcut bir çalışma alanını seçin veya yeni bir Azure ML oluşturun.

    Yeni bir çalışma alanı oluşturdukta aşağıdaki kaynaklar sağlandı:

    • Azure Machine Learning çalışma alanı
    • Azure Depolama
    • Azure Application Insights
    • Azure Container Registry
    • Azure Key Vault

    Sonuç olarak, bu işlem birkaç dakika sürebilir.

  4. Mevcut bir işlem seçin veya işlem için yeni bir Azure ML oluşturun. Bu işlem birkaç dakika sürebilir.

  5. Varsayılan deneme adını bırakın ve Oluştur'a seçin.

    Azure Çalışma Alanı Kurulum İletişim Kutusu

İlk deneme oluşturulur ve deneme adı çalışma alanına kaydedilir. Sonraki çalıştırmalar (aynı deneme adı kullanılıyorsa) aynı denemenin parçası olarak günlüğe kaydedilir. Aksi takdirde yeni bir deneme oluşturulur.

Yapılandırmadan memnunsanız, Veri adımına taşımak için Model Builder adım düğmesini seçin.

Verileri yükleme

Veri kümesi Model Builder eğitim veri kümenizi seçersiniz.

Önemli

Model Builder şu anda yalnızca VoTT tarafından oluşturulan JSON biçimini kabul eder.

  1. Giriş bölümündeki düğmeyi seçin ve Dosya Gezgini kullanarak StopSignObjDetection-export.json Stop-Signs/vott-json-export dizininde bulun.

    Model Builder Veri Adımı

  2. Verileriniz Veri Önizlemesi'ne doğru görünüyorsa Sonraki adım'ı seçerek Eğitim adımına geçin.

Modeli eğitme

Bir sonraki adım modelinizi eğitmektir.

Eğitim Model Builder Başlat düğmesini seçin.

Bu noktada, verileriniz Azure Depolama'a yük ML eğitim süreci Azure ML.

Eğitim süreci biraz zaman alır ve seçilen işlem boyutuna ve veri miktarına bağlı olarak süre değişebilir. Bir model Azure'da ilk kez eğitilsin, kaynakların sağlanması gerek olduğundan biraz daha uzun bir eğitim süresi beklemeniz gerekir. Bu 50 görüntü örneğinde eğitim yaklaşık 16 dakika sürdü.

Azure Machine Learning portalında, Azure portal'da Geçerli çalıştırmayı izle bağlantısını seçerek Visual Studio.

Eğitim tamamlandıktan sonra Sonraki adım düğmesini seçerek Değerlendirme adımına geçin.

Modeli değerlendirme

Değerlendir ekranında, model doğruluğu dahil olmak üzere eğitim sürecinin sonuçlarına genel bir bakış elde edin.

Model Builder Değerlendirme Adımı

Bu durumda doğruluk %100 olarak ifade ediyor ve bu da veri kümesinde çok az görüntü olması nedeniyle modelin büyük olasılıkla fazla uygun olduğu anlamına geliyor.

Modelinizi deneyin deneyimini kullanarak modelinizin beklendiği gibi çalışıp çalışmay olmadığını hızlıca kontrol edin.

Bir görüntüye göz at'ı seçin ve tercihen modelin eğitim kapsamında kullanmayacak bir test görüntüsü sağlama.

Model Builder Deneyin

Algılanan sınırlayıcı kutularda gösterilen puan, algılanan nesnenin güvenini gösterir. Örneğin yukarıdaki ekran görüntüsünde, durdurma işareti çevresindeki sınırlayıcı kutu üzerindeki puan, modelin algılanan nesnenin bir durdurma işareti olduğundan %99 emin olduğunu gösterir.

Eşik kaydırıcısı ile artırılabilir veya azaltılabilir Puan eşiği, puanlarına göre algılanan nesneleri ekler ve kaldırır. Örneğin eşik 0,51 ise model yalnızca 0,51 veya üzeri bir güven puanına sahip nesneleri gösterir. Eşiği artırarak daha az algılanan nesneler ve eşiği azaltarak daha fazla algılanan nesneyle karşılanır.

Doğruluk ölçümlerinden memnun değilseniz, model doğruluğunu artırmayı denemenin kolay yollarından biri daha fazla veri kullanmaktır. Aksi takdirde, sonraki adım bağlantısını seçerek bir sonraki adımda Tüketme adımına Model Builder.

(İsteğe bağlı) Modeli tüketme

Bu adımda modeli kullanmak için kullanabileceğiniz proje şablonları vardır. Bu adım isteğe bağlıdır ve modelin nasıl hizmet verecekleri hakkında ihtiyaçlarınıza en uygun yöntemi seçebilirsiniz.

  • Konsol Uygulaması
  • Web API

Konsol Uygulaması

Çözümünüze bir konsol uygulaması eklerken projeyi bir ad olarak girmeniz istenir.

  1. Konsol projesini olarak StopSignDetection_Console.

  2. Projeyi geçerli çözümünüze eklemek için Çözüme ekle'ye tıklayın.

  3. Uygulamayı çalıştırın.

    Program tarafından oluşturulan çıktı aşağıdaki kod parçacığına benzer şekilde görünüyor olabilir:

    Predicted Boxes:
    
    Top: 73.225296, Left: 256.89764, Right: 533.8884, Bottom: 484.24243, Label: stop-sign, Score: 0.9970765
    

Web API

Çözümünüze bir web API'si eklerken projeye bir ad girmeniz istenir.

  1. Web API projesini olarak StopSignDetection_API.

  2. Projeyi geçerli çözümünüze eklemek için Çözüme ekle'ye tıklayın.

  3. Uygulamayı çalıştırın.

  4. PowerShell'i açın ve aşağıdaki kodu girin; burada PORT, uygulamanın dinlediğini bağlantı noktasıdır.

    $body = @{
         ImageSource = <Image location on your local machine>
     }
    
     Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
    
  5. Başarılı olursa, çıkış aşağıdaki metne benzer şekilde olacaktır.

    boxes                                      labels scores       boundingBoxes
    -----                                      ------ ------       -------------
    {339.97797, 154.43184, 472.6338, 245.0796} {1}    {0.99273646} {}
    
    • sütunu, boxes algılanan nesnenin sınırlayıcı kutu koordinatlarını verir. Buradaki değerler sırasıyla sol, üst, sağ ve alt koordinatlara aittir.
    • labels, tahmin edilen etiketlerin dizinidir. Bu durumda, 1 değeri bir durdurma işaretidir.
    • , scores sınırlayıcı kutunun bu etikete ait olduğu için modelin ne kadar emin olduğunu tanımlar.

    Not

    (İsteğe bağlı) Sınırlayıcı kutu koordinatları 800 piksel genişlik ve 600 piksel yükseklik için normalleştirilmiştir. İşleme sonrası görüntünizin sınırlayıcı kutu koordinatlarını ölçeklendirmek için şunları yapmak gerekir:

    1. Üst ve alt koordinatları özgün görüntü yüksekliğiyle çarpın ve sol ve sağ koordinatları özgün görüntü genişliğiyle çarpın.
    2. Üst ve alt koordinatları 600'e, sol ve sağ koordinatları ise 800'e bölün.

    Örneğin, ve adlı özgün görüntü boyutları ve olarak da adlandırılan kod parçacığında, aşağıdaki actualImageHeight actualImageWidth kod ModelOutput prediction parçacığında koordinatların nasıl BoundingBox ölçeklendirilen olduğu gösterir:

    var top = originalImageHeight * prediction.Top / 600;
    var bottom = originalImageHeight * prediction.Bottom / 600;
    var left = originalImageWidth * prediction.Left / 800;
    var right = originalImageWidth * prediction.Right / 800;
    

    Bir görüntüde birden fazla sınırlayıcı kutu olabilir, bu nedenle görüntüde yer alan sınırlayıcı kutuların her biri için aynı işlem uygulanmalıdır.

Tebrikler! Görüntülerde yer alan durdurma işaretlerini algılamak için makine öğrenmesi modelini başarıyla Model Builder. Bu öğreticinin kaynak kodunu deponun dotnet/machinelearning-samples GitHub bulabilirsiniz.

Ek kaynaklar

Bu öğreticide bahsedilen konular hakkında daha fazla bilgi edinmek için aşağıdaki kaynakları ziyaret edin: