Öğretici: Özel Görüntü İşleme Hizmeti ile uçta görüntü sınıflandırması gerçekleştirme
Uygulama hedefi:
IoT Edge 1,1
IoT Edge 1,2
Azure IoT Edge, iş yüklerini buluttan uca taşıyarak IoT çözümünüzü daha verimli hale getirmenizi sağlayabilir. Bu özellik, özel görüntü işleme modelleri gibi çok miktarda veri işleyen hizmetler için uygundur. Özel Görüntü İşleme Hizmeti, özel görüntü sınıflandırıcıları derlemenizi ve bunları cihazlara kapsayıcı olarak dağıtmanızı sağlar. Bu iki hizmet birlikte tüm verileri aktarmak zorunda kalmadan görüntülerden veya video akışlarından içgörü elde etmenizi sağlar. Özel Görüntü İşleme Hizmeti, içgörü oluşturmak için bir görüntüyü eğitilmiş modelle karşılaştıran bir sınıflandırıcı sunar.
Örneğin bir IoT Edge cihazı üzerinde çalışan Özel Görüntü İşleme Hizmeti bir otoyoldaki trafik yoğunluğunun beklenenden daha yüksek veya düşük olduğunu veya bir otoparkta yeterli yer bulunup bulunmadığını belirleyebilir. Bu içgörüler eylem gerçekleştirmek üzere başka bir hizmetle paylaşılabilir.
Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Özel Görüntü İşleme Hizmeti ile bir görüntü sınıflandırıcı derleme.
- Cihazınızdaki Özel Görüntü İşleme Hizmeti web sunucusunu sorgulayan bir IoT Edge modülü dağıtma.
- Görüntü sınıflandırıcı sonuçlarını IoT Hub'a gönderme.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
İpucu
Bu öğretici, raspberry Pi 3 Özel Görüntü İşleme ve Azure IoT Edge basitleştirilmiş bir sürümüdür. Bu öğretici bir bulut VM'sinde çalıştıracak şekilde tasarlanmıştır ve görüntü sınıflandırıcıyı eğitmek ve test etmek için statik görüntüler kullanır. Bu, yeni bir kullanıcı tarafından Özel Görüntü İşleme değerlendirmeye IoT Edge. Örnek proje fiziksel donanım kullanır ve görüntü sınıflandırıcıyı eğitmek ve test etmek için bir canlı kamera akışı ayarlar. Bu, daha ayrıntılı ve gerçek bir senaryoyu denemek isteyen biri için yararlıdır.
Bu öğreticiye başlamadan önce, Linux kapsayıcısı geliştirme ortamınızı ayarlamak için önceki öğreticiyi geçmiş olması gerekir: Linux kapsayıcılarını kullanarak IoT Edge modüller geliştirme. Bu öğreticiyi tamamlayarak aşağıdaki önkoşullara sahip olursanız:
- Azure'da ücretsiz veya standart katman IoT Hub'ı.
- Linux kapsayıcıları Azure IoT Edge çalıştıran bir cihaz. Linux cihazı ayarlamak veya bir linux cihazı ayarlamak için hızlı başlangıçları Windows kullanabilirsiniz.
- gibi bir kapsayıcı kayıt Azure Container Registry.
- Visual Studio Code ile yapılandırılmışAzure IoT Tools.
- Docker CE, Linux kapsayıcılarını çalıştıracak şekilde yapılandırılmıştır.
Özel Görüntü İşleme hizmetiyle bir IoT Edge modülü geliştirmek için geliştirme makinenize aşağıdaki ek önkoşulları yükleyin:
Özel Görüntü İşleme Hizmeti ile bir görüntü sınıflandırıcı derleme
Görüntü sınıflandırıcı derlemek için bir Özel Görüntü İşleme Hizmeti projesi oluşturmanız ve eğitim amaçlı görüntü sağlamanız gerekir. Bu bölümde gerçekleştireceğiniz adımlar hakkında daha fazla bilgi için bkz. Özel Görüntü İşleme Hizmeti ile sınıflandırıcı derleme.
Görüntü sınıflandırıcıyı derleyip eğittikten sonra Docker kapsayıcısı olarak dışarı aktarabilir ve bir IoT Edge cihazına dağıtabilirsiniz.
Yeni proje oluşturma
Web tarayıcınızda Özel Görüntü İşleme Hizmeti web sayfasına gidin.
Sign in (Oturum aç) öğesini seçin ve Azure kaynaklarına erişmek için kullandığınız hesapla oturum açın.
Yeni proje'yi seçin.
Aşağıdaki değerlerle bir proje oluşturun:
Alan Değer Ad Projeniz için bir ad belirleyin, örneğin: EdgeTreeClassifier. Açıklama İsteğe bağlı proje açıklaması. Kaynak Özel Görüntü İşleme Service kaynağı içeren Azure kaynak gruplarından birini seçin veya henüz eklenmemişse yeni bir tane oluşturun. Proje Türleri Sınıflandırma Sınıflandırma Türleri Çok sınıflı (görüntü başına tek etiket) Etki Alanları General (compact) (Genel (kompakt)) Dışarı Aktarma Özellikleri Temel platformlar (Tensorflow, CoreML, ONNX, ...) Create project (Proje oluştur) öğesini seçin.
Görüntüleri karşıya yükleme ve sınıflandırıcınızı eğitme
Görüntü sınıflandırıcı oluşturmak için eğitim görüntülerine ve test görüntülerine ihtiyacınız vardır.
Cognitive-CustomVision-Windows deposundaki örnek görüntüleri yerel geliştirme makinenize kopyalayın veya indirin.
git clone https://github.com/Microsoft/Cognitive-CustomVision-Windows.gitÖzel Görüntü İşleme Hizmeti projenize dönün ve Add images (Görüntü ekle) öğesini seçin.
Kopyaladığınız yerel git deposuna gidin ve ilk görüntü klasörünü açın: Cognitive-CustomVision-Windows / Samples / Images / Hemlock. Klasördeki 10 görüntüyü ve ardından Open (Aç) öğesini seçin.
Bu görüntü grubuna hemlock etiketini ekleyin ve Enter tuşuna basarak etiketi uygulayın.
Upload 10 files (10 dosyayı karşıya yükle) öğesini seçin.

Görüntüler başarıyla karşıya yüklendikten sonra Done (Bitti) öğesini seçin.
Yeniden Add images (Görüntü ekle) öğesini seçin.
İkinci görüntü klasörüne göz atın: Cognitive-CustomVision-Windows / Samples / Images / Japanese Cherry. Klasördeki 10 görüntüyü ve ardından Open (Aç) öğesini seçin.
Bu görüntü grubuna japanese cherry etiketini ekleyin ve Enter tuşuna basarak etiketi uygulayın.
Upload 10 files (10 dosyayı karşıya yükle) öğesini seçin. Görüntüler başarıyla karşıya yüklendikten sonra Done (Bitti) öğesini seçin.
İki görüntü kümesini de etiketleyip yükledikten sonra sınıflandırıcıyı eğitmek için Train (Eğit) öğesini seçin.
Sınıflandırıcınızı dışarı aktarma
Sınıflandırıcınızı eğittikten sonra sınıflandırıcının Performance (Performans) sayfasında Export (Dışarı aktar) öğesini seçin.

Platform için DockerFile girişini seçin.
Sürüm olarak Linux seçin.
Export (Dışarı aktar) öğesini seçin.

Dışarı aktarma işlemi tamamlandıktan sonra Download (İndir) öğesini seçin ve .zip paketini bilgisayarınıza kaydedin. Paketteki tüm dosyaları ayıklayın. Bu dosyaları görüntü sınıflandırma sunucusunu içeren bir IoT Edge modülü oluşturmak için kullanacaksınız.
Özel Görüntü İşleme Hizmeti projenizi oluşturma ve eğitme adımlarını tamamladınız. Dışarı aktarılan dosyaları bir sonraki bölümde kullanacaksınız ancak Özel Görüntü İşleme Hizmeti web sayfasıyla işiniz bitti.
IoT Edge çözümü oluşturma
Artık geliştirme makinenizde görüntü sınıflandırıcınızın kapsayıcı sürümü için gerekli dosyalara sahipsiniz. Bu bölümde görüntü sınıflandırıcı kapsayıcısını IoT Edge modülü olarak çalıştıracak şekilde yapılandıracaksınız. Ayrıca görüntü sınıflandırıcı ile birlikte dağıtılacak ikinci bir modül de oluşturacaksınız. İkinci modül istekleri sınıflandırıcıya, sonuçları da ileti olarak IoT Hub'a gönderir.
Yeni çözüm oluşturma
Çözüm, tek bir IoT Edge dağıtımı için birden fazla modül geliştirmek ve düzenlemek için kullanabileceğiniz mantıksal bir yoldur. Bir çözümde bir veya daha fazla modülün kodunun yanı sıra bunların bir IoT Edge cihazında nasıl yapılandırılacağını bildiren dağıtım bildirimi bulunur.
Bu Visual Studio Code, komut > paletini açmak için Komut Paletini VS Code seçin.
Komut paletinde Azure IoT Edge: New IoT Edge solution komutunu girin ve çalıştırın. Komut paletinde çözümünüzü oluşturmak için aşağıdaki bilgileri girin:
Alan Değer Klasör seçin Geliştirme makinenizde VS Code'un çözüm dosyalarını oluşturmak için kullanacağı konumu seçin. Çözüm adı sağlayın Çözümünüz için CustomVisionSolution gibi açıklayıcı bir ad girin veya varsayılan değeri kabul edin. Modül şablonunu seçin Python Modülü'nü seçin. Modül adı sağlayın Modülünüze classifier adını verin.
Modül adının küçük harfli olması önemlidir. IoT Edge, modüllere başvururken büyük/küçük harfe duyarlıdır ve bu çözümde tüm istekleri küçük harf ile biçimlendiren bir kitaplık kullanılmaktadır.Modül için Docker görüntü deposunu sağlama Görüntü deposu, kapsayıcı kayıt defterinizin adını ve kapsayıcı görüntünüzün adını içerir. Kapsayıcı görüntünüz bir önceki adımdaki değerle önceden doldurulur. Localhost: 5000 ' i Azure Container kayıt defterinizin oturum açma sunucusu değeriyle değiştirin. Oturum açma sunucusunu Azure portal kapsayıcı kayıt defterinizin genel bakış sayfasından alabilirsiniz.
Son dize <registry name> . azurecr.io/Classifier gibi görünür.
Ardından Visual Studio Code penceresi IoT Edge çözümü çalışma alanınızı yükler.
Kayıt defteri kimlik bilgilerinizi ekleme
Ortam dosyası, kapsayıcı kayıt defterinizin kimlik bilgilerini depolar ve bu bilgileri IoT Edge çalışma zamanı ile paylaşır. Çalışma zamanı, özel görüntülerinizi IoT Edge cihazına çekmek için bu kimlik bilgilerine ihtiyaç duyar.
IoT Edge uzantısı, Azure 'dan kapsayıcı kayıt defteri kimlik bilgilerinizi çekmeye ve ortam dosyasına doldurmaya çalışır. Kimlik bilgilerinizin zaten eklenmiş olup olmadığını denetleyin. Yoksa, şimdi ekleyin:
- VS Code gezgininde .env dosyasını açın.
- Alanları Azure kapsayıcı kayıt defterinizden kopyaladığınız kullanıcı adı ve parola değerleriyle güncelleştirin.
- Bu dosyayı kaydedin.
Not
Bu öğretici, geliştirme ve test senaryoları için uygun olan Azure Container Registry için yönetici oturum açma kimlik bilgilerini kullanır. Üretim senaryolarına hazırsanız, hizmet sorumluları gibi en az ayrıcalıklı kimlik doğrulama seçeneği önerilir. Daha fazla bilgi için bkz. kapsayıcı Kayıt defterinize erişimi yönetme.
Hedef mimarinizi seçin
şu anda Visual Studio Code linux AMD64 ve linux ARM32v7 cihazları için modüller geliştirebilir. Kapsayıcı oluşturulup her mimari türü için farklı çalıştığından, her çözümle hedeflediğiniz mimariyi seçmeniz gerekir. Bu öğretici için kullanacağımız Linux AMD64 varsayılandır.
Komut paleti ' ni açın ve Azure IoT Edge için arama yapın : Edge çözümü Için varsayılan hedef platformunu ayarla veya pencerenin altındaki yan çubukta kısayol simgesini seçin.
Komut paletinde, seçenekler listesinden hedef mimariyi seçin. Bu öğreticide, IoT Edge cihaz olarak bir Ubuntu sanal makinesi kullanıyoruz, bu nedenle varsayılan AMD64'yi tutacağız.
Görüntü sınıflandırıcınızı ekleme
Visual Studio Code uygulamasındaki Python modülü şablonu, IoT Edge örneğinizi test etmek için çalıştırabileceğiniz örnek kod içerir. Bu senaryoda bu kodu kullanmayacaksınız. Bunun yerine bu bölümdeki adımları kullanarak örnek kodu daha önceden dışarı aktardığınız görüntü sınıflandırıcı kapsayıcısıyla değiştirin.
Dosya gezgininizde indirip ayıkladığınız Özel Görüntü İşleme Hizmeti paketine göz atın. Ayıklanan paketin içeriğin tamamını kopyalayın. app ve azureml adlı iki klasörün yanı sıra Dockerfile ve README adlı iki dosyanın bulunması gerekir.
Dosya gezgininde Visual Studio Code'un IoT Edge çözümünüzü oluşturmasını istediğiniz dizine gidin.
Sınıflandırıcı modülü klasörünü açın. Önceki bölümde önerilen adları kullandıysanız klasör yapısı şu şekilde olacaktır: CustomVisionSolution / modules / classifier.
Dosyaları classifier klasörüne yapıştırın.
Visual Studio Code penceresine dönün. Çözüm çalışma alanınızda görüntü sınıflandırıcı dosyaları modül klasöründe görünmelidir.

Sınıflandırıcı klasöründeki module.json dosyasını açın.
Platformlar parametresini, eklediğiniz yeni Dockerfile 'ı işaret etmek üzere güncelleştirin ve bu öğretici için kullandığımız tek MIMARIDE AMD64 'in yanı sıra tüm seçenekleri kaldırın.
"platforms": { "amd64": "./Dockerfile" }Yaptığınız değişiklikleri kaydedin.
Sanal kamera modülü oluşturma
Gerçek bir Özel Görüntü İşleme Hizmeti dağıtımında canlı görüntü veya video akışı sağlayan bir kameranız olacaktır. Bu senaryo için görüntü sınıflandırıcıya test görüntüsü gönderen bir modül oluşturarak kamera simülasyonu yapabilirsiniz.
Yeni modül ekleme ve yapılandırma
Bu bölümde aynı CustomVisionSolution öğesine yeni bir modül ekleyecek ve sanal kamerayı oluşturmak için gerekli kodu sağlayacaksınız.
Aynı Visual Studio Code penceresinde komut paletini kullanarak Azure IoT Edge: Add IoT Edge Module komutunu çalıştırın. Komut paletinde yeni modülünüz için aşağıdaki bilgileri girin:
İstem Değer Dağıtım şablonu dosyasını seçin CustomVisionSolution klasöründeki dosya deployment.template.js seçin. Modül şablonunu seçin Python Modülü'nü seçin Modül adı sağlayın Modülünüze cameraCapture adını verin Modül için Docker görüntü deposunu sağlama Localhost: 5000 ' i Azure Container Registry 'Nizin oturum açma sunucusu değeriyle değiştirin.
Son dize <registryname> . azurecr.io/cameracapture gibi görünür.VS Code penceresi yeni modülünüzü çözüm çalışma alanında yükler ve deployment.template.json dosyasını güncelleştirir. Bu noktada iki modül klasörü görmeniz gerekir: classifier ve cameraCapture.
modules / cameraCapture klasöründeki main.py dosyasını açın.
Dosyanın tamamını aşağıdaki kod ile değiştirin. Bu kod örneği, sınıflandırıcı modülünde çalışan görüntü işleme hizmetine POST istekleri gönderir. Bu modül kapsayıcısı, isteklerde kullanabileceğiniz örnek bir görüntüyle sunulmaktadır. Modül ardından yanıtı bir IoT Hub iletisi olarak paketler ve bir çıkış kuyruğuna gönderir.
# Copyright (c) Microsoft. All rights reserved. # Licensed under the MIT license. See LICENSE file in the project root for # full license information. import time import sys import os import requests import json from azure.iot.device import IoTHubModuleClient, Message # global counters SENT_IMAGES = 0 # global client CLIENT = None # Send a message to IoT Hub # Route output1 to $upstream in deployment.template.json def send_to_hub(strMessage): message = Message(bytearray(strMessage, 'utf8')) CLIENT.send_message_to_output(message, "output1") global SENT_IMAGES SENT_IMAGES += 1 print( "Total images sent: {}".format(SENT_IMAGES) ) # Send an image to the image classifying server # Return the JSON response from the server with the prediction result def sendFrameForProcessing(imagePath, imageProcessingEndpoint): headers = {'Content-Type': 'application/octet-stream'} with open(imagePath, mode="rb") as test_image: try: response = requests.post(imageProcessingEndpoint, headers = headers, data = test_image) print("Response from classification service: (" + str(response.status_code) + ") " + json.dumps(response.json()) + "\n") except Exception as e: print(e) print("No response from classification service") return None return json.dumps(response.json()) def main(imagePath, imageProcessingEndpoint): try: print ( "Simulated camera module for Azure IoT Edge. Press Ctrl-C to exit." ) try: global CLIENT CLIENT = IoTHubModuleClient.create_from_edge_environment() except Exception as iothub_error: print ( "Unexpected error {} from IoTHub".format(iothub_error) ) return print ( "The sample is now sending images for processing and will indefinitely.") while True: classification = sendFrameForProcessing(imagePath, imageProcessingEndpoint) if classification: send_to_hub(classification) time.sleep(10) except KeyboardInterrupt: print ( "IoT Edge module sample stopped" ) if __name__ == '__main__': try: # Retrieve the image location and image classifying server endpoint from container environment IMAGE_PATH = os.getenv('IMAGE_PATH', "") IMAGE_PROCESSING_ENDPOINT = os.getenv('IMAGE_PROCESSING_ENDPOINT', "") except ValueError as error: print ( error ) sys.exit(1) if ((IMAGE_PATH and IMAGE_PROCESSING_ENDPOINT) != ""): main(IMAGE_PATH, IMAGE_PROCESSING_ENDPOINT) else: print ( "Error: Image path or image-processing endpoint missing" )main.py dosyasını kaydedin.
requrements.txt dosyasını açın.
Kapsayıcıya dahil etmek için yeni bir kitaplık satırı ekleyin.
requestsrequirements.txt dosyasını kaydedin.
Kapsayıcıya test görüntüsü ekleme
Bu senaryoda görüntü beslemesi sağlamak için gerçek bir kamera kullanmak yerine tek bir test amaçlı görüntü kullanacağız. Bu öğreticinin önceki bölümlerinde eğitim görüntüleri için indirdiğiniz GitHub deposunda bir test görüntüsü bulunur.
bilişsel -customvision-Windows / örnekleri / görüntülerinin / testinde bulunan test görüntüsüne gidin.
test_image.jpg dosyasını kopyalayın
IoT Edge çözüm dizininize gidin ve test görüntüsünü modüller / cameraCapture klasörüne yapıştırın. Görüntü önceki bölümde düzenlediğiniz main.py dosyasıyla aynı klasörde olmalıdır.
Visual Studio Code'da cameraCapture modülünün Dockerfile.amd64 dosyasını açın.
Çalışma dizinini belirleyen
WORKDIR /appsatırından sonra şu kod satırını ekleyin:ADD ./test_image.jpg .Dockerfile dosyasını kaydedin.
Dağıtım bildirimi hazırlama
Bu öğreticide bu noktaya kadar ağaç görüntülerini sınıflandırmak için bir Özel Görüntü İşleme Hizmeti modeli eğittiniz ve bu modeli bir IoT Edge modülü olarak paketlediniz. Ardından görüntü sınıflandırma sunucusunu sorgulayıp sonuçlarını IoT Hub'a bildirebilecek ikinci bir modül oluşturdunuz. Artık bir IoT Edge cihazına bu iki modülü birlikte başlatma ve çalıştırma sürecini anlatacak dağıtım bildirimini oluşturmaya hazırsınız.
Visual Studio Code için IoT Edge uzantısı dağıtım bildirimi oluşturmanıza yardımcı olmak için her IoT Edge çözümünde bir şablon oluşturur.
Çözüm klasöründeki deployment.template.json dosyasını açın.
Üç modül içermesi gereken modüller bölümünü bulun: oluşturduğunuz iki, sınıflandırıcı ve cameraCapture ve varsayılan olarak SimulatedTemperatureSensor içeren bir üçüncü.
SimulatedTemperatureSensor modülünü tüm parametreleriyle birlikte silin. Bu modül, test senaryoları için örnek veri sağlamak için eklenmiştir ancak bu dağıtımda ihtiyacınız yoktur.
Görüntü sınıflandırma modülüne classifier dışında bir ad verdiyseniz adı bu adımda kontrol edin ve tamamının küçük harf olduğundan emin olun. cameraCapture modülü, classifier modülünü tüm istekleri küçük harf olarak biçimlendiren istek kitaplığını kullanarak çağırır ve IoT Edge büyük/küçük harfe duyarlıdır.
cameraCapture modülünün createOptions parametresini aşağıdaki JSON koduyla güncelleştirin. Bu bilgiler main.py işleminde alınan modül kapsayıcısında ortam değişkenlerini oluşturur. Bu bilgileri dağıtım bildirimine ekleyerek modül görüntüsünü yeniden derlemek zorunda kalmadan görüntüyü veya uç noktayı değiştirebilirsiniz.
"createOptions": "{\"Env\":[\"IMAGE_PATH=test_image.jpg\",\"IMAGE_PROCESSING_ENDPOINT=http://classifier/image\"]}"Özel Görüntü İşleme Hizmeti modülünüzün adını classifier dışında bir değer olarak belirlediyseniz görüntü işleme uç nokta değerini uygun şekilde güncelleştirin.
Dosyanın en altındaki $edgeHub modülünün routes parametresini güncelleştirin. Tahmin sonuçlarının cameraCapture kaynağından IoT Hub'a yönlendirilmesini istersiniz.
"routes": { "cameraCaptureToIoTHub": "FROM /messages/modules/cameraCapture/outputs/* INTO $upstream" },İkinci modülün adını cameraCapture dışında bir değer olarak belirlediyseniz yönlendirme değerini uygun şekilde güncelleştirin.
deployment.template.json dosyasını kaydedin.
IoT Edge çözüm IoT Edge oluşturma
İki modülü de oluşturduğunuza ve dağıtım bildirimi şablonunu yapılandırdığınıza göre kapsayıcı görüntülerini oluşturmaya ve kapsayıcı kayıt defterinize göndermeye hazırsınız.
Görüntüleri kayıt defterinize gönderdikten sonra çözümü bir IoT Edge cihazına dağıtabilirsiniz. IoT Hub üzerinden bir cihazda modül ayarlayabilirsiniz ancak IoT Hub ve cihazlara Visual Studio Code aracılığıyla da erişebilirsiniz. Bu bölümde IoT Hub'ınıza erişim ayarlarını yapacak ve ardından çözümünüzü IoT Edge cihazınıza dağıtmak için VS Code uygulamasını kullanacaksınız.
İlk olarak çözümünüzü oluşturun ve kapsayıcı kayıt defterinize gönderin.
Terminali VS Code seçerek tümleşik terminali > açın.
Terminale aşağıdaki komutu girerek Docker'da oturum açma. Azure kapsayıcı kayıt defterinizin kullanıcı adı, parola ve oturum açma sunucusuyla oturum açma. Bu değerleri kayıt defterinizin Erişim anahtarları bölümünden alabilir ve Azure portal.
docker login -u <ACR username> -p <ACR password> <ACR login server>kullanımını öneren bir güvenlik uyarısı
--password-stdinalırsınız. Bu en iyi yöntem üretim senaryoları için önerilmez ancak bu öğreticinin kapsamı dışındadır. Daha fazla bilgi için docker oturum açma başvurusuna bakın.VS Code gezgininde, dosyada yer alandeployment.template.jssağ tıklayın ve Derleme ve Anında IoT Edge çözümü 'IoT Edge seçin.
Derleme ve itme komutu üç işlem başlatır. İlk olarak, çözümde, dağıtım şablonunda ve diğer çözüm dosyalarında yerleşik olarak bulunan tam dağıtım bildirimini tutan config adlı yeni bir klasör oluşturur. İkincisi, kapsayıcı
docker buildgörüntüsünü hedef mimariniz için uygun dockerfile'ı temel alarak oluşturmak için çalışır. Ardından, görüntüdocker pushdeposunu kapsayıcı kayıt defterinize itmek için çalışır.Bu işlem ilk kez birkaç dakika sürebilir, ancak komutları bir sonraki çalıştırma işlemi daha hızlıdır.
Modülleri cihaza dağıtma
Modül projesini Visual Studio Code cihazınıza dağıtmak için Azure IoT Tools gezginini ve IoT Edge kullanın. Senaryo için hazırlanmış bir dağıtım bildiriminiz zaten var, deployment.amd64.jsklasöründeki dosyada. Tek yapmanız gereken dağıtımı almak üzere bir cihaz seçmek.
IoT Edge cihazınızın çalışıyor olduğundan emin olun.
IoT Visual Studio Code listesini görmek için Azure IoT Hub bölümünde Cihazlar'ı genişletin.
IoT Edge cihazınızın adına sağ tıklayıp Create Deployment for Single Device (Tek bir cihaz için dağıtım oluştur) öğesini seçin.
Config klasöründekideployment.amd64.js dosyasını seçin ve ardından Select Edge Deployment Manifest (Edge Dağıtım Bildirimini Seç) seçeneğine tıklayın. deployment.template.json dosyasını kullanmayın.
Dağıtılan ve çalışan modüllerin listesini görmek için cihazınızın altında Modüller'i genişletin. Yenile düğmesine tıklayın. Yeni sınıflandırıcı ve cameraCapture modüllerinin, $edgeAgent ve $edgeHub.
Tüm modüllerin cihazınızda çalışıp çalışmadığını da kontrol edebilirsiniz. IoT Edge cihazında modüllerin durumunu görmek için aşağıdaki komutu çalıştırın.
iotedge list
Modüllerin başlaması birkaç dakika sürebilir. IoT Edge çalışma zamanının yeni dağıtım bildirimini alması, kapsayıcı çalışma zamanından modül görüntülerini çekmesi ve ardından her yeni modülü başlatması gerekir.
Sınıflandırma sonuçlarını görüntüleme
Modüllerinizin sonuçlarını görüntülemek için kullanabileceğiniz iki yöntem vardır. Bunu iletiler gönderilip alındıkça cihazın üzerinden veya iletiler IoT Hub'a ulaştıkça Visual Studio Code'dan gerçekleştirebilirsiniz.
Cihazdan cameraCapture modülü günlüklerini görüntüleyerek iletilerin gönderildiğini ve IoT Hub tarafından alındığına dair onay verildiğini görebilirsiniz.
iotedge logs cameraCapture
Bu Visual Studio Code, IoT Edge cihazınızın adına sağ tıklayın ve Yerleşik Olay Uç Noktasını İzlemeye Başla'yı seçin.
Not
Başlangıçta, cameraCapture modülünün çıkışında bağlantı hataları görüyorsunuz. Bunun nedeni, modüllerin dağıtılması ve başlaması arasındaki gecikmedir.
cameraCapture modülü başarılı olana kadar bağlantıyı otomatik olarak yeniden sınar. Bağlantı başarılı olduktan sonra, aşağıda açıklanan beklenen görüntü sınıflandırma iletilerini görebilirsiniz.
cameraCapture modülünden iletiler olarak gönderilen Özel Görüntü İşleme Hizmeti modülü sonuçları, görüntünün köknar veya kiraz ağacı olma ihtimalini içerir. Görüntü köknar ağacına ait olduğundan olasılık değeri 1.0 olmalıdır.
Kaynakları temizleme
Bir sonraki önerilen makaleye geçmeyi planlıyorsanız, oluşturduğunuz kaynaklarla yapılandırmaları tutabilir ve yeniden kullanabilirsiniz. Aynı IoT Edge cihazını test cihazı olarak kullanmaya devam edebilirsiniz.
Aksi takdirde, ücretlerden kaçınmak için bu makalede kullanılan yerel yapılandırmaları ve Azure kaynaklarını silebilirsiniz.
Azure kaynaklarını silme
Azure kaynaklarını ve kaynak gruplarını silme işlemi geri alınamaz. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. IoT Hub 'ı tutmak istediğiniz kaynakları içeren mevcut bir kaynak grubu içinde oluşturduysanız, kaynak grubunu değil yalnızca IoT Hub kaynağını silin.
Kaynakları silmek için:
Azure portalında oturum açın ve Kaynak grupları’nı seçin.
IoT Edge test kaynaklarınızı içeren kaynak grubunun adını seçin.
Kaynak grubunuzda bulunan kaynak listesini gözden geçirin. Tümünü silmek isterseniz Kaynak grubunu sil'i seçebilirsiniz. Kaynakların yalnızca bazılarını silmek istiyorsanız tek tek tıklayarak silebilirsiniz.
Sonraki adımlar
Bu öğreticide bir Özel Görüntü İşleme Hizmeti modeli eğittiniz ve bunu modül olarak bir IoT Edge cihazına dağıttınız. Ardından görüntü sınıflandırma hizmetini sorgulayıp sonuçlarını IoT Hub'a bildirebilecek bir modül oluşturdunuz.
Azure IoT Edge'in verileri iş içgörüsüne çevirmenize yardımcı olabilecek diğer yollar hakkında bilgi edinmek için bir sonraki öğreticiye geçin.