Öğretici: Görsel durumları raporlamak için IoT cihazıyla Özel Görüntü İşleme kullanma
Bu örnek uygulama, görsel durumları algılamak üzere bir cihazı kamerayla eğitmek için Özel Görüntü İşleme nasıl kullanılacağını gösterir. Dışarı aktarılan ONNX modelini kullanarak bir IoT cihazında bu algılama senaryosunu çalıştırabilirsiniz.
Görsel durum, bir görüntünün içeriğini açıklar: boş bir oda veya insanlarla birlikte bir oda, boş bir araç yolu veya kamyonlu bir garaj yolu vb. Aşağıdaki görüntüde, kameranın önüne bir muz veya elma yerleştirildiğinde uygulamanın algılamasını görebilirsiniz.
Bu öğreticide şunları nasıl yapacağınızı gösterilecek:
- Örnek uygulamayı kendi Özel Görüntü İşleme ve IoT Hub kaynaklarınızı kullanacak şekilde yapılandırın.
- Özel Görüntü İşleme projenizi eğitmek için uygulamayı kullanın.
- Uygulamayı kullanarak yeni görüntüleri gerçek zamanlı olarak puanlayın ve sonuçları Azure'a gönderin.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
- Özel Görüntü İşleme Hizmeti'ni kullanmak için Azure'da Özel Görüntü İşleme Eğitim ve Tahmin kaynakları oluşturmanız gerekir. Azure portalında bunu yapmak için Özel Görüntü İşleme Oluştur sayfasındaki iletişim kutusunu doldurarak hem Eğitim hem de Tahmin kaynağı oluşturun.
Önemli
Modeli daha sonra ONNX'e aktaracağımızdan, bu projenin Sıkıştırılmış görüntü sınıflandırma projesi olması gerekir.
- Ayrıca Azure'da bir IoT Hub kaynağı oluşturmanız gerekir.
- Visual Studio 2015 veya üzeri
- İsteğe bağlı olarak, Windows 10 IoT Core sürüm 17763 veya üzerini çalıştıran bir IoT cihazı. Uygulamayı doğrudan bilgisayarınızdan da çalıştırabilirsiniz.
- Raspberry Pi 2 ve 3 için Windows 10'un kurulumunu doğrudan IoT Panosu uygulamasından yapabilirsiniz. DrangonBoard gibi diğer cihazlar için eMMC yöntemini kullanarak yanıp sönmesi gerekir. Yeni bir cihaz ayarlama konusunda yardıma ihtiyacınız varsa Windows IoT belgelerinde Cihazınızı ayarlama bölümüne bakın.
Görsel Uyarılar uygulaması hakkında
IoT Görsel Uyarıları uygulaması, dört farklı durum arasında uygun şekilde geçiş yaparak sürekli bir döngüde çalışır:
- Model Yok: İşlem yapılmaz durumu. Uygulama bir saniye boyunca sürekli uyuyacak ve kamerayı kontrol edecektir.
- Eğitim Görüntülerini Yakalama: Bu durumda, uygulama bir resim yakalar ve bunu hedef Özel Görüntü İşleme projesine eğitim görüntüsü olarak yükler. Uygulama daha sonra 500 ms boyunca uyku moduna geçirilir ve ayarlanan hedef görüntü sayısı yakalanana kadar işlemi yineler. Ardından Özel Görüntü İşleme modelinin eğitimini tetikler.
- Eğitilen Model Bekleniyor: Bu durumda uygulama, hedef projenin eğitilmiş bir yineleme içerip içermediğini denetlemek için her saniye Özel Görüntü İşleme API'sini çağırır. Bir tane bulduğunda, ilgili ONNX modelini yerel bir dosyaya indirir ve Puanlama durumuna geçer.
- Puanlama: Bu durumda uygulama, yerel ONNX modeline karşı kameradan tek bir kareyi değerlendirmek için Windows ML kullanır. Sonuçta elde edilen görüntü sınıflandırması ekranda görüntülenir ve IoT Hub'a ileti olarak gönderilir. Uygulama daha sonra yeni bir görüntü puanlamadan önce bir saniye boyunca uyku moduna alır.
Kod yapısını inceleme
Aşağıdaki dosyalar uygulamanın ana işlevselliğini işler.
Dosya | Açıklama |
---|---|
MainPage.xaml | Bu dosya XAML kullanıcı arabirimini tanımlar. Web kamerası denetimini barındırıyor ve durum güncelleştirmeleri için kullanılan etiketleri içeriyor. |
MainPage.xaml.cs | Bu kod, XAML kullanıcı arabiriminin davranışını denetler. Durum makine işleme kodunu içerir. |
CustomVision\CustomVisionServiceWrapper.cs | Bu sınıf, Özel Görüntü İşleme Hizmeti ile tümleştirmeyi işleyen bir sarmalayıcıdır. |
CustomVision\CustomVisionONNXModel.cs | Bu sınıf, ONNX modelini yüklemek ve buna karşı görüntüleri puanlama amacıyla Windows ML ile tümleştirmeyi işleyen bir sarmalayıcıdır. |
IoTHub\IotHubWrapper.cs | Bu sınıf, puanlama sonuçlarını Azure'a yüklemek için IoT Hub ile tümleştirmeyi işleyen bir sarmalayıcıdır. |
Görsel Uyarılar uygulamasını ayarlama
Bilgisayarınızda veya IoT cihazınızda Çalışan IoT Görsel Uyarıları uygulamasını almak için bu adımları izleyin.
- GitHub'da IoTVisualAlerts örneğini kopyalayın veya indirin.
- Visual Studio'da çözüm IoTVisualAlerts.sln açma
- Özel Görüntü İşleme projenizi tümleştirin:
- CustomVision\CustomVisionServiceWrapper.cs betiğinde değişkeni eğitim anahtarınızla güncelleştirin
ApiKey
. - Ardından değişkeni anahtarınız ile ilişkilendirilmiş uç nokta URL'si ile güncelleştirin
Endpoint
. - Değişkeni,
targetCVSProjectGuid
kullanmak istediğiniz Özel Görüntü İşleme projesinin karşılık gelen kimliğiyle güncelleştirin.
- CustomVision\CustomVisionServiceWrapper.cs betiğinde değişkeni eğitim anahtarınızla güncelleştirin
- IoT Hub kaynağını ayarlayın:
- IoTHub\IotHubWrapper.cs betiğinde
s_connectionString
değişkeni cihazınız için uygun bağlantı dizesi güncelleştirin. - Azure portalında IoT Hub örneğinizi yükleyin, Explorers altında IoT cihazları'nı seçin, hedef cihazınızdan seçin (veya gerekirse bir tane oluşturun) ve Birincil Bağlan ion Dizesi altında bağlantı dizesi bulun. Dize IoT Hub adınızı, cihaz kimliğinizi ve paylaşılan erişim anahtarınızı içerir; şu biçime sahiptir:
{your iot hub name}.azure-devices.net;DeviceId={your device id};SharedAccessKey={your access key}
.
- IoTHub\IotHubWrapper.cs betiğinde
Uygulamayı çalıştırma
Uygulamayı bilgisayarınızda çalıştırıyorsanız Visual Studio'da hedef cihaz için Yerel Makine'yi ve hedef platform için x64 veya x86'yı seçin. Ardından programı çalıştırmak için F5 tuşuna basın. Uygulama başlatılıp kameradan canlı akışı ve durum iletisini görüntülemelidir.
ARM işlemcisi olan bir IoT cihazına dağıtıyorsanız hedef platform olarak ARM'yi ve hedef cihaz olarak Uzak Makine'yi seçmeniz gerekir. İstendiğinde cihazınızın IP adresini belirtin (bilgisayarınızla aynı ağda olmalıdır). Cihazı önyükleyip ağa bağladıktan sonra Windows IoT varsayılan uygulamasından IP Adresini alabilirsiniz. Programı çalıştırmak için F5 tuşuna basın.
Uygulamayı ilk kez çalıştırdığınızda görsel durumlarla ilgili hiçbir bilgi sahibi olmaz. Kullanılabilir model olmadığını belirten bir durum iletisi görüntüler.
Eğitim görüntülerini yakalama
Modeli ayarlamak için uygulamayı Eğitim Görüntülerini Yakalama durumuna yerleştirmeniz gerekir. Aşağıdaki adımlardan birini uygulayın:
- Uygulamayı bilgisayarda çalıştırıyorsanız, kullanıcı arabiriminin sağ üst köşesindeki düğmeyi kullanın.
- Uygulamayı bir IoT cihazında çalıştırıyorsanız IoT Hub üzerinden cihazda yöntemini çağırın
EnterLearningMode
. Bunu Azure portalındaki IoT Hub menüsündeki cihaz girişi aracılığıyla veya IoT Hub Cihaz Gezgini gibi bir araçla çağırabilirsiniz.
Uygulama Eğitim Görüntülerini Yakalama durumuna girdiğinde, hedef görüntü sayısına ulaşana kadar saniyede yaklaşık iki görüntü yakalar. Varsayılan olarak hedef 30 resimdir, ancak ioT Hub yöntemine bağımsız değişken olarak istediğiniz sayıyı geçirerek bu parametreyi EnterLearningMode
ayarlayabilirsiniz.
Uygulama görüntüleri yakalarken, kamerayı algılamak istediğiniz görsel durum türlerine (örneğin, boş bir oda, insanlarla dolu bir oda, boş bir masa, oyuncak kamyonlu bir masa vb.) maruz bırakmanız gerekir.
Özel Görüntü İşleme modelini eğitin
Uygulama görüntüleri yakalamayı bitirdikten sonra bunları karşıya yükler ve Eğitilen Model Bekleniyor durumuna geçer. Bu noktada, Özel Görüntü İşleme web sitesine gitmeniz ve yeni eğitim görüntülerini temel alan bir model oluşturmanız gerekir. Aşağıdaki animasyonda bu işlemin bir örneği gösterilmektedir.
Bu işlemi kendi senaryonuzla yinelemek için:
- Özel Görüntü İşleme web sitesinde oturum açın.
- Artık uygulamanın karşıya yüklediği tüm eğitim görüntülerini içeren hedef projenizi bulun.
- Tanımlamak istediğiniz her görsel durumu için uygun görüntüleri seçin ve etiketi el ile uygulayın.
- Örneğin, amacınız boş bir oda ile içindeki kişilerle bir odayı ayırt etmekse, beş veya daha fazla görüntüyü yeni sınıf olarak kişilerle etiketlemenizi, Kişiler ve beş veya daha fazla görüntüyü Negatif etiketi olmadan etiketlemenizi öneririz. Bu, modelin iki durum arasında ayrım gerçekleştirmesine yardımcı olur.
- Başka bir örnek olarak, hedefiniz rafın ne kadar dolu olduğunu yaklaşık olarak bulmaksa EmptyShelf, PartiallyFullShelf ve FullShelf gibi etiketler kullanabilirsiniz.
- İşiniz bittiğinde Eğit düğmesini seçin.
- Eğitim tamamlandıktan sonra uygulama, eğitilmiş bir yinelemenin kullanılabilir olduğunu algılar. Eğitilen modeli ONNX'e dışarı aktarma ve cihaza indirme işlemini başlatır.
Eğitilen modeli kullanma
Uygulama eğitilen modeli indirdikten sonra Puanlama durumuna geçer ve kameradan sürekli döngüde puanlamaya başlar.
Yakalanan her resim için uygulama, üst etiketi ekranda görüntüler. Görsel durumu tanımıyorsa Eşleşme Yok görüntülenir. Uygulama ayrıca bu iletileri IoT Hub'a gönderir ve algılanan bir sınıf varsa, ileti etiketi, güvenilirlik puanı ve adlı detectedClassAlert
özelliği içerir. Bu özellik, özelliklere göre hızlı ileti yönlendirmesi yapmak isteyen IoT Hub istemcileri tarafından kullanılabilir.
Buna ek olarak örnek, Sense HAT birimine sahip Raspberry Pi'de ne zaman çalıştığını algılamak için Sense HAT kitaplığını kullanır, böylece bir sınıf algıladığında tüm ekran ışıklarını kırmızıya, hiçbir şey algılamadığında ise boş olarak ayarlayarak çıkış ekranı olarak kullanabilir.
Uygulamayı yeniden kullanma
Uygulamayı özgün durumuna geri döndürmek isterseniz, bunu kullanıcı arabiriminin sağ üst köşesindeki düğmeye tıklayarak veya yöntemi DeleteCurrentModel
IoT Hub aracılığıyla çağırarak yapabilirsiniz.
Herhangi bir noktada, sağ üst kullanıcı arabirimi düğmesine tıklayarak veya yöntemi yeniden çağırarak eğitim görüntülerini karşıya yükleme adımını EnterLearningMode
yineleyebilirsiniz.
Uygulamayı bir cihazda çalıştırıyorsanız ve IP adresini yeniden almanız gerekiyorsa (örneğin, Windows IoT Uzak İstemcisi aracılığıyla uzak bağlantı kurmak için), yöntemini IoT Hub üzerinden çağırabilirsinizGetIpAddress
.
Kaynakları temizleme
Artık sürdürmek istemiyorsanız Özel Görüntü İşleme projenizi silin. Özel Görüntü İşleme web sitesinde Projeler'e gidin ve yeni projenizin altındaki çöp kutusu simgesini seçin.
Sonraki adımlar
Bu öğreticide, bir IoT cihazındaki görsel durum bilgilerini algılayan ve sonuçları IoT Hub'a gönderen bir uygulama ayarlayıp çalıştıracaksınız. Ardından kaynak kodu daha fazla inceleyin veya aşağıdaki önerilen değişikliklerden birini yapın.
- Uygulamayı doğrudan Eğitilen Model Bekleniyor durumuna geçmek için bir IoT Hub yöntemi ekleyin. Bu şekilde, modeli cihazın kendisi tarafından yakalanmamış görüntülerle eğitebilir ve ardından yeni modeli komutuyla cihaza gönderebilirsiniz.
- Örnek tarafından gönderilen IoT Hub uyarılarını görselleştirmek üzere bir Power BI Panosu oluşturmak için Gerçek zamanlı algılayıcı verilerini görselleştirme öğreticisini izleyin.
- Görsel durumlar algılandığında IoT Hub uyarılarına yanıt veren bir Mantıksal Uygulama oluşturmak için IoT uzaktan izleme öğreticisini izleyin.