Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Görüntülerdeki durdurma işaretlerini algılamak ve bulmak için ML.NET Model Builder ve Azure Machine Learning kullanarak nesne algılama modeli oluşturmayı öğrenin.
Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Verileri hazırlama ve anlama
- Model Builder yapılandırma dosyası oluşturma
- Senaryoyu seçin
- Eğitim ortamını seçme
- Verileri yükleme
- Modeli eğitme
- Modeli değerlendirme
- Tahminler için modeli kullanma
Önkoşullar
Önkoşulların ve yükleme yönergelerinin listesi için Model Builder yükleme kılavuzunu ziyaret edin.
Model Oluşturucusu nesne algılamaya genel bakış
Nesne algılama bir görüntü işleme sorunudur. Nesne algılama, görüntü sınıflandırmasıyla yakından ilişkili olsa da, görüntü sınıflandırmasını daha ayrıntılı bir ölçekte gerçekleştirir. Nesne algılama, görüntüler içindeki varlıkları hem bulur hem de kategorilere ayırır. Nesne algılama modelleri genellikle derin öğrenme ve sinir ağları kullanılarak eğitilir. Daha fazla bilgi için bkz. Derin öğrenme ve makine öğrenmesi .
Görüntüler farklı türlerde birden çok nesne içerdiğinde nesne algılamayı kullanın.

Nesne algılama için bazı kullanım örnekleri şunlardır:
- Self-Driving Arabalar
- Robotik
- Yüz Algılama
- İş Yeri Güvenliği
- Nesne Sayma
- Etkinlik Tanıma
Bu örnek, Model Builder ile oluşturulmuş bir makine öğrenmesi modeli kullanarak görüntülerdeki durma işaretlerini algılayan bir C# .NET Core konsol uygulaması oluşturur. Bu öğreticinin kaynak kodunu dotnet/machinelearning-samples GitHub deposunda bulabilirsiniz.
Verileri hazırlama ve anlama
İşareti Durdur veri kümesi, Unsplash'ten indirilen ve her biri en az bir durak işareti içeren 50 görüntüden oluşur.
Yeni VoTT projesi oluşturma
50 dur işareti görüntüsü ve sıkıştırmasını açma veri kümesini indirin.
VoTT'i ( Görsel Nesne Etiketleme Aracı) indirin.
VoTT'yi açın ve Yeni Proje'yi seçin.

Proje Ayarları'ndaGörünen Ad'ı "StopSignObjDetection" olarak değiştirin.
Güvenlik BelirteciniYeni Güvenlik Belirteci Oluştur olarak değiştirin.
Kaynak Bağlantı'nın yanında Bağlantı Ekle'yi seçin.
Bağlantı Ayarları'nda kaynak bağlantının Görünen Adı'nı "StopSignImages" olarak değiştirin ve Sağlayıcı olarak Yerel Dosya Sistemi'ni seçin. Klasör Yolu için, 50 eğitim görüntüsü içeren Stop-Signs klasörünü seçin ve ardından Bağlantıyı Kaydet'i seçin.

Proje Ayarları'ndaKaynak Bağlantı'yıStopSignImages (yeni oluşturduğunuz bağlantı) olarak değiştirin.
Hedef BağlantıyıStopSignImages olarak da değiştirin. Proje Ayarlarınız artık şu ekran görüntüsüne benzer görünmelidir:

Projeyi Kaydet'i seçin.
Etiket ve etiket görüntüleri ekleme
Şimdi sol tarafta tüm eğitim görüntülerinin önizleme görüntülerinin, ortada seçili görüntünün önizlemesinin ve sağ tarafta etiketler sütununun yer alması gerekir. Bu ekran Etiketler düzenleyicisidir.
Yeni bir etiket eklemek için Etiketler araç çubuğundaki ilk (artı şeklindeki) simgeyi seçin.

Etiketi "Stop-Sign" olarak adlandırın ve klavyenizde Enter tuşuna basın.

Resimdeki her dur işaretinin etrafına bir dikdörtgen çizmek için tıklayıp sürükleyin. İmleç dikdörtgen çizmenize izin vermiyorsa, üstteki araç çubuğundan Dikdörtgen Çiz aracını seçmeyi deneyin veya R klavye kısayolunu kullanın.
Dikdörtgeninizi çizdikten sonra, önceki adımlarda oluşturduğunuz Stop-Sign etiketini seçerek etiketi sınırlayıcı kutuya ekleyin.
Veri kümesindeki sonraki görüntünün önizleme görüntüsüne tıklayın ve bu işlemi yineleyin.
Her resimdeki her oturum açma işlemi için 3-4 arası adımlara devam edin.

VoTT JSON'unuzu dışarı aktarma
Tüm eğitim görüntülerinizi etiketledikten sonra, Model Builder tarafından eğitim için kullanılacak dosyayı dışarı aktarabilirsiniz.
Dışarı Aktarma Ayarları'na gitmek için sol araç çubuğundaki dördüncü simgeyi (kutu içinde çapraz ok bulunan simge) seçin.
SağlayıcıyıVoTT JSON olarak bırakın.
Varlık DurumunuYalnızca etiketli Varlıklar olarak değiştirin.
Görüntüleri ekle seçeneğinin işaretini kaldırın. Görüntüleri eklerseniz, eğitim görüntüleri oluşturulan dışarı aktarma klasörüne kopyalanır ve bu gerekli değildir.
Dışarı Aktarma Ayarlarını Kaydet'i seçin.

Etiketler düzenleyicisine (şerit şeklindeki sol araç çubuğundaki ikinci simge) Geri dön. Üst araç çubuğunda Projeyi Dışarı Aktar simgesini (kutudaki ok şeklindeki son simge) seçin veya Ctrl+E klavye kısayolunu kullanın.

Bu dışarı aktarma işlemi, 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. Model Oluşturucusu'nda nesne algılama modelini eğitecek sonraki adımlarda bu JSON dosyasını kullanacaksınız.
Konsol uygulaması oluşturma
Visual Studio'da StopSignDetection adlı bir C# .NET Core konsol uygulaması oluşturun.
Dosya oluşturma mbconfig
- Çözüm Gezgini'daStopSignDetection projesine sağ tıklayın ve Model Oluşturucu kullanıcı arabirimini açmak içinMakine Öğrenmesi ModeliEkle>... öğesini seçin.
- İletişim kutusunda, Model Oluşturucusu projesini StopSignDetection olarak adlandırın ve Ekle'ye tıklayın.
Senaryo seçme
Bu örnek için senaryo nesne algılamadır. Model Oluşturucusu'nun Senaryo adımında Nesne Algılama senaryosunu seçin.

Senaryo listesinde Nesne Algılama'yı görmüyorsanız Model Builder sürümünüzü güncelleştirmeniz gerekebilir.
Eğitim ortamını seçme
Model Builder şu anda yalnızca Azure Machine Learning ile nesne algılama modellerini eğitmektedir, bu nedenle Azure eğitim ortamı varsayılan olarak seçilidir.

Azure ML kullanarak model eğitmek için Model Oluşturucusu'ndan bir Azure ML denemesi oluşturmanız gerekir.
Azure ML denemesi, bir veya daha fazla makine öğrenmesi eğitim çalıştırması için yapılandırmayı ve sonuçları kapsülleyen bir kaynaktır.
Azure ML denemesi oluşturmak için önce Azure'da ortamınızı yapılandırmanız gerekir. Bir denemenin çalışması için aşağıdakiler gerekir:
- Bir Azure aboneliği
- Çalışma alanı: Eğitim çalıştırmasının bir parçası olarak oluşturulan tüm Azure ML kaynakları ve yapıtları için merkezi bir yer sağlayan bir Azure ML kaynağı.
- İşlem: Azure Machine Learning işlemi, eğitim için kullanılan bulut tabanlı bir Linux VM'dir. Model Builder tarafından desteklenen işlem türleri hakkında daha fazla bilgi edinin.
Azure ML çalışma alanı ayarlama
Ortamınızı yapılandırmak için:
Çalışma alanını ayarla düğmesini seçin.
Yeni deneme oluştur iletişim kutusunda Azure aboneliğinizi seçin.
Mevcut bir çalışma alanını seçin veya yeni bir Azure ML çalışma alanı oluşturun.
Yeni bir çalışma alanı oluşturduğunuzda aşağıdaki kaynaklar sağlanır:
- 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.
Mevcut bir işlem seçin veya yeni bir Azure ML işlem oluşturun. Bu işlem birkaç dakika sürebilir.
Varsayılan deneme adını bırakın ve Oluştur'u seçin.

İlk deneme oluşturulur ve deneme adı çalışma alanına kaydedilir. Sonraki tüm çalıştırmalar (aynı deneme adı kullanılıyorsa) aynı denemenin bir parçası olarak günlüğe kaydedilir. Aksi takdirde yeni bir deneme oluşturulur.
Yapılandırmanızdan memnunsanız, Veri adımına geçmek için Model Oluşturucusu'ndaki Sonraki adım düğmesini seçin.
Verileri yükleme
Model Oluşturucusu'nun Veri adımında eğitim veri kümenizi seçersiniz.
Önemli
Model Oluşturucusu şu anda yalnızca VoTT tarafından oluşturulan JSON biçimini kabul eder.
Giriş bölümündeki düğmeyi seçin ve stop-signs/vott-json-export dizininde bulunması gereken öğesini bulmak
StopSignObjDetection-export.jsoniçin Dosya Gezgini kullanın.
Verileriniz Veri Önizlemesi'nde doğru görünüyorsa, Eğitadımına geçmek için sonraki adım'ı seçin.
Modeli eğitme
Sonraki adım, modelinizi eğitmektir.
Model Oluşturucu Eğit ekranında Eğitimi başlat düğmesini seçin.
Bu noktada verileriniz Azure Depolama'ya yüklenir ve eğitim süreci Azure ML'de başlar.
Eğitim süreci biraz zaman alır ve bu süre seçilen işlemin boyutuna ve veri miktarına bağlı olarak değişebilir. Azure'da bir model ilk kez eğitildiğinde, kaynakların sağlanması gerektiğinden biraz daha uzun bir eğitim süresi bekleyebilirsiniz. 50 resimden oluşan bu örnek için eğitim yaklaşık 16 dakika sürdü.
Visual Studio'da Geçerli çalıştırmayı Azure portal izle bağlantısını seçerek Azure Machine Learning portalında çalıştırmalarınızın ilerleme durumunu izleyebilirsiniz.
Eğitim tamamlandıktan sonra Sonraki adım düğmesini seçerek Değerlendir adımına geçin.
Modeli değerlendirme
Değerlendir ekranında, modelin doğruluğu da dahil olmak üzere eğitim sürecindeki sonuçlara genel bir bakış elde edersiniz.

Bu durumda doğruluk %100 değerini gösterir ve bu da veri kümesindeki çok az görüntü nedeniyle modelin fazla uygun olma olasılığının yüksek olduğu anlamına gelir.
Modelinizin beklendiği gibi çalışıp çalışmadığını hızlıca denetlemek için Model deneyiminizi deneyin'i kullanabilirsiniz.
Görüntüye göz at'ı seçin ve tercihen modelin eğitim kapsamında kullanmadığı bir test görüntüsü sağlayın.

Algılanan her sınırlayıcı kutuda gösterilen puan, algılanan nesnenin güvenilirliğini gösterir. Örneğin yukarıdaki ekran görüntüsünde, durdurma işaretinin etrafındaki sınırlayıcı kutudaki 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, algılanan nesneleri puanlarına göre ekler ve kaldırır. Örneğin, eşik 0,51 ise model yalnızca 0,51 veya daha yüksek güvenilirlik puanına sahip nesneleri gösterir. Eşiği artırdıkça daha az algılanan nesneler görürsünüz ve eşiği azalttıkça algılanan daha fazla nesne görürsünüz.
Doğruluk ölçümlerinizden memnun değilseniz model doğruluğunu geliştirmenin kolay yollarından biri daha fazla veri kullanmaktır. Aksi takdirde, Model Oluşturucusu'nda Kullanadımına geçmek için Sonraki adım bağlantısını seçin.
(İsteğe bağlı) Modeli kullanma
Bu adım, modeli kullanmak için kullanabileceğiniz proje şablonlarına sahip olacaktır. Bu adım isteğe bağlıdır ve modele hizmet verme konusunda ihtiyaçlarınıza en uygun yöntemi seçebilirsiniz.
- Konsol Uygulaması
- Web API
Konsol Uygulaması
Çözümünüzde bir konsol uygulaması eklerken projeyi adlandırmanız istenir.
Konsol projesini StopSignDetection_Console adlandırın.
Projeyi geçerli çözümünüze eklemek için Çözüme ekle'ye tıklayın.
Uygulamayı çalıştırın.
Program tarafından oluşturulan çıktı aşağıdaki kod parçacığına benzer olmalıdır:
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 web API'sini eklerken projeyi adlandırmanız istenir.
Web API projesini StopSignDetection_API olarak adlandırın.
Projeyi geçerli çözümünüze eklemek için Çözüme ekle'ye tıklayın.
Uygulamayı çalıştırın.
PowerShell'i açın ve PORT değerinin uygulamanızın dinlediği bağlantı noktası olduğu aşağıdaki kodu girin.
$body = @{ ImageSource = <Image location on your local machine> } Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"Başarılı olursa, çıkış aşağıdaki metne benzer görünmelidir.
boxes labels scores boundingBoxes ----- ------ ------ ------------- {339.97797, 154.43184, 472.6338, 245.0796} {1} {0.99273646} {}- sütun,
boxesalgı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.- ,
scoressınırlayıcı kutunun bu etikete ait olduğundan 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ştirilir. İşleme sonrasında görüntünüzün sınırlayıcı kutu koordinatlarını ölçeklendirmek için şunları yapmanız gerekir:
- Ü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.
- Üst ve alt koordinatları 600'e bölün ve sol ve sağ koordinatları 800'e bölün.
Örneğin, özgün görüntü boyutları
actualImageHeightve adlıactualImageWidthModelOutputve adlıpredictionkod parçacığı göz önünde bulundurulduğunda, aşağıdaki kod parçacığı koordinatların nasıl ölçeklendirilecekleriniBoundingBoxgö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 resimdeki sınırlayıcı kutuların her birine aynı işlemin uygulanması gerekir.
- sütun,
Tebrikler! Model Oluşturucusu'nu kullanarak görüntülerdeki durdurma işaretlerini algılamak için başarıyla bir makine öğrenmesi modeli oluşturdunuz. Bu öğreticinin kaynak kodunu dotnet/machinelearning-samples GitHub deposunda bulabilirsiniz.
Ek kaynaklar
Bu öğreticide bahsedilen konular hakkında daha fazla bilgi edinmek için aşağıdaki kaynakları ziyaret edin: