Hızlı Başlangıç: Özel Görüntü İşleme istemci kitaplığı veya REST API

.NET için Özel Görüntü İşleme istemci kitaplığı ile çalışmaya başlayın. Paketi yüklemek için bu adımları izleyin ve görüntü sınıflandırma modeli oluşturmak için örnek kodu deneyin. Bir proje oluşturacak, Etiketler ekleyecek, projeyi eğtireceksiniz ve projenin tahmin uç nokta URL 'sini programlı bir şekilde test etmek üzere kullanacaksınız. Bu örneği kendi görüntü tanıma uygulamanızı oluşturmak için bir şablon olarak kullanın.

Not

Kod yazmadan bir sınıflandırma modeli derlemek ve eğitemak istiyorsanız, bunun yerine tarayıcı tabanlı kılavuza bakın.

.NET için Özel Görüntü İşleme istemci kitaplığı 'nı kullanın:

  • Yeni bir Özel Görüntü İşleme projesi oluşturma
  • Projeye Etiketler ekleyin
  • Görüntüleri karşıya yükleme ve etiketleme
  • Projeyi eğitme
  • Geçerli yinelemeyi Yayımla
  • Tahmin uç noktasını test etme

Başvuru belgeleri | Kitaplık kaynak kodu (eğitim) (tahmin) | Paket (NuGet) (eğitim ) (tahmin) | örnekleri

Önkoşullar

  • Azure aboneliği- ücretsiz olarak bir tane oluşturun
  • Visual STUDIO IDE veya .NET Core'un geçerli sürümü.
  • Azure aboneliğiniz olduktan sonra bir Özel Görüntü İşleme kaynak oluşturun ve bir eğitim ve tahmin kaynağı oluşturmak ve anahtarlarınızı ve uç noktanızı almak için Azure Portal özel görüntü işleme bir kaynak oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
    • Uygulamanızı Özel Görüntü İşleme bağlamak için oluşturduğunuz kaynaklarda anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
    • F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.

Ayarlanıyor

Yeni bir C# uygulaması oluşturma

Visual Studio 'yu kullanarak yeni bir .NET Core uygulaması oluşturun.

İstemci kitaplığını yükler

Yeni bir proje oluşturduktan sonra, Çözüm Gezgini proje çözümüne sağ tıklayıp NuGet Paketlerini Yönet' i seçerek istemci kitaplığını yükleyebilirsiniz. Açılan paket yöneticisinde , Seç ' i seçin, ön sürümü dahil et ' i işaretleyin ve ve için arama yapın Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction . En son sürümü seçin ve ardından öğesini yükledikten sonra.

İpucu

Tüm hızlı başlangıç kodu dosyasını aynı anda görüntülemek mi istiyorsunuz? Bu hızlı başlangıçta kod örneklerini içeren GitHub'da bulabilirsiniz.

Proje dizininden program. cs dosyasını açın ve aşağıdaki using yönergeleri ekleyin:

using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction;
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training;
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;

Uygulamanın ana yönteminde, kaynağınızın anahtarı ve uç noktası için değişkenler oluşturun. Ayrıca, daha sonra kullanılacak bazı temel nesneleri de bildirebilirsiniz.

// You can obtain these values from the Keys and Endpoint page for your Custom Vision resource in the Azure Portal.
private static string trainingEndpoint = "PASTE_YOUR_CUSTOM_VISION_TRAINING_ENDPOINT_HERE";
private static string trainingKey = "PASTE_YOUR_CUSTOM_VISION_TRAINING_SUBSCRIPTION_KEY_HERE";
// You can obtain these values from the Keys and Endpoint page for your Custom Vision Prediction resource in the Azure Portal.
private static string predictionEndpoint = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_ENDPOINT_HERE";
private static string predictionKey = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_SUBSCRIPTION_KEY_HERE";
// You can obtain this value from the Properties page for your Custom Vision Prediction resource in the Azure Portal. See the "Resource ID" field. This typically has a value such as:
// /subscriptions/<your subscription ID>/resourceGroups/<your resource group>/providers/Microsoft.CognitiveServices/accounts/<your Custom Vision prediction resource name>
private static string predictionResourceId = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_RESOURCE_ID_HERE";

private static List<string> hemlockImages;
private static List<string> japaneseCherryImages;
private static Tag hemlockTag;
private static Tag japaneseCherryTag;
private static Iteration iteration;
private static string publishedModelName = "treeClassModel";
private static MemoryStream testImage;

Önemli

Azure portala gidin. Önkoşullar bölümünde oluşturduğunuz özel görüntü işleme kaynakları başarıyla dağıtılırsa, sonraki adımlar altında Kaynağa Git düğmesine tıklayın. Anahtarlarınızı ve uç noktanızı kaynakların anahtar ve uç nokta sayfalarında bulabilirsiniz. Eğitim kaynağınız için API uç noktasıyla birlikte hem eğitim hem de tahmin kaynaklarınızın anahtarlarını almanız gerekir.

Kaynak kimliği olarak listelenen Azure Portal kaynağın Özellikler sekmesinde tahmini kaynak kimliğini bulabilirsiniz.

İşiniz bittiğinde kodınızdan anahtarları kaldırmayı ve hiçbir zaman herkese açık bir şekilde göndermemeyi unutmayın. Üretim için, kimlik bilgilerinizi depolamak ve bunlara erişmek için güvenli bir yol kullanmayı düşünün. Daha fazla bilgi için bilişsel Hizmetler güvenlik makalesine bakın.

Uygulamanın Main yönteminde, bu hızlı başlangıçta kullanılan yöntemlere çağrılar ekleyin. Bunları daha sonra uygulayacaksınız.

CustomVisionTrainingClient trainingApi = AuthenticateTraining(trainingEndpoint, trainingKey);
CustomVisionPredictionClient predictionApi = AuthenticatePrediction(predictionEndpoint, predictionKey);

Project project = CreateProject(trainingApi);
AddTags(trainingApi, project);
UploadImages(trainingApi, project);
TrainProject(trainingApi, project);
PublishIteration(trainingApi, project);
TestIteration(predictionApi, project);
DeleteProject(trainingApi, project);

Nesne modeli

Ad Açıklama
CustomVisionTrainingClient Bu sınıf, modellerinizin oluşturulmasını, eğitimini ve yayımlanmasını işler.
CustomVisionPredictionClient Bu sınıf, görüntü sınıflandırması tahminleri için modellerinizin sorgulanmasını işler.
PredictionModel Bu sınıf tek bir görüntüde tek bir tahmin tanımlar. Nesne KIMLIĞI ve adı ve Güvenirlik puanı özelliklerini içerir.

Kod örnekleri

Bu kod parçacıkları, .NET için Özel Görüntü İşleme istemci kitaplığı ile aşağıdaki görevlerin nasıl yapılacağını gösterir:

İstemcinin kimliğini doğrulama

Yeni bir yöntemde, uç noktanızı ve anahtarlarınızı kullanarak eğitim ve tahmin istemcileri örneğini oluşturun.

private static CustomVisionTrainingClient AuthenticateTraining(string endpoint, string trainingKey)
{
    // Create the Api, passing in the training key
    CustomVisionTrainingClient trainingApi = new CustomVisionTrainingClient(new Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training.ApiKeyServiceClientCredentials(trainingKey))
    {
        Endpoint = endpoint
    };
    return trainingApi;
}
private static CustomVisionPredictionClient AuthenticatePrediction(string endpoint, string predictionKey)
{
    // Create a prediction endpoint, passing in the obtained prediction key
    CustomVisionPredictionClient predictionApi = new CustomVisionPredictionClient(new Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction.ApiKeyServiceClientCredentials(predictionKey))
    {
        Endpoint = endpoint
    };
    return predictionApi;
}

Yeni bir Özel Görüntü İşleme projesi oluşturma

Bu sonraki kod, bir resim sınıflandırması projesi oluşturur. Oluşturulan proje, özel görüntü işleme web sitesindegörünür. Projenizi oluştururken diğer seçenekleri belirtmek için CreateProject yöntemine bakın (sınıflandırıcı Web portalı oluşturma kılavuzunda açıklanmıştır).

private static Project CreateProject(CustomVisionTrainingClient trainingApi)
{
    // Create a new project
    Console.WriteLine("Creating new project:");
    return trainingApi.CreateProject("My New Project");
}

Projeye Etiketler ekleyin

Bu yöntem, modelin eğiteolacağı etiketleri tanımlar.

private static void AddTags(CustomVisionTrainingClient trainingApi, Project project)
{
    // Make two tags in the new project
    hemlockTag = trainingApi.CreateTag(project.Id, "Hemlock");
    japaneseCherryTag = trainingApi.CreateTag(project.Id, "Japanese Cherry");
}

Görüntüleri karşıya yükleme ve etiketleme

İlk olarak, bu proje için örnek görüntüleri indirin. Örnek görüntüler klasörünün içeriğini yerel cihazınıza kaydedin.

Not

Öğreticinizi tamamlamaya yönelik daha geniş bir görüntü kümesine mi ihtiyacınız var? Microsoft garaj projesi olan Trove, eğitim amaçlarıyla görüntü kümeleri toplamanıza ve satın almanıza olanak tanır. Görüntülerinizi topladıktan sonra bunları indirebilir ve ardından Özel Görüntü İşleme projenize her zamanki şekilde aktarabilirsiniz. Daha fazla bilgi edinmek için Trove sayfasını ziyaret edin.

Ardından bu dizindeki görüntüleri karşıya yüklemek için bir yardımcı yöntem tanımlayın. Görüntülerinizin kaydedildiği konumu işaret etmek için GetFiles bağımsız değişkenini düzenlemeniz gerekebilir.

private static void LoadImagesFromDisk()
{
    // this loads the images to be uploaded from disk into memory
    hemlockImages = Directory.GetFiles(Path.Combine("Images", "Hemlock")).ToList();
    japaneseCherryImages = Directory.GetFiles(Path.Combine("Images", "Japanese_Cherry")).ToList();
    testImage = new MemoryStream(File.ReadAllBytes(Path.Combine("Images", "Test", "test_image.jpg")));
}

Daha sonra, resimleri karşıya yüklemek için bir yöntem tanımlayın, etiketleri klasör konumlarına göre uygulayın (görüntüler zaten sıralanmıştır). Resimleri tekrarlayarak veya bir toplu işte (toplu işlem başına 64 kadar) karşıya yükleyebilir ve etiketleyebilirsiniz. Bu kod parçacığı her ikisinin de örneklerini içerir.

private static void UploadImages(CustomVisionTrainingClient trainingApi, Project project)
{
    // Add some images to the tags
    Console.WriteLine("\tUploading images");
    LoadImagesFromDisk();

    // Images can be uploaded one at a time
    foreach (var image in hemlockImages)
    {
        using (var stream = new MemoryStream(File.ReadAllBytes(image)))
        {
            trainingApi.CreateImagesFromData(project.Id, stream, new List<Guid>() { hemlockTag.Id });
        }
    }

    // Or uploaded in a single batch 
    var imageFiles = japaneseCherryImages.Select(img => new ImageFileCreateEntry(Path.GetFileName(img), File.ReadAllBytes(img))).ToList();
    trainingApi.CreateImagesFromFiles(project.Id, new ImageFileCreateBatch(imageFiles, new List<Guid>() { japaneseCherryTag.Id }));

}

Projeyi eğitme

Bu yöntem, projede ilk eğitim yinelemesini oluşturur. Eğitim tamamlanana kadar hizmeti sorgular.

private static void TrainProject(CustomVisionTrainingClient trainingApi, Project project)
{
    // Now there are images with tags start training the project
    Console.WriteLine("\tTraining");
    iteration = trainingApi.TrainProject(project.Id);

    // The returned iteration will be in progress, and can be queried periodically to see when it has completed
    while (iteration.Status == "Training")
    {
        Console.WriteLine("Waiting 10 seconds for training to complete...");
        Thread.Sleep(10000);

        // Re-query the iteration to get it's updated status
        iteration = trainingApi.GetIteration(project.Id, iteration.Id);
    }
}

İpucu

Seçili etiketlerle eğitme

İsteğe bağlı olarak, uygulanan etiketlerin yalnızca bir alt kümesini eğitebilirsiniz. Yalnızca belirli etiketlerden yeterince birini uygulamadıysanız bunu yapmak isteyebilirsiniz, ancak bu, başkalarının yeterli olması durumunda. Trainproject çağrısında Traıningparameters parametresini kullanın. Bir Traıningparameters oluşturun ve selectedtags özelliğini kullanmak istediğiniz etiketlerin kimliklerini bir liste olarak ayarlayın. Model yalnızca listedeki etiketleri tanımak için eğitecektir.

Geçerli yinelemeyi Yayımla

Bu yöntem, modelin geçerli yinelemesini sorgulama için kullanılabilir hale getirir. Tahmin istekleri göndermek için model adını bir başvuru olarak kullanabilirsiniz. İçin kendi değerini girmeniz gerekir predictionResourceId . Kaynak kimliği olarak listelenen Azure Portal kaynağın Özellikler sekmesinde tahmini kaynak kimliğini bulabilirsiniz.

private static void PublishIteration(CustomVisionTrainingClient trainingApi, Project project)
{
    trainingApi.PublishIteration(project.Id, iteration.Id, publishedModelName, predictionResourceId);
    Console.WriteLine("Done!\n");

    // Now there is a trained endpoint, it can be used to make a prediction
}

Tahmin uç noktasını test etme

Komut dosyasının bu bölümü, test görüntüsünü yükler, model uç noktasını sorgular ve tahmin verilerinin konsola çıktısını verir.

private static void TestIteration(CustomVisionPredictionClient predictionApi, Project project)
{

    // Make a prediction against the new project
    Console.WriteLine("Making a prediction:");
    var result = predictionApi.ClassifyImage(project.Id, publishedModelName, testImage);

    // Loop over each prediction and write out the results
    foreach (var c in result.Predictions)
    {
        Console.WriteLine($"\t{c.TagName}: {c.Probability:P1}");
    }
}

Uygulamayı çalıştırma

IDE penceresinin en üstündeki Hata Ayıkla düğmesine tıklayarak uygulamayı çalıştırın.

Uygulama çalışırken, bir konsol penceresi açıp aşağıdaki çıktıyı yazmalıdır:

Creating new project:
        Uploading images
        Training
Done!

Making a prediction:
        Hemlock: 95.0%
        Japanese Cherry: 0.0%

Ardından test görüntüsünün (Images/Test/ yolunda bulunur) düzgün etiketlendiğini doğrulayabilirsiniz. Uygulamadan çıkmak için herhangi bir tuşa basın. Ayrıca Özel Görüntü İşleme web sitesine geri dönebilir ve yeni oluşturulan projenizin geçerli durumunu görebilirsiniz.

Kaynakları temizleme

Kendi görüntü sınıflandırma projenizi gerçekleştirmek (veya bunun yerine nesne algılama projesini denemek) istiyorsanız, bu örnekten ağaç tanımlama projesini silmek isteyebilirsiniz. Ücretsiz bir abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel görüntü işleme web sitesinde, Projeler ' e gidin ve yeni projem altında çöp kutusu ' nu seçin.

Çöp kutusu simgesiyle yeni projem etiketli bir panelin ekran görüntüsü

Sonraki adımlar

Şimdi kodda görüntü sınıflandırma işleminin her adımını tamamladınız. Bu örnek tek bir eğitim yinelemesi yürütür, ancak genellikle modelinizi daha doğru hale getirmek için birden çok kez eğitmeniz ve test etmeniz gerekir.

Bu kılavuz, bir görüntü sınıflandırma modeli oluşturmak üzere Go için Özel Görüntü İşleme istemci kitaplığı 'nı kullanmaya başlamanıza yardımcı olacak yönergeler ve örnek kod sağlar. Bir proje oluşturacak, Etiketler ekleyecek, projeyi eğtireceksiniz ve projenin tahmin uç nokta URL 'sini programlı bir şekilde test etmek üzere kullanacaksınız. Bu örneği kendi görüntü tanıma uygulamanızı oluşturmak için bir şablon olarak kullanın.

Not

Kod yazmadan bir sınıflandırma modeli derlemek ve eğitemak istiyorsanız, bunun yerine tarayıcı tabanlı kılavuza bakın.

Git için Özel Görüntü İşleme istemci kitaplığını kullanın:

  • Yeni bir Özel Görüntü İşleme projesi oluşturma
  • Projeye Etiketler ekleyin
  • Görüntüleri karşıya yükleme ve etiketleme
  • Projeyi eğitme
  • Geçerli yinelemeyi Yayımla
  • Tahmin uç noktasını test etme

Başvuru belgeleri (eğitim) (tahmin)| Kitaplık kaynak kodu (eğitim) (tahmin)

Önkoşullar

  • Azure aboneliği- ücretsiz olarak bir tane oluşturun
  • Go 1.8 +
  • Azure aboneliğiniz olduktan sonra bir Özel Görüntü İşleme kaynak oluşturun ve bir eğitim ve tahmin kaynağı oluşturmak ve anahtarlarınızı ve uç noktanızı almak için Azure Portal özel görüntü işleme bir kaynak oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
    • Uygulamanızı Özel Görüntü İşleme bağlamak için oluşturduğunuz kaynaklarda anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
    • F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.

Ayarlanıyor

Özel Görüntü İşleme istemci kitaplığını yükler

Go için Özel Görüntü İşleme bir görüntü analizi uygulaması yazmak için Özel Görüntü İşleme hizmeti istemci kitaplığı gerekir. PowerShell'de aşağıdaki komutu çalıştırın:

go get -u github.com/Azure/azure-sdk-for-go/...

veya kullanıyorsanız dep , deponuzda çalıştırın:

dep ensure -add github.com/Azure/azure-sdk-for-go

Örnek görüntüleri alma

Bu örnek, GitHub 'daki bilişsel Hizmetler Python SDK örnekleri deposundaki görüntüleri kullanır. Bu depoyu geliştirme ortamınıza kopyalayın veya indirin. Daha sonraki bir adım için klasör konumunu unutmayın.

Özel Görüntü İşleme projesi oluşturma

Örnek adlı yeni bir dosya oluşturun. tercih ettiğiniz proje dizinine gidin ve tercih ettiğiniz kod düzenleyicisinde açın.

Yeni bir Özel Görüntü İşleme hizmeti projesi oluşturmak için betiğinize aşağıdaki kodu ekleyin. Abonelik anahtarlarınızı uygun tanımlara ekleyin. Ayrıca, Özel Görüntü İşleme Web sitesinin ayarlar sayfasından uç nokta URL 'nizi alın.

Projenizi oluştururken diğer seçenekleri belirtmek için CreateProject yöntemine bakın (sınıflandırıcı Web portalı oluşturma kılavuzunda açıklanmıştır).

import(
    "context"
    "bytes"
    "fmt"
    "io/ioutil"
    "path"
    "log"
    "time"
    "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v3.0/customvision/training"
    "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v3.0/customvision/prediction"
)

var (
    training_key string = "<your training key>"
    prediction_key string = "<your prediction key>"
    prediction_resource_id = "<your prediction resource id>"
    endpoint string = "<your endpoint URL>"
    project_name string = "Go Sample Project"
    iteration_publish_name = "classifyModel"
    sampleDataDirectory = "<path to sample images>"
)

func main() {
    fmt.Println("Creating project...")

    ctx = context.Background()

    trainer := training.New(training_key, endpoint)

    project, err := trainer.CreateProject(ctx, project_name, "sample project", nil, string(training.Multilabel))
    if (err != nil) {
        log.Fatal(err)
    }

Projede etiketler oluşturma

Projenize sınıflandırma etiketleri oluşturmak için aşağıdaki kodu örnek sonuna ekleyin . git:

// Make two tags in the new project
hemlockTag, _ := trainer.CreateTag(ctx, *project.ID, "Hemlock", "Hemlock tree tag", string(training.Regular))
cherryTag, _ := trainer.CreateTag(ctx, *project.ID, "Japanese Cherry", "Japanese cherry tree tag", string(training.Regular))

Görüntüleri karşıya yükleme ve etiketleme

Projeye örnek görüntüleri eklemek için etiket oluşturduktan sonra aşağıdaki kodu ekleyin. Bu kod, her görüntüyü ilgili etiketiyle birlikte karşıya yükler. Tek bir toplu işte en fazla 64 görüntü yükleyebilirsiniz.

Not

Bilişsel hizmetler git SDK örnekleri projesini daha önce indirdiğiniz yere göre görüntülerin yolunu değiştirmeniz gerekir.

fmt.Println("Adding images...")
japaneseCherryImages, err := ioutil.ReadDir(path.Join(sampleDataDirectory, "Japanese Cherry"))
if err != nil {
    fmt.Println("Error finding Sample images")
}

hemLockImages, err := ioutil.ReadDir(path.Join(sampleDataDirectory, "Hemlock"))
if err != nil {
    fmt.Println("Error finding Sample images")
}

for _, file := range hemLockImages {
    imageFile, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Hemlock", file.Name()))
    imageData := ioutil.NopCloser(bytes.NewReader(imageFile))

    trainer.CreateImagesFromData(ctx, *project.ID, imageData, []string{ hemlockTag.ID.String() })
}

for _, file := range japaneseCherryImages {
    imageFile, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Japanese Cherry", file.Name()))
    imageData := ioutil.NopCloser(bytes.NewReader(imageFile))
    trainer.CreateImagesFromData(ctx, *project.ID, imageData, []string{ cherryTag.ID.String() })
}

Projeyi eğitme ve yayımlama

Bu kod, tahmin modelinin ilk yinelemesini oluşturur ve ardından bu yinelemeyi tahmin uç noktasına yayınlar. Yayımlanan yinelemeye verilen ad, tahmin istekleri göndermek için kullanılabilir. Bir yineleme, yayımlanana kadar tahmin uç noktasında kullanılamaz.

fmt.Println("Training...")
iteration, _ := trainer.TrainProject(ctx, *project.ID)
for {
    if *iteration.Status != "Training" {
        break
    }
    fmt.Println("Training status: " + *iteration.Status)
    time.Sleep(1 * time.Second)
    iteration, _ = trainer.GetIteration(ctx, *project.ID, *iteration.ID)
}
fmt.Println("Training status: " + *iteration.Status)

trainer.PublishIteration(ctx, *project.ID, *iteration.ID, iteration_publish_name, prediction_resource_id))

Tahmin uç noktasını kullanma

Tahmin uç noktasına bir görüntü göndermek ve tahmini almak için dosyanın sonuna aşağıdaki kodu ekleyin:

    fmt.Println("Predicting...")
    predictor := prediction.New(prediction_key, endpoint)

    testImageData, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Test", "test_image.jpg"))
    results, _ := predictor.ClassifyImage(ctx, *project.ID, iteration_publish_name, ioutil.NopCloser(bytes.NewReader(testImageData)), "")

    for _, prediction := range *results.Predictions    {
        fmt.Printf("\t%s: %.2f%%", *prediction.TagName, *prediction.Probability * 100)
        fmt.Println("")
    }
}

Uygulamayı çalıştırma

Örnek. go çalıştırın.

go run sample.go

Uygulamanın çıkışı aşağıdaki metne benzer olmalıdır:

Creating project...
Adding images...
Training...
Training status: Training
Training status: Training
Training status: Training
Training status: Completed
Done!
        Hemlock: 93.53%
        Japanese Cherry: 0.01%

Ardından test görüntüsünün (<base_image_url>/Images/Test/ yolunda bulunur) düzgün etiketlendiğini doğrulayabilirsiniz. Ayrıca Özel Görüntü İşleme web sitesine geri dönebilir ve yeni oluşturulan projenizin geçerli durumunu görebilirsiniz.

Kaynakları temizleme

Kendi görüntü sınıflandırma projenizi gerçekleştirmek (veya bunun yerine nesne algılama projesini denemek) istiyorsanız, bu örnekten ağaç tanımlama projesini silmek isteyebilirsiniz. Ücretsiz bir abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel görüntü işleme web sitesinde, Projeler ' e gidin ve yeni projem altında çöp kutusu ' nu seçin.

Çöp kutusu simgesiyle yeni projem etiketli bir panelin ekran görüntüsü

Sonraki adımlar

Artık, nesne algılama işleminin her adımının kodda nasıl yapılabileceğini gördünüz. Bu örnek tek bir eğitim yinelemesi yürütür, ancak genellikle modelinizi daha doğru hale getirmek için birden çok kez eğitmeniz ve test etmeniz gerekir.

Bir görüntü sınıflandırma modeli oluşturmak için Java için Özel Görüntü İşleme istemci kitaplığı 'nı kullanmaya başlayın. Paketi yüklemek için bu adımları izleyin ve temel görevler için örnek kodu deneyin. Bu örneği kendi görüntü tanıma uygulamanızı oluşturmak için bir şablon olarak kullanın.

Not

Kod yazmadan bir sınıflandırma modeli derlemek ve eğitemak istiyorsanız, bunun yerine tarayıcı tabanlı kılavuza bakın.

Java için Özel Görüntü İşleme istemci kitaplığını kullanarak şunları yapın:

  • Yeni bir Özel Görüntü İşleme projesi oluşturma
  • Projeye Etiketler ekleyin
  • Görüntüleri karşıya yükleme ve etiketleme
  • Projeyi eğitme
  • Geçerli yinelemeyi Yayımla
  • Tahmin uç noktasını test etme

Başvuru belgeleri | Kitaplık kaynak kodu (eğitim) (tahmin)| Yapıt (Maven) (eğitim) ( tahmin) | örnekleri

Önkoşullar

  • Azure aboneliği- ücretsiz olarak bir tane oluşturun
  • Java Development Kit 'in (JDK) geçerli sürümü
  • Gradle yapı aracıveya başka bir bağımlılık Yöneticisi.
  • Azure aboneliğiniz olduktan sonra bir Özel Görüntü İşleme kaynak oluşturun ve bir eğitim ve tahmin kaynağı oluşturmak ve anahtarlarınızı ve uç noktanızı almak için Azure Portal özel görüntü işleme bir kaynak oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
    • Uygulamanızı Özel Görüntü İşleme bağlamak için oluşturduğunuz kaynaklarda anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
    • F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.

Ayarlanıyor

Yeni bir Gradle projesi oluşturma

Konsol penceresinde (cmd, PowerShell veya Bash gibi), uygulamanız için yeni bir dizin oluşturun ve bu uygulamaya gidin.

mkdir myapp && cd myapp

gradle initÇalışma dizininizden komutunu çalıştırın. Bu komut, uygulamanızı oluşturmak ve yapılandırmak için çalışma zamanında kullanılan Build. Gradle. kts de dahil olmak üzere Gradle için temel derleme dosyaları oluşturur.

gradle init --type basic

Bir DSL seçmeniz Istendiğinde, Kotlin' ı seçin.

İstemci kitaplığını yükler

Build. Gradle. kts ' i bulun ve tercıh ettiğiniz IDE veya metin düzenleyicinizle açın. Ardından aşağıdaki derleme yapılandırması içine kopyalayın. Bu yapılandırma projeyi, giriş noktası CustomVisionQuickstart sınıfı olan bir Java uygulaması olarak tanımlar. Özel Görüntü İşleme kitaplıklarını içeri aktarır.

plugins {
    java
    application
}
application { 
    mainClassName = "CustomVisionQuickstart"
}
repositories {
    mavenCentral()
}
dependencies {
    compile(group = "com.azure", name = "azure-cognitiveservices-customvision-training", version = "1.1.0-preview.2")
    compile(group = "com.azure", name = "azure-cognitiveservices-customvision-prediction", version = "1.1.0-preview.2")
}

Java dosyası oluşturma

Çalışma dizininizden bir proje kaynak klasörü oluşturmak için aşağıdaki komutu çalıştırın:

mkdir -p src/main/java

Yeni klasöre gidin ve CustomVisionQuickstart. Java adlı bir dosya oluşturun. Bunu tercih ettiğiniz düzenleyicide veya IDE 'de açın ve aşağıdaki deyimleri ekleyin import :

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;

import com.google.common.io.ByteStreams;

import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Classifier;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Domain;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.DomainType;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.ImageFileCreateBatch;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.ImageFileCreateEntry;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Iteration;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Project;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Region;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.TrainProjectOptionalParameter;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.CustomVisionTrainingClient;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.Trainings;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.CustomVisionTrainingManager;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.models.ImagePrediction;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.models.Prediction;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.CustomVisionPredictionClient;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.CustomVisionPredictionManager;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Tag;

İpucu

Tüm hızlı başlangıç kodu dosyasını aynı anda görüntülemek mi istiyorsunuz? Bu hızlı başlangıçta kod örneklerini içeren GitHub'da bulabilirsiniz.

Uygulamanın CustomVisionQuickstart sınıfında, kaynağınızın anahtarları ve uç noktası için değişkenler oluşturun.

final static String trainingApiKey = "PASTE_YOUR_CUSTOM_VISION_TRAINING_SUBSCRIPTION_KEY_HERE";
final static String trainingEndpoint = "PASTE_YOUR_CUSTOM_VISION_TRAINING_ENDPOINT_HERE";
final static String predictionApiKey = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_SUBSCRIPTION_KEY_HERE";
final static String predictionEndpoint = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_ENDPOINT_HERE";
final static String predictionResourceId = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_RESOURCE_ID_HERE";

Önemli

Azure portala gidin. Önkoşullar bölümünde oluşturduğunuz özel görüntü işleme kaynakları başarıyla dağıtılırsa, sonraki adımlar altında Kaynağa Git düğmesine tıklayın. Anahtarlarınızı ve uç noktanızı kaynakların anahtar ve uç nokta sayfalarında bulabilirsiniz. Eğitim kaynağınız için API uç noktasıyla birlikte hem eğitim hem de tahmin kaynaklarınızın anahtarlarını almanız gerekir.

Kaynak kimliği olarak listelenen Azure Portal kaynağın Özellikler sekmesinde tahmini kaynak kimliğini bulabilirsiniz.

İşiniz bittiğinde kodu koddan kaldırmayı unutmayın ve hiçbir zaman herkese açık bir şekilde nakletmeyin. Üretim için, kimlik bilgilerinizi depolamak ve bunlara erişmek için güvenli bir yol kullanmayı düşünün. Daha fazla bilgi için bilişsel Hizmetler güvenlik makalesine bakın.

Uygulamanın Main yönteminde, bu hızlı başlangıçta kullanılan yöntemlere çağrılar ekleyin. Bunları daha sonra tanımlayacaksınız.

Project project = createProject(trainClient);
addTags(trainClient, project);
uploadImages(trainClient, project);
trainProject(trainClient, project);
publishIteration(trainClient, project);
testProject(predictor, project);

Nesne modeli

Aşağıdaki sınıflar ve arabirimler Özel Görüntü İşleme Java istemci kitaplığı 'nın bazı önemli özelliklerini işler.

Ad Açıklama
CustomVisionTrainingClient Bu sınıf, modellerinizin oluşturulmasını, eğitimini ve yayımlanmasını işler.
CustomVisionPredictionClient Bu sınıf, görüntü sınıflandırması tahminleri için modellerinizin sorgulanmasını işler.
Imagetahmin Bu sınıf tek bir görüntüde tek bir tahmin tanımlar. Nesne KIMLIĞI ve adı ve Güvenirlik puanı özelliklerini içerir.

Kod örnekleri

Bu kod parçacıkları, Java için Özel Görüntü İşleme istemci kitaplığı ile aşağıdaki görevlerin nasıl yapılacağını gösterir:

İstemcinin kimliğini doğrulama

Ana yönteinizde, uç noktanızı ve anahtarlarınızı kullanarak eğitim ve tahmin istemcileri örneğini oluşturun.

// Authenticate
CustomVisionTrainingClient trainClient = CustomVisionTrainingManager
        .authenticate(trainingEndpoint, trainingApiKey)
        .withEndpoint(trainingEndpoint);
CustomVisionPredictionClient predictor = CustomVisionPredictionManager
        .authenticate(predictionEndpoint, predictionApiKey)
        .withEndpoint(predictionEndpoint);

Özel Görüntü İşleme projesi oluşturma

T # # yeni bir Özel Görüntü İşleme projesi oluşturma

Bu sonraki Yöntem bir görüntü sınıflandırma projesi oluşturur. Oluşturulan proje, daha önce ziyaret ettiğiniz Özel Görüntü İşleme web sitesinde gösterilir. Projenizi oluştururken diğer seçenekleri belirtmek için bkz. CreateProject yöntemi aşırı yüklemeleri ( bir algılayıcı derleme Web portalı kılavuzunda açıklanmıştır).

public static Project createProject(CustomVisionTrainingClient trainClient) {
    System.out.println("ImageClassification Sample");
    Trainings trainer = trainClient.trainings();

    System.out.println("Creating project...");
    Project project = trainer.createProject().withName("Sample Java Project").execute();

    return project;
}

Projenize etiketler ekleme

Bu yöntem, modelin eğiteolacağı etiketleri tanımlar.

public static void addTags(CustomVisionTrainingClient trainClient, Project project) {

    Trainings trainer = trainClient.trainings();

    // create hemlock tag
    Tag hemlockTag = trainer.createTag().withProjectId(project.id()).withName("Hemlock").execute();
    // create cherry tag
    Tag cherryTag = trainer.createTag().withProjectId(project.id()).withName("Japanese Cherry").execute();
}

Görüntüleri karşıya yükleme ve etiketleme

İlk olarak, bu proje için örnek görüntüleri indirin. Örnek görüntüler klasörünün içeriğini yerel cihazınıza kaydedin.

Not

Öğreticinizi tamamlamaya yönelik daha geniş bir görüntü kümesine mi ihtiyacınız var? Microsoft garaj projesi olan Trove, eğitim amaçlarıyla görüntü kümeleri toplamanıza ve satın almanıza olanak tanır. Görüntülerinizi topladıktan sonra bunları indirebilir ve ardından Özel Görüntü İşleme projenize her zamanki şekilde aktarabilirsiniz. Daha fazla bilgi edinmek için Trove sayfasını ziyaret edin.

public static void uploadImages(CustomVisionTrainingClient trainClient, Project project) {
    Trainings trainer = trainClient.trainings();
    System.out.println("Adding images...");
    for (int i = 1; i <= 10; i++) {
        String fileName = "hemlock_" + i + ".jpg";
        byte[] contents = GetImage("/Hemlock", fileName);
        AddImageToProject(trainer, project, fileName, contents, hemlockTag.id(), null);
    }

    for (int i = 1; i <= 10; i++) {
        String fileName = "japanese_cherry_" + i + ".jpg";
        byte[] contents = GetImage("/Japanese_Cherry", fileName);
        AddImageToProject(trainer, project, fileName, contents, cherryTag.id(), null);
    }
}

Önceki kod parçacığı, görüntüleri kaynak akışları olarak alan ve hizmete yükleyen iki yardımcı işlevden yararlanmasına neden olur (tek bir toplu işte en fazla 64 görüntü yükleyebilirsiniz).

private static void AddImageToProject(Trainings trainer, Project project, String fileName, byte[] contents,
        UUID tag, double[] regionValues) {
    System.out.println("Adding image: " + fileName);
    ImageFileCreateEntry file = new ImageFileCreateEntry().withName(fileName).withContents(contents);

    ImageFileCreateBatch batch = new ImageFileCreateBatch().withImages(Collections.singletonList(file));

    // If Optional region is specified, tack it on and place the tag there,
    // otherwise
    // add it to the batch.
    if (regionValues != null) {
        Region region = new Region().withTagId(tag).withLeft(regionValues[0]).withTop(regionValues[1])
                .withWidth(regionValues[2]).withHeight(regionValues[3]);
        file = file.withRegions(Collections.singletonList(region));
    } else {
        batch = batch.withTagIds(Collections.singletonList(tag));
    }

    trainer.createImagesFromFiles(project.id(), batch);
}

private static byte[] GetImage(String folder, String fileName) {
    try {
        return ByteStreams.toByteArray(CustomVisionSamples.class.getResourceAsStream(folder + "/" + fileName));
    } catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
    return null;
}

Projeyi eğitme

Bu yöntem, projede ilk eğitim yinelemesini oluşturur. Eğitim tamamlanana kadar hizmeti sorgular.

public static void trainProject(CustomVisionTrainingClient trainClient, Project project) {
    System.out.println("Training...");
    Trainings trainer = trainClient.trainings();

    Iteration iteration = trainer.trainProject(project.id(), new TrainProjectOptionalParameter());

    while (iteration.status().equals("Training")) {
        System.out.println("Training Status: " + iteration.status());
        Thread.sleep(1000);
        iteration = trainer.getIteration(project.id(), iteration.id());
    }
    System.out.println("Training Status: " + iteration.status());
}

Geçerli yinelemeyi Yayımla

Bu yöntem, modelin geçerli yinelemesini sorgulama için kullanılabilir hale getirir. Tahmin istekleri göndermek için model adını bir başvuru olarak kullanabilirsiniz. İçin kendi değerini girmeniz gerekir predictionResourceId . Kaynak kimliği olarak listelenen Azure Portal kaynağın Özellikler sekmesinde tahmini kaynak kimliğini bulabilirsiniz.

public static String publishIteration(CustomVisionTrainingClient trainClient, Project project) {
    Trainings trainer = trainClient.trainings();
    // The iteration is now trained. Publish it to the prediction endpoint.
    String publishedModelName = "myModel";
    trainer.publishIteration(project.id(), iteration.id(), publishedModelName, predictionResourceId);
}

Tahmin uç noktasını test etme

Bu yöntem, test görüntüsünü yükler, model uç noktasını sorgular ve tahmin verilerinin konsola çıktısını verir.

// load test image
public static void testProject(CustomVisionPredictionClient predictor, Project project) {

    byte[] testImage = GetImage("/Test", "test_image.jpg");

    // predict
    ImagePrediction results = predictor.predictions().classifyImage().withProjectId(project.id())
            .withPublishedName(publishedModelName).withImageData(testImage).execute();

    for (Prediction prediction : results.predictions()) {
        System.out.println(String.format("\t%s: %.2f%%", prediction.tagName(), prediction.probability() * 100.0f));
    }
}

Uygulamayı çalıştırma

Uygulamayı ile oluşturabilirsiniz:

gradle build

Uygulamayı gradle run komutla çalıştırın:

gradle run

Kaynakları temizleme

Bilişsel hizmetler aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, onunla ilişkili diğer tüm kaynakları da siler.

Kendi görüntü sınıflandırma projenizi gerçekleştirmek (veya bunun yerine nesne algılama projesini denemek) istiyorsanız, bu örnekten ağaç tanımlama projesini silmek isteyebilirsiniz. Ücretsiz bir abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel görüntü işleme web sitesinde, Projeler ' e gidin ve yeni projem altında çöp kutusu ' nu seçin.

Çöp kutusu simgesiyle yeni projem etiketli bir panelin ekran görüntüsü

Sonraki adımlar

Artık görüntü sınıflandırma işleminin her adımından kodda nasıl yapılabileceğini gördünüz. Bu örnek tek bir eğitim yinelemesi yürütür, ancak genellikle modelinizi daha doğru hale getirmek için birden çok kez eğitmeniz ve test etmeniz gerekir.

Bu kılavuz, görüntü sınıflandırma modeli oluşturmak için Özel Görüntü İşleme istemci kitaplığını kullanmaya başlamanıza yardımcı Node.js yönergeler ve örnek kod sağlar. Program aracılığıyla test etmek için bir proje oluşturun, etiketler ekleyin, projeyi eğitin ve projenin tahmin uç noktası URL'sini kullanın. Kendi görüntü tanıma uygulamanızı oluşturmak için bu örneği şablon olarak kullanın.

Not

Kod yazmadan bir sınıflandırma modeli oluşturmak ve eğitmek için bunun yerine tarayıcı tabanlı kılavuza bakın.

.NET Özel Görüntü İşleme için aşağıdaki istemci kitaplığını kullanın:

  • Yeni bir Özel Görüntü İşleme projesi oluşturma
  • Projeye Etiketler ekleyin
  • Görüntüleri karşıya yükleme ve etiketleme
  • Projeyi eğitme
  • Geçerli yinelemeyi Yayımla
  • Tahmin uç noktasını test etmek

Başvuru belgeleri (eğitim) (tahmin) | Kitaplık kaynak kodu (eğitim) (tahmin) | Paket (npm) (eğitim) (tahmin) | Örnekleri

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun
  • Node.js'nin geçerli sürümü
  • Azure aboneliğinize sahip olduktan sonra Bir Özel Görüntü İşleme kaynağı oluşturun ve eğitim Özel Görüntü İşleme tahmin kaynağı oluşturmak ve anahtarlarınızı ve uç noktanızı almak için Azure portal kaynağı oluşturun. Dağıtmayı bekleyin ve Kaynağa git düğmesine tıklayın.
    • Uygulamanıza bağlanacak kaynaklardan anahtara ve uç noktasına ihtiyacınız Özel Görüntü İşleme. Hızlı başlangıçta anahtarınızı ve uç noktanızı aşağıdaki koda yapıştırabilirsiniz.
    • Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek üzere ücretsiz fiyatlandırma katmanını ( F0 ) kullanabilirsiniz.

Ayarlama

Yeni bir Node.js uygulaması oluşturma

Konsol penceresinde (cmd, PowerShell veya Bash gibi) uygulama için yeni bir dizin oluşturun ve bu dizine gidin.

mkdir myapp && cd myapp

komutunu npm init çalıştırarak bir dosya ile düğüm uygulaması package.json oluşturun.

npm init

İstemci kitaplığını yükleme

Node.js için Özel Görüntü İşleme ile bir görüntü analizi uygulaması yazmak için NPM paketlerinin Özel Görüntü İşleme gerekir. Bunları yüklemek için PowerShell'de aşağıdaki komutu çalıştırın:

npm install @azure/cognitiveservices-customvision-training
npm install @azure/cognitiveservices-customvision-prediction

Uygulamanın package.json dosyası bağımlılıklarla güncelleştirilir.

adlı bir dosya oluşturun index.js ve aşağıdaki kitaplıkları içeri aktarın:

const util = require('util');
const fs = require('fs');
const TrainingApi = require("@azure/cognitiveservices-customvision-training");
const PredictionApi = require("@azure/cognitiveservices-customvision-prediction");
const msRest = require("@azure/ms-rest-js");

İpucu

Hızlı başlangıç kod dosyasının tamamını aynı anda görüntülemek ister misiniz? Bu hızlı başlangıçtaki kod GitHubiçeren üzerinde bulabilirsiniz.

Kaynağınız için Azure uç noktası ve anahtarları için değişkenler oluşturun.

const trainingKey = "PASTE_YOUR_CUSTOM_VISION_TRAINING_SUBSCRIPTION_KEY_HERE";
const trainingEndpoint = "PASTE_YOUR_CUSTOM_VISION_TRAINING_ENDPOINT_HERE";
const predictionKey = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_SUBSCRIPTION_KEY_HERE";
const predictionResourceId = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_RESOURCE_ID_HERE";
const predictionEndpoint = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_ENDPOINT_HERE";

Önemli

Azure portala gidin. Önkoşullar bölümünde oluşturduğunuz Özel Görüntü İşleme Eğitim kaynağı başarıyla dağıtıldısa, Sonraki Adımlar'ın altındaki Kaynağa Git düğmesine tıklayın. Anahtarınızı ve uç noktanızı kaynağın anahtarı ve uç nokta sayfasında bulabilirsiniz.

Tahmin kaynağı kimliğini, kaynak kimliği olarak listelenen kaynak Azure portal kaynağın Özellikler sekmesinde bulabilirsiniz.

Bitiren kodundan anahtarı kaldırmayı unutmayın ve hiçbir zaman herkese açık şekilde yayınlayamayabilirsiniz. Üretim için kimlik bilgilerinizi depolamak ve erişmek için güvenli bir yol kullanmayı göz önünde bulundurarak. Daha fazla bilgi için Bilişsel Hizmetler güvenliği makalesine bakın.

Ayrıca proje adınız için alanlar ve zaman uyumsuz çağrılar için zaman aşımı parametresi ekleyin.

const publishIterationName = "classifyModel";
const setTimeoutPromise = util.promisify(setTimeout);

Nesne modeli

Ad Açıklama
TrainingAPIClient Bu sınıf, modellerinizi oluşturma, eğitma ve yayımlamayı ele almaktadır.
PredictionAPIClient Bu sınıf, modellerinizi görüntü sınıflandırma tahminleri için sorgulamayı ele almaktadır.
Tahmin Bu arabirim, tek bir görüntüde tek bir tahmin tanımlar. Nesne kimliği ve adı için özellikleri ve bir güven puanı içerir.

Kod örnekleri

Bu kod parçacıkları JavaScript için istemci kitaplığını kullanarak Özel Görüntü İşleme görevleri nasıl gerçekleştirebilirsiniz?

İstemcinin kimliğini doğrulama

Uç noktanız ve anahtarınız ile istemci nesnelerinin örneğini oluşturma. Anahtarınız ile bir ApiKeyCredentials nesnesi oluşturun ve bunu uç noktanız ile birlikte kullanarak bir TrainingAPIClient ve PredictionAPIClient nesnesi oluşturun.

const credentials = new msRest.ApiKeyCredentials({ inHeader: { "Training-key": trainingKey } });
const trainer = new TrainingApi.TrainingAPIClient(credentials, trainingEndpoint);
const predictor_credentials = new msRest.ApiKeyCredentials({ inHeader: { "Prediction-key": predictionKey } });
const predictor = new PredictionApi.PredictionAPIClient(predictor_credentials, predictionEndpoint);

Yeni bir Özel Görüntü İşleme projesi oluşturma

Tüm işlev çağrılarınızı içeren yeni bir Özel Görüntü İşleme başlatma. Yeni bir hizmet projesi oluşturmak için aşağıdaki Özel Görüntü İşleme ekleyin.

(async () => {
    console.log("Creating project...");
    const sampleProject = await trainer.createProject("Sample Project");

Projeye Etiketler ekleyin

Projenize sınıflandırma etiketleri oluşturmak için işlevinize aşağıdaki kodu ekleyin:

const hemlockTag = await trainer.createTag(sampleProject.id, "Hemlock");
const cherryTag = await trainer.createTag(sampleProject.id, "Japanese Cherry");

Görüntüleri karşıya yükleme ve etiketleme

İlk olarak, bu proje için örnek görüntüleri indirin. Örnek Görüntüler klasörünün içeriğini yerel cihazınıza kaydedin.

Not

Eğitiminizi tamamlamak için daha geniş bir görüntü kümesine mi ihtiyacınız var? Bir Microsoft Garage olan Trove, eğitim amacıyla görüntü kümelerini toplayıp satın alasınız. Görüntülerinizi top kullandıktan sonra, bunları indirebilir ve ardından normal şekilde Özel Görüntü İşleme projenize aktarabilirsiniz. Daha fazla bilgi edinmek için Trove sayfasını ziyaret edin.

Projeye örnek görüntüleri eklemek için etiket oluşturduktan sonra aşağıdaki kodu ekleyin. Bu kod, her görüntüyü ilgili etiketiyle birlikte karşıya yükler.

const sampleDataRoot = "Images";

console.log("Adding images...");
let fileUploadPromises = [];

const hemlockDir = `${sampleDataRoot}/Hemlock`;
const hemlockFiles = fs.readdirSync(hemlockDir);
hemlockFiles.forEach(file => {
    fileUploadPromises.push(trainer.createImagesFromData(sampleProject.id, fs.readFileSync(`${hemlockDir}/${file}`), { tagIds: [hemlockTag.id] }));
});

const cherryDir = `${sampleDataRoot}/Japanese_Cherry`;
const japaneseCherryFiles = fs.readdirSync(cherryDir);
japaneseCherryFiles.forEach(file => {
    fileUploadPromises.push(trainer.createImagesFromData(sampleProject.id, fs.readFileSync(`${cherryDir}/${file}`), { tagIds: [cherryTag.id] }));
});

await Promise.all(fileUploadPromises);

Önemli

Bilişsel Hizmetler Python SDK'sı Örneklerini indirdiğiniz yere göre görüntülerin yolunu ( sampleDataRoot ) değiştirebilirsiniz.

Projeyi eğitme

Bu kod tahmin modelinin ilk yinelemesini oluşturur.

console.log("Training...");
let trainingIteration = await trainer.trainProject(sampleProject.id);

// Wait for training to complete
console.log("Training started...");
while (trainingIteration.status == "Training") {
    console.log("Training status: " + trainingIteration.status);
    await setTimeoutPromise(1000, null);
    trainingIteration = await trainer.getIteration(sampleProject.id, trainingIteration.id)
}
console.log("Training status: " + trainingIteration.status);

Geçerli yinelemeyi Yayımla

Bu kod, eğitilen yinelemeyi tahmin uç noktasına yayımlar. Yayımlanan yinelemeye verilen ad, tahmin istekleri göndermek için kullanılabilir. Yayımlanana kadar tahmin uç noktası içinde bir yineleme kullanılamaz.

// Publish the iteration to the end point
await trainer.publishIteration(sampleProject.id, trainingIteration.id, publishIterationName, predictionResourceId);

Tahmin uç noktasını test etmek

Tahmin uç noktasına bir görüntü göndermek ve tahmini almak için işlevinize aşağıdaki kodu ekleyin.

const testFile = fs.readFileSync(`${sampleDataRoot}/Test/test_image.jpg`);

const results = await predictor.classifyImage(sampleProject.id, publishIterationName, testFile);

// Show results
console.log("Results:");
results.predictions.forEach(predictedResult => {
    console.log(`\t ${predictedResult.tagName}: ${(predictedResult.probability * 100.0).toFixed(2)}%`);
});

Ardından, Özel Görüntü İşleme işlevinizi kapatın ve çağırarak.

})()

Uygulamayı çalıştırma

Hızlı başlangıç dosyanız node üzerinde komutunu kullanarak uygulamayı çalıştırın.

node index.js

Uygulamanın çıkışı aşağıdaki metne benzer olmalıdır:

Creating project...
Adding images...
Training...
Training started...
Training status: Training
Training status: Training
Training status: Training
Training status: Completed
Results:
         Hemlock: 94.97%
         Japanese Cherry: 0.01%

Ardından test görüntüsünün <sampleDataRoot> (/Test/ içinde bulunur) uygun şekilde etiketlenmiş olduğunu doğruabilirsiniz. Ayrıca Özel Görüntü İşleme web sitesine geri dönebilir ve yeni oluşturulan projenizin geçerli durumunu görebilirsiniz.

Kendi görüntü sınıflandırma projenizi gerçekleştirmek (veya bunun yerine nesne algılama projesini denemek) istiyorsanız, bu örnekten ağaç tanımlama projesini silmek isteyebilirsiniz. Ücretsiz bir abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel görüntü işleme web sitesinde, Projeler ' e gidin ve yeni projem altında çöp kutusu ' nu seçin.

Çöp kutusu simgesiyle yeni projem etiketli bir panelin ekran görüntüsü

Sonraki adımlar

Artık nesne algılama işleminin her adımını kodda nasıl tamamlay olduğunu gördünüz. Bu örnek tek bir eğitim yinelemesi yürütür, ancak daha doğru olması için modelinizi birden çok kez eğitip test etmek gerekir.

Python için Özel Görüntü İşleme istemci kitaplığı ile çalışmaya başlayın. Paketi yüklemek için bu adımları izleyin ve görüntü sınıflandırma modeli oluşturmak için örnek kodu deneyin. Bir proje oluşturacak, Etiketler ekleyecek, projeyi eğtireceksiniz ve projenin tahmin uç nokta URL 'sini programlı bir şekilde test etmek üzere kullanacaksınız. Bu örneği kendi görüntü tanıma uygulamanızı oluşturmak için bir şablon olarak kullanın.

Not

Kod yazmadan bir sınıflandırma modeli derlemek ve eğitemak istiyorsanız, bunun yerine tarayıcı tabanlı kılavuza bakın.

Python için Özel Görüntü İşleme istemci kitaplığını şu şekilde kullanın:

  • Yeni bir Özel Görüntü İşleme projesi oluşturma
  • Projeye Etiketler ekleyin
  • Görüntüleri karşıya yükleme ve etiketleme
  • Projeyi eğitme
  • Geçerli yinelemeyi Yayımla
  • Tahmin uç noktasını test etme

Başvuru belgeleri | Kitaplık kaynak kodu | Paket (Pypı) | Örnekler

Önkoşullar

  • Azure aboneliği- ücretsiz olarak bir tane oluşturun
  • Python 3.x
    • Python yüklemeniz PIP'yi içermelidir. Komut satırında komutunu çalıştırarak PIP 'nin yüklenip yüklenmediğini kontrol edebilirsiniz pip --version . Python 'un en son sürümünü yükleyerek PIP 'yi alın.
  • Azure aboneliğiniz olduktan sonra bir Özel Görüntü İşleme kaynak oluşturun ve bir eğitim ve tahmin kaynağı oluşturmak ve anahtarlarınızı ve uç noktanızı almak için Azure Portal özel görüntü işleme bir kaynak oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
    • Uygulamanızı Özel Görüntü İşleme bağlamak için oluşturduğunuz kaynaklarda anahtar ve uç nokta gerekir. Anahtarlarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
    • F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.

Ayarlanıyor

İstemci kitaplığını yükler

Python için Özel Görüntü İşleme bir görüntü analizi uygulaması yazmak için Özel Görüntü İşleme istemci kitaplığı gerekir. Python yükledikten sonra PowerShell veya konsol penceresinde aşağıdaki komutu çalıştırın:

pip install azure-cognitiveservices-vision-customvision

Yeni bir Python uygulaması oluşturma

Yeni bir Python dosyası oluşturun ve aşağıdaki kitaplıkları içeri aktarın.

from azure.cognitiveservices.vision.customvision.training import CustomVisionTrainingClient
from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
from azure.cognitiveservices.vision.customvision.training.models import ImageFileCreateBatch, ImageFileCreateEntry, Region
from msrest.authentication import ApiKeyCredentials
import os, time, uuid

İpucu

Tüm hızlı başlangıç kodu dosyasını aynı anda görüntülemek mi istiyorsunuz? Bu hızlı başlangıçta kod örneklerini içeren GitHub'da bulabilirsiniz.

Kaynağınızın Azure uç noktası ve abonelik anahtarları için değişkenler oluşturun.

# Replace with valid values
ENDPOINT = "PASTE_YOUR_CUSTOM_VISION_TRAINING_ENDPOINT_HERE"
training_key = "PASTE_YOUR_CUSTOM_VISION_TRAINING_SUBSCRIPTION_KEY_HERE"
prediction_key = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_SUBSCRIPTION_KEY_HERE"
prediction_resource_id = "PASTE_YOUR_CUSTOM_VISION_PREDICTION_RESOURCE_ID_HERE"

Önemli

Azure portala gidin. Önkoşullar bölümünde oluşturduğunuz özel görüntü işleme kaynakları başarıyla dağıtılırsa, sonraki adımlar altında Kaynağa Git düğmesine tıklayın. Anahtarlarınızı ve uç noktanızı kaynakların anahtar ve uç nokta sayfalarında bulabilirsiniz. Eğitim kaynağınız için API uç noktasıyla birlikte hem eğitim hem de tahmin kaynaklarınızın anahtarlarını almanız gerekir.

Kaynak kimliği olarak listelenen Azure Portal kaynağın Özellikler sekmesinde tahmini kaynak kimliğini bulabilirsiniz.

İşiniz bittiğinde kodınızdan anahtarları kaldırmayı ve hiçbir zaman herkese açık bir şekilde göndermemeyi unutmayın. Üretim için, kimlik bilgilerinizi depolamak ve bunlara erişmek için güvenli bir yol kullanmayı düşünün. Daha fazla bilgi için bilişsel Hizmetler güvenlik makalesine bakın.

Nesne modeli

Ad Açıklama
CustomVisionTrainingClient Bu sınıf, modellerinizin oluşturulmasını, eğitimini ve yayımlanmasını işler.
CustomVisionPredictionClient Bu sınıf, görüntü sınıflandırması tahminleri için modellerinizin sorgulanmasını işler.
Imagetahmin Bu sınıf tek bir görüntüde tek bir nesne tahminini tanımlar. Nesne KIMLIĞI ve adı, nesnenin sınırlayıcı kutusu konumu ve Güvenirlik puanı özelliklerini içerir.

Kod örnekleri

Bu kod parçacıkları, Python için Özel Görüntü İşleme istemci kitaplığı ile aşağıdakilerin nasıl yapılacağını gösterir:

İstemcinin kimliğini doğrulama

Uç noktanız ve anahtarlarınız ile bir eğitim ve tahmin istemcisi oluşturun. Anahtarlarınız ile ApiKeyServiceClientCredentials nesneleri oluşturun ve bir CustomVisionTrainingClient ve CustomVisionPredictionClient nesnesi oluşturmak için bunları uç noktanızla birlikte kullanın.

credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(ENDPOINT, prediction_credentials)

Yeni bir Özel Görüntü İşleme projesi oluşturma

Yeni bir Özel Görüntü İşleme hizmeti projesi oluşturmak için betiğinize aşağıdaki kodu ekleyin.

Projenizi oluştururken diğer seçenekleri belirtmek için create_project yöntemine bakın (sınıflandırıcı Web portalı oluşturma kılavuzunda açıklanmıştır).

publish_iteration_name = "classifyModel"

credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)

# Create a new project
print ("Creating project...")
project_name = uuid.uuid4()
project = trainer.create_project(project_name)

Projeye Etiketler ekleyin

Projenize sınıflandırma etiketleri eklemek için aşağıdaki kodu ekleyin:

# Make two tags in the new project
hemlock_tag = trainer.create_tag(project.id, "Hemlock")
cherry_tag = trainer.create_tag(project.id, "Japanese Cherry")

Görüntüleri karşıya yükleme ve etiketleme

İlk olarak, bu proje için örnek görüntüleri indirin. Örnek görüntüler klasörünün içeriğini yerel cihazınıza kaydedin.

Not

Öğreticinizi tamamlamaya yönelik daha geniş bir görüntü kümesine mi ihtiyacınız var? Microsoft garaj projesi olan Trove, eğitim amaçlarıyla görüntü kümeleri toplamanıza ve satın almanıza olanak tanır. Görüntülerinizi topladıktan sonra bunları indirebilir ve ardından Özel Görüntü İşleme projenize her zamanki şekilde aktarabilirsiniz. Daha fazla bilgi edinmek için Trove sayfasını ziyaret edin.

Projeye örnek görüntüleri eklemek için etiket oluşturduktan sonra aşağıdaki kodu ekleyin. Bu kod, her görüntüyü ilgili etiketiyle birlikte karşıya yükler. Tek bir toplu işte en fazla 64 görüntü yükleyebilirsiniz.

base_image_location = os.path.join (os.path.dirname(__file__), "Images")

print("Adding images...")

image_list = []

for image_num in range(1, 11):
    file_name = "hemlock_{}.jpg".format(image_num)
    with open(os.path.join (base_image_location, "Hemlock", file_name), "rb") as image_contents:
        image_list.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), tag_ids=[hemlock_tag.id]))

for image_num in range(1, 11):
    file_name = "japanese_cherry_{}.jpg".format(image_num)
    with open(os.path.join (base_image_location, "Japanese_Cherry", file_name), "rb") as image_contents:
        image_list.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), tag_ids=[cherry_tag.id]))

upload_result = trainer.create_images_from_files(project.id, ImageFileCreateBatch(images=image_list))
if not upload_result.is_batch_successful:
    print("Image batch upload failed.")
    for image in upload_result.images:
        print("Image status: ", image.status)
    exit(-1)

Not

Bilişsel hizmetler Python SDK 'Sı örnek deposunu indirdiğiniz yere bağlı olarak görüntülerin yolunu değiştirmeniz gerekir.

Projeyi eğitme

Bu kod tahmin modelinin ilk yinelemesini oluşturur.

print ("Training...")
iteration = trainer.train_project(project.id)
while (iteration.status != "Completed"):
    iteration = trainer.get_iteration(project.id, iteration.id)
    print ("Training status: " + iteration.status)
    print ("Waiting 10 seconds...")
    time.sleep(10)

İpucu

Seçili etiketlerle eğitme

İsteğe bağlı olarak, uygulanan etiketlerin yalnızca bir alt kümesini eğitebilirsiniz. Yalnızca belirli etiketlerden yeterince birini uygulamadıysanız bunu yapmak isteyebilirsiniz, ancak bu, başkalarının yeterli olması durumunda. Train_project çağrısında, selected_tags isteğe bağlı parametre ÖĞESINI kullanmak istediğiniz etiketlerin kimlik dizeleri listesine ayarlayın. Model yalnızca listedeki etiketleri tanımak için eğitecektir.

Geçerli yinelemeyi Yayımla

Bir yineleme, yayımlanana kadar tahmin uç noktasında kullanılamaz. Aşağıdaki kod, modelin geçerli yinelemesini sorgulama için kullanılabilir hale getirir.

# The iteration is now trained. Publish it to the project endpoint
trainer.publish_iteration(project.id, iteration.id, publish_iteration_name, prediction_resource_id)
print ("Done!")

Tahmin uç noktasını test etme

Tahmin uç noktasına bir görüntü göndermek ve tahmini almak için dosyanın sonuna aşağıdaki kodu ekleyin:

# Now there is a trained endpoint that can be used to make a prediction
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(ENDPOINT, prediction_credentials)

with open(os.path.join (base_image_location, "Test/test_image.jpg"), "rb") as image_contents:
    results = predictor.classify_image(
        project.id, publish_iteration_name, image_contents.read())

    # Display the results.
    for prediction in results.predictions:
        print("\t" + prediction.tag_name +
              ": {0:.2f}%".format(prediction.probability * 100))

Uygulamayı çalıştırma

CustomVisionQuickstart.py çalıştırın.

python CustomVisionQuickstart.py

Uygulamanın çıkışı aşağıdaki metne benzer olmalıdır:

Creating project...
Adding images...
Training...
Training status: Training
Training status: Completed
Done!
        Hemlock: 93.53%
        Japanese Cherry: 0.01%

Daha sonra ( <base_image_location>/images/Test/) test görüntüsünün uygun şekilde etiketlendiğini doğrulayabilirsiniz. Ayrıca Özel Görüntü İşleme web sitesine geri dönebilir ve yeni oluşturulan projenizin geçerli durumunu görebilirsiniz.

Kaynakları temizleme

Kendi görüntü sınıflandırma projenizi gerçekleştirmek (veya bunun yerine nesne algılama projesini denemek) istiyorsanız, bu örnekten ağaç tanımlama projesini silmek isteyebilirsiniz. Ücretsiz bir abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel görüntü işleme web sitesinde, Projeler ' e gidin ve yeni projem altında çöp kutusu ' nu seçin.

Çöp kutusu simgesiyle yeni projem etiketli bir panelin ekran görüntüsü

Sonraki adımlar

Artık görüntü sınıflandırma işleminin her adımından kodda nasıl yapılabileceğini gördünüz. Bu örnek tek bir eğitim yinelemesi yürütür, ancak genellikle modelinizi daha doğru hale getirmek için birden çok kez eğitmeniz ve test etmeniz gerekir.

Özel Görüntü İşleme REST API kullanmaya başlayın. API 'YI çağırmak ve bir görüntü sınıflandırma modeli oluşturmak için bu adımları izleyin. Bir proje oluşturacak, Etiketler ekleyecek, projeyi eğtireceksiniz ve projenin tahmin uç nokta URL 'sini programlı bir şekilde test etmek üzere kullanacaksınız. Bu örneği kendi görüntü tanıma uygulamanızı oluşturmak için bir şablon olarak kullanın.

Not

Özel Görüntü İşleme, bir istemci kitaplığı SDK 'Sı veya tarayıcı tabanlı kılavuzaracılığıyla kolayca kullanılır.

.NET için Özel Görüntü İşleme istemci kitaplığı 'nı kullanın:

  • Yeni bir Özel Görüntü İşleme projesi oluşturma
  • Projeye Etiketler ekleyin
  • Görüntüleri karşıya yükleme ve etiketleme
  • Projeyi eğitme
  • Geçerli yinelemeyi Yayımla
  • Tahmin uç noktasını test etme

Önkoşullar

  • Azure aboneliği- ücretsiz olarak bir tane oluşturun
  • Azure aboneliğiniz olduktan sonra bir Özel Görüntü İşleme kaynak oluşturun ve bir eğitim ve tahmin kaynağı oluşturmak ve anahtarlarınızı ve uç noktanızı almak için Azure Portal özel görüntü işleme bir kaynak oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
    • Uygulamanızı Özel Görüntü İşleme bağlamak için oluşturduğunuz kaynaklarda anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
    • F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.
  • PowerShell sürüm 6.0 +veya benzer bir komut satırı uygulaması.

Yeni bir Özel Görüntü İşleme projesi oluşturma

Görüntü sınıflandırması projesi oluşturmak için aşağıdaki gibi bir komut kullanacaksınız. Oluşturulan proje, özel görüntü işleme web sitesindegörünür.

curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects?name={name}"

Komutu bir metin düzenleyicisine kopyalayın ve aşağıdaki değişiklikleri yapın:

  • {subscription key}Geçerli yüz abonelik anahtarınızla değiştirin.
  • {endpoint}Abonelik anahtarınıza karşılık gelen uç noktayla değiştirin.

    Not

    1 Temmuz 2019 ' den sonra oluşturulan yeni kaynaklar özel alt etki alanı adları kullanır. Daha fazla bilgi ve bölgesel uç noktaların tamamen listesi için bkz. bilişsel Hizmetler Için özel alt etki alanı adları.

  • {name}Projenizin adıyla değiştirin.
  • Project 'in kullanacağı model türünü yapılandırmak için isteğe bağlı olarak diğer URL parametrelerini ayarlayın. Seçenekler için Creatproject API 'sine bakın.

Aşağıdakine benzer bir JSON yanıtı alacaksınız. "id"Projenizin değerini geçici bir konuma kaydedin.

{
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "string",
  "description": "string",
  "settings": {
    "domainId": "00000000-0000-0000-0000-000000000000",
    "classificationType": "Multiclass",
    "targetExportPlatforms": [
      "CoreML"
    ],
    "useNegativeSet": true,
    "detectionParameters": "string",
    "imageProcessingSettings": {
      "augmentationMethods": {}
    }
  },
  "created": "string",
  "lastModified": "string",
  "thumbnailUri": "string",
  "drModeEnabled": true,
  "status": "Succeeded"
}

Projeye Etiketler ekleyin

Modelin eğiteolacağı etiketleri tanımlamak için aşağıdaki komutu kullanın.

curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/tags?name={name}"
  • Bir kez daha, kendi anahtarını ve uç nokta URL 'nizi ekleyin.
  • {projectId}Kendi proje Kimliğinizle değiştirin.
  • {name}Kullanmak istediğiniz etiketin adıyla değiştirin.

Projenizde kullanmak istediğiniz tüm etiketler için bu işlemi tekrarlayın. Belirtilen örnek görüntüleri kullanıyorsanız, ve etiketlerini ekleyin "Hemlock" "Japanese Cherry" .

Aşağıdakine benzer bir JSON yanıtı alırsınız. "id"Her etiketin değerini geçici bir konuma kaydedin.

{
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "string",
  "description": "string",
  "type": "Regular",
  "imageCount": 0
}

Görüntüleri karşıya yükleme ve etiketleme

Sonra, bu proje için örnek görüntüleri indirin. Örnek görüntüler klasörünün içeriğini yerel cihazınıza kaydedin.

Not

Öğreticinizi tamamlamaya yönelik daha geniş bir görüntü kümesine mi ihtiyacınız var? Microsoft garaj projesi olan Trove, eğitim amaçlarıyla görüntü kümeleri toplamanıza ve satın almanıza olanak tanır. Görüntülerinizi topladıktan sonra bunları indirebilir ve ardından Özel Görüntü İşleme projenize her zamanki şekilde aktarabilirsiniz. Daha fazla bilgi edinmek için Trove sayfasını ziyaret edin.

Görüntüleri karşıya yüklemek ve etiketleri uygulamak için aşağıdaki komutu kullanın; "Hemlock" görüntüleri için bir kez ve "Japon Çraz" görüntüleri için ayrı olarak. Daha fazla seçenek için veri API 'Sinden görüntü oluşturma bölümüne bakın.

curl -v -X POST -H "Content-Type: multipart/form-data" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/images?tagIds={tagArray}"
--data-ascii "{binary data}"
  • Bir kez daha, kendi anahtarını ve uç nokta URL 'nizi ekleyin.
  • {projectId}Kendi proje Kimliğinizle değiştirin.
  • {tagArray}Bir ETIKETININ kimliğiyle değiştirin.
  • Ardından, isteğin gövdesini etiketlemek istediğiniz görüntülerin ikili verileriyle doldurun.

Projeyi eğitme

Bu yöntem, karşıya yüklediğiniz etiketli görüntülerde modeli TRAZ ve geçerli proje yinelemesi için bir KIMLIK döndürüyor.

curl -v -X POST -H "Content-Type: application/json" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/train"
  • Bir kez daha, kendi anahtarını ve uç nokta URL 'nizi ekleyin.
  • {projectId}Kendi proje Kimliğinizle değiştirin.
  • {tagArray}Bir ETIKETININ kimliğiyle değiştirin.
  • Ardından, isteğin gövdesini etiketlemek istediğiniz görüntülerin ikili verileriyle doldurun.
  • İsteğe bağlı olarak diğer URL parametrelerini kullanın. Seçenekler için Proje API 'Sini eğitme bölümüne bakın.

İpucu

Seçili etiketlerle eğitme

İsteğe bağlı olarak, uygulanan etiketlerin yalnızca bir alt kümesini eğitebilirsiniz. Yalnızca belirli etiketlerden yeterince birini uygulamadıysanız bunu yapmak isteyebilirsiniz, ancak bu, başkalarının yeterli olması durumunda. İsteğe bağlı JSON içeriğini isteğiniz gövdesine ekleyin. Diziyi, "selectedTags" kullanmak istediğiniz etiketlerin kimlikleriyle doldurun.

{
  "selectedTags": [
    "00000000-0000-0000-0000-000000000000"
  ]
}

JSON yanıtı, eğitim projeniz hakkında yineleme KIMLIĞI () de dahil olmak üzere bilgiler içerir "id" . Sonraki adım için bu değeri kaydedin.

{
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "string",
  "status": "string",
  "created": "string",
  "lastModified": "string",
  "trainedAt": "string",
  "projectId": "00000000-0000-0000-0000-000000000000",
  "exportable": true,
  "exportableTo": [
    "CoreML"
  ],
  "domainId": "00000000-0000-0000-0000-000000000000",
  "classificationType": "Multiclass",
  "trainingType": "Regular",
  "reservedBudgetInHours": 0,
  "trainingTimeInMinutes": 0,
  "publishName": "string",
  "originalPublishResourceId": "string"
}

Geçerli yinelemeyi Yayımla

Bu yöntem, modelin geçerli yinelemesini sorgulama için kullanılabilir hale getirir. Döndürülen model adını, tahmin istekleri göndermek için bir başvuru olarak kullanırsınız.

curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
  • Bir kez daha, kendi anahtarını ve uç nokta URL 'nizi ekleyin.
  • {projectId}Kendi proje Kimliğinizle değiştirin.
  • {iterationId}Önceki adımda döndürülen kimlikle değiştirin.
  • {publishedName}Tahmin modelinize atamak istediğiniz adla değiştirin.
  • {predictionId}Kendi tahmin kaynak Kimliğinizle değiştirin. Kaynak kimliği olarak listelenen Azure Portal kaynağın Özellikler sekmesinde tahmini kaynak kimliğini bulabilirsiniz.
  • İsteğe bağlı olarak diğer URL parametrelerini kullanın. Bkz. Yayımlama yineleme API 'si.

Tahmin uç noktasını test etme

Son olarak, bu komutu kullanarak eğitilen modelinizi Etiketler ile sınıflandırarak yeni bir görüntü yükleyerek test edin. Görüntüyü daha önce indirdiğiniz örnek dosyaların "test" klasöründe kullanabilirsiniz.

curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
  • Bir kez daha, kendi anahtarını ve uç nokta URL 'nizi ekleyin.
  • {projectId}Kendi proje Kimliğinizle değiştirin.
  • {publishedName}Önceki adımda kullandığınız adla değiştirin.
  • Yerel görüntünüzün ikili verilerini istek gövdesine ekleyin.
  • İsteğe bağlı olarak diğer URL parametrelerini kullanın. Sınıflandırma görüntüsü API 'sine bakın.

Döndürülen JSON yanıtı, her etiket için en az bir modelin resme uyguladığı her bir etikete sahip olur.

{
  "id": "00000000-0000-0000-0000-000000000000",
  "project": "00000000-0000-0000-0000-000000000000",
  "iteration": "00000000-0000-0000-0000-000000000000",
  "created": "string",
  "predictions": [
    {
      "probability": 0.0,
      "tagId": "00000000-0000-0000-0000-000000000000",
      "tagName": "string",
      "boundingBox": {
        "left": 0.0,
        "top": 0.0,
        "width": 0.0,
        "height": 0.0
      },
      "tagType": "Regular"
    }
  ]
}

Kendi görüntü sınıflandırma projenizi gerçekleştirmek (veya bunun yerine nesne algılama projesini denemek) istiyorsanız, bu örnekten ağaç tanımlama projesini silmek isteyebilirsiniz. Ücretsiz bir abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel görüntü işleme web sitesinde, Projeler ' e gidin ve yeni projem altında çöp kutusu ' nu seçin.

Çöp kutusu simgesiyle yeni projem etiketli bir panelin ekran görüntüsü

Sonraki adımlar

Artık REST API kullanarak görüntü sınıflandırma işleminin her adımını tamamladınız. Bu örnek tek bir eğitim yinelemesi yürütür, ancak genellikle modelinizi daha doğru hale getirmek için birden çok kez eğitmeniz ve test etmeniz gerekir.