Hızlı Başlangıç: Özel Görüntü İşleme istemci kitaplığı veya REST API ile görüntü sınıflandırma projesi oluşturma

.NET için Özel Görüntü İşleme istemci kitaplığını kullanmaya başlayın. Paketi yüklemek için bu adımları izleyin ve görüntü sınıflandırma modeli oluşturmaya yönelik örnek kodu deneyin. Bir proje oluşturacak, etiketler ekleyeceksiniz, projeyi eğitecek ve projenin tahmin uç noktası URL'sini kullanarak program aracılığıyla test edebilirsiniz. Bu örneği kendi görüntü tanıma uygulamanızı oluşturmak için şablon olarak kullanın.

Not

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

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

Önkoşullar

  • Azure aboneliği - Ücretsiz olarak oluşturun
  • Visual Studio IDE veya .NET Core'un geçerli sürümü.
  • Azure aboneliğinizi aldıktan sonra, eğitim ve tahmin kaynağı oluşturmak için Azure portalında bir Özel Görüntü İşleme kaynağı oluşturun.
    • Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını (F0) kullanabilirsiniz.

Ortam değişkenlerini oluşturma

Bu örnekte, kimlik bilgilerinizi uygulamayı çalıştıran yerel makinedeki ortam değişkenlerine yazacaksınız.

Azure portalına gidin. Önkoşullar bölümünde oluşturduğunuz Özel Görüntü İşleme kaynaklar başarıyla dağıtıldıysa, Sonraki Adımlar'ın altındaki Kaynağa Git düğmesini seçin. Anahtarlarınızı ve uç noktalarınızı kaynakların anahtar ve uç nokta sayfalarında, kaynak yönetimi altında bulabilirsiniz. API uç noktalarıyla birlikte hem eğitim hem de tahmin kaynaklarınızın anahtarlarını almanız gerekir.

Tahmin kaynağı kimliğini Azure portalındaki Tahmin kaynağının Özellikler sekmesinde Kaynak Kimliği olarak listelenmiş olarak bulabilirsiniz.

İpucu

Bu değerleri almak için de kullanırsınız https://www.customvision.ai/ . Oturum açıldıktan sonra sağ üstteki Ayarlar simgesini seçin. Ayar sayfalarında tüm anahtarları, kaynak kimliğini ve uç noktaları görüntüleyebilirsiniz.

Ortam değişkenlerini ayarlamak için bir konsol penceresi açın ve işletim sisteminizle geliştirme ortamınıza yönelik yönergeleri izleyin.

  • Ortam değişkenini VISION_TRAINING KEY ayarlamak için öğesini eğitim kaynağınızın anahtarlarından biriyle değiştirin your-training-key .
  • Ortam değişkenini VISION_TRAINING_ENDPOINT ayarlamak için öğesini eğitim kaynağınızın uç noktasıyla değiştirin your-training-endpoint .
  • Ortam değişkenini VISION_PREDICTION_KEY ayarlamak için değerini tahmin kaynağınızın anahtarlarından biriyle değiştirin your-prediction-key .
  • Ortam değişkenini VISION_PREDICTION_ENDPOINT ayarlamak için değerini tahmin kaynağınızın uç noktasıyla değiştirin your-prediction-endpoint .
  • Ortam değişkenini VISION_PREDICTION_RESOURCE_ID ayarlamak için değerini tahmin kaynağınızın kaynak kimliğiyle değiştirin your-resource-id .

Önemli

API anahtarı kullanıyorsanız, bunu Azure Key Vault gibi başka bir yerde güvenli bir şekilde depolayın. API anahtarını doğrudan kodunuzla eklemeyin ve hiçbir zaman herkese açık olarak göndermeyin.

Yapay zeka hizmetleri güvenliği hakkında daha fazla bilgi için bkz . Azure AI hizmetlerine yönelik isteklerin kimliğini doğrulama.

setx VISION_TRAINING_KEY your-training-key
setx VISION_TRAINING_ENDPOINT your-training-endpoint
setx VISION_PREDICTION_KEY your-prediction-key
setx VISION_PREDICTION_ENDPOINT your-prediction-endpoint
setx VISION_PREDICTION_RESOURCE_ID your-resource-id

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenlerini okuyacak tüm çalışan programları yeniden başlatmanız gerekebilir.

Ayarlama

Yeni bir C# uygulaması oluşturma

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

İstemci kitaplığını yükleme

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ükleyin. Açılan paket yöneticisinde Gözat'ı seçin, Ön sürümü dahil et'i işaretleyin ve ve Microsoft.Azure.CognitiveServices.Vision.CustomVision.Predictionaraması yapınMicrosoft.Azure.CognitiveServices.Vision.CustomVision.Training. En son sürümü ve ardından Yükle'yi seçin.

İpucu

Tüm hızlı başlangıç kodunu aynı anda görüntülemek mi istiyorsunuz? Bunu, bu hızlı başlangıçtaki 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 Main yönteminde, kaynak anahtarlarınızı ve uç noktalarını ortam değişkenlerinden alan değişkenler oluşturun. Ayrıca, daha sonra kullanılacak bazı temel nesneleri de bildireceksiniz.

// Retrieve the environment variables for your credentials:
private static string trainingEndpoint = Environment.GetEnvironmentVariable("VISION_TRAINING_ENDPOINT");

private static string trainingKey = Environment.GetEnvironmentVariable("VISION_TRAINING_KEY");
private static string predictionEndpoint = Environment.GetEnvironmentVariable("VISION_PREDICTION_ENDPOINT");
private static string predictionKey = Environment.GetEnvironmentVariable("VISION_PREDICTION_KEY");

private static string predictionResourceId = Environment.GetEnvironmentVariable("VISION_PREDICTION_RESOURCE_ID");

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;

Uygulamanın Main yönteminde, bu hızlı başlangıçta kullanılan yöntemler için ç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);

İstemcinin kimliğini doğrulama

Yeni bir yöntemde, uç noktanızı ve anahtarlarınızı kullanarak eğitim ve tahmin istemcilerinin ö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 biti bir görüntü sınıflandırma projesi oluşturur. Oluşturulan proje Özel Görüntü İşleme web sitesinde gösterilir. Projenizi oluştururken diğer seçenekleri belirtmek için CreateProject yöntemine bakın (Sınıflandırıcı oluşturma web portalı 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 etiketleri ekleme

Bu yöntem, modeli eğitecek 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.

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 konuma 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")));
}

Ardından, resimleri karşıya yüklemek için bir yöntem tanımlayın ve etiketleri klasör konumlarına göre uygulayın (görüntüler zaten sıralanmış). Görüntüleri yinelemeli olarak veya toplu iş olarak (toplu iş başına en fazla 64) 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ğit

İsteğe bağlı olarak, uygulanan etiketlerinizin yalnızca bir alt kümesi üzerinde eğitebilirsiniz. Henüz belirli etiketlerden yeterince uygulamadıysanız ancak daha fazla etiketiniz varsa bunu yapmak isteyebilirsiniz. TrainProject çağrısında trainingParameters parametresini kullanın. TrainingParameters oluşturun ve SelectedTags özelliğini kullanmak istediğiniz etiketlerin kimlik listesi olarak ayarlayın. Model yalnızca bu listedeki etiketleri tanıyacak şekilde eğitilecektir.

Geçerli yinelemeyi yayımlama

Bu yöntem, modelin geçerli yinelemesini sorgulama için kullanılabilir hale getirir. Tahmin istekleri göndermek için model adını başvuru olarak kullanabilirsiniz. için predictionResourceIdkendi değerinizi girmeniz gerekir. Tahmin kaynak kimliğini, Kaynağın Özellikler sekmesinde, Azure portalında Kaynak Kimliği olarak listelenmiş olarak 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 edin

Betiğin bu bölümü test görüntüsünü yükler, model uç noktasını sorgular ve tahmin verilerinin çıkışını konsola gönderir.

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 üst kısmındaki Hata Ayıkla düğmesine tıklayarak uygulamayı çalıştırın.

Uygulama çalışırken bir konsol penceresi açmalı ve aşağıdaki çıkışı 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 abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel Görüntü İşleme web sitesindeProjeler’e gidin ve Yeni Projem’in altından çöp kutusunu secin.

Çöp kutusu simgesiyle Yeni Projem etiketli panelin ekran görüntüsü.

Sonraki adımlar

Artık kodda görüntü sınıflandırma işleminin her adımını gerçekleştirdiniz. 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ğitip test etmeniz gerekir.

Bu kılavuz, görüntü sınıflandırma modeli oluşturmak için 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. Program aracılığıyla test etmek için bir proje oluşturacak, etiketler ekleyecek, projeyi eğitecek ve projenin tahmin uç noktası URL'sini kullanacaksınız. Bu örneği kendi görüntü tanıma uygulamanızı oluşturmak için şablon olarak kullanın.

Not

Kod yazmadan bir sınıflandırma modeli oluşturmak ve eğitmek 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 etiketleri ekleme
  • Görüntüleri karşıya yükleme ve etiketleme
  • Projeyi eğitme
  • Geçerli yinelemeyi yayımlama
  • Tahmin uç noktasını test edin

Başvuru belgeleri (eğitim) (tahmin)

Önkoşullar

Ortam değişkenlerini oluşturma

Bu örnekte, kimlik bilgilerinizi uygulamayı çalıştıran yerel makinedeki ortam değişkenlerine yazacaksınız.

Azure portalına gidin. Önkoşullar bölümünde oluşturduğunuz Özel Görüntü İşleme kaynaklar başarıyla dağıtıldıysa, Sonraki Adımlar'ın altındaki Kaynağa Git düğmesini seçin. Anahtarlarınızı ve uç noktalarınızı kaynakların anahtar ve uç nokta sayfalarında, kaynak yönetimi altında bulabilirsiniz. API uç noktalarıyla birlikte hem eğitim hem de tahmin kaynaklarınızın anahtarlarını almanız gerekir.

Tahmin kaynağı kimliğini Azure portalındaki Tahmin kaynağının Özellikler sekmesinde Kaynak Kimliği olarak listelenmiş olarak bulabilirsiniz.

İpucu

Bu değerleri almak için de kullanırsınız https://www.customvision.ai/ . Oturum açıldıktan sonra sağ üstteki Ayarlar simgesini seçin. Ayar sayfalarında tüm anahtarları, kaynak kimliğini ve uç noktaları görüntüleyebilirsiniz.

Ortam değişkenlerini ayarlamak için bir konsol penceresi açın ve işletim sisteminizle geliştirme ortamınıza yönelik yönergeleri izleyin.

  • Ortam değişkenini VISION_TRAINING KEY ayarlamak için öğesini eğitim kaynağınızın anahtarlarından biriyle değiştirin your-training-key .
  • Ortam değişkenini VISION_TRAINING_ENDPOINT ayarlamak için öğesini eğitim kaynağınızın uç noktasıyla değiştirin your-training-endpoint .
  • Ortam değişkenini VISION_PREDICTION_KEY ayarlamak için değerini tahmin kaynağınızın anahtarlarından biriyle değiştirin your-prediction-key .
  • Ortam değişkenini VISION_PREDICTION_ENDPOINT ayarlamak için değerini tahmin kaynağınızın uç noktasıyla değiştirin your-prediction-endpoint .
  • Ortam değişkenini VISION_PREDICTION_RESOURCE_ID ayarlamak için değerini tahmin kaynağınızın kaynak kimliğiyle değiştirin your-resource-id .

Önemli

API anahtarı kullanıyorsanız, bunu Azure Key Vault gibi başka bir yerde güvenli bir şekilde depolayın. API anahtarını doğrudan kodunuzla eklemeyin ve hiçbir zaman herkese açık olarak göndermeyin.

Yapay zeka hizmetleri güvenliği hakkında daha fazla bilgi için bkz . Azure AI hizmetlerine yönelik isteklerin kimliğini doğrulama.

setx VISION_TRAINING_KEY your-training-key
setx VISION_TRAINING_ENDPOINT your-training-endpoint
setx VISION_PREDICTION_KEY your-prediction-key
setx VISION_PREDICTION_ENDPOINT your-prediction-endpoint
setx VISION_PREDICTION_RESOURCE_ID your-resource-id

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenlerini okuyacak tüm çalışan programları yeniden başlatmanız gerekebilir.

Ayarlama

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

Go için Özel Görüntü İşleme içeren 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, depo çalıştırmanızda:

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

Örnek görüntüleri alma

Bu örnekte GitHub'daki Azure AI hizmetleri Python SDK Örnekleri deposundaki görüntüler kullanılmaktadır. Bu depoyu geliştirme ortamınıza kopyalayın veya indirin. Sonraki bir adım için klasör konumunu anımsayın.

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

Tercih ettiğiniz proje dizininde sample.go adlı yeni bir dosya oluşturun ve bunu 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.

Projenizi oluştururken diğer seçenekleri belirtmek için CreateProject yöntemine bakın (Sınıflandırıcı oluşturma web portalı 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 = os.Getenv("VISION_TRAINING_KEY")
    prediction_key string = os.Getenv("VISION_PREDICTION_KEY")
    prediction_resource_id = os.Getenv("VISION_PREDICTION_RESOURCE_ID")
    endpoint string = os.Getenv("VISION_ENDPOINT")    

    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 sample.go dosyasının sonuna aşağıdaki kodu ekleyin:

// 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şlemde en fazla 64 görüntü yükleyebilirsiniz.

Not

Daha önce Azure AI hizmetleri Go SDK Örnekleri projesini 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ğitin ve yayımlayın

Bu kod, tahmin modelinin ilk yinelemesini oluşturur ve ardından bu yinelemeyi tahmin uç noktasında yayımlar. 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

sample.go dosyasını ç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%

Daha sonra test görüntüsünün ( <base_image_url>/Görüntüler/Test/) 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 abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel Görüntü İşleme web sitesindeProjeler’e gidin ve Yeni Projem’in altından çöp kutusunu secin.

Çöp kutusu simgesiyle Yeni Projem etiketli panelin ekran görüntüsü.

Sonraki adımlar

Artık kodda nesne algılama işleminin her adımının nasıl gerçekleştirilebileceğ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ğitip test etmeniz gerekir.

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 ve temel görevler için örnek kodu denemek için bu adımları izleyin. Bu örneği kendi görüntü tanıma uygulamanızı oluşturmak için şablon olarak kullanın.

Not

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

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

  • Yeni bir Özel Görüntü İşleme projesi oluşturma
  • Projeye etiketleri ekleme
  • Görüntüleri karşıya yükleme ve etiketleme
  • Projeyi eğitme
  • Geçerli yinelemeyi yayımlama
  • Tahmin uç noktasını test edin

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

Önkoşullar

Ortam değişkenlerini oluşturma

Bu örnekte, kimlik bilgilerinizi uygulamayı çalıştıran yerel makinedeki ortam değişkenlerine yazacaksınız.

Azure portalına gidin. Önkoşullar bölümünde oluşturduğunuz Özel Görüntü İşleme kaynaklar başarıyla dağıtıldıysa, Sonraki Adımlar'ın altındaki Kaynağa Git düğmesini seçin. Anahtarlarınızı ve uç noktalarınızı kaynakların anahtar ve uç nokta sayfalarında, kaynak yönetimi altında bulabilirsiniz. API uç noktalarıyla birlikte hem eğitim hem de tahmin kaynaklarınızın anahtarlarını almanız gerekir.

Tahmin kaynağı kimliğini Azure portalındaki Tahmin kaynağının Özellikler sekmesinde Kaynak Kimliği olarak listelenmiş olarak bulabilirsiniz.

İpucu

Bu değerleri almak için de kullanırsınız https://www.customvision.ai/ . Oturum açıldıktan sonra sağ üstteki Ayarlar simgesini seçin. Ayar sayfalarında tüm anahtarları, kaynak kimliğini ve uç noktaları görüntüleyebilirsiniz.

Ortam değişkenlerini ayarlamak için bir konsol penceresi açın ve işletim sisteminizle geliştirme ortamınıza yönelik yönergeleri izleyin.

  • Ortam değişkenini VISION_TRAINING KEY ayarlamak için öğesini eğitim kaynağınızın anahtarlarından biriyle değiştirin your-training-key .
  • Ortam değişkenini VISION_TRAINING_ENDPOINT ayarlamak için öğesini eğitim kaynağınızın uç noktasıyla değiştirin your-training-endpoint .
  • Ortam değişkenini VISION_PREDICTION_KEY ayarlamak için değerini tahmin kaynağınızın anahtarlarından biriyle değiştirin your-prediction-key .
  • Ortam değişkenini VISION_PREDICTION_ENDPOINT ayarlamak için değerini tahmin kaynağınızın uç noktasıyla değiştirin your-prediction-endpoint .
  • Ortam değişkenini VISION_PREDICTION_RESOURCE_ID ayarlamak için değerini tahmin kaynağınızın kaynak kimliğiyle değiştirin your-resource-id .

Önemli

API anahtarı kullanıyorsanız, bunu Azure Key Vault gibi başka bir yerde güvenli bir şekilde depolayın. API anahtarını doğrudan kodunuzla eklemeyin ve hiçbir zaman herkese açık olarak göndermeyin.

Yapay zeka hizmetleri güvenliği hakkında daha fazla bilgi için bkz . Azure AI hizmetlerine yönelik isteklerin kimliğini doğrulama.

setx VISION_TRAINING_KEY your-training-key
setx VISION_TRAINING_ENDPOINT your-training-endpoint
setx VISION_PREDICTION_KEY your-prediction-key
setx VISION_PREDICTION_ENDPOINT your-prediction-endpoint
setx VISION_PREDICTION_RESOURCE_ID your-resource-id

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenlerini okuyacak tüm çalışan programları yeniden başlatmanız gerekebilir.

Ayarlama

Yeni Gradle projesi oluşturma

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

mkdir myapp && cd myapp

gradle init Komutunu çalışma dizininizden ç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

DSL seçmeniz istendiğinde Kotlin'i seçin.

İstemci kitaplığını yükleme

build.gradle.kts dosyasını bulun ve tercih ettiğiniz IDE veya metin düzenleyici ile açın. Ardından aşağıdaki derleme yapılandırmasını 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 aşağıdaki komutu çalıştırarak bir proje kaynak klasörü oluşturun:

mkdir -p src/main/java

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

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ıç kodunu aynı anda görüntülemek mi istiyorsunuz? Bunu, bu hızlı başlangıçtaki kod örneklerini içeren GitHub’da bulabilirsiniz.

Uygulamanın CustomVisionQuickstart sınıfında, kaynak anahtarlarınızı ve uç noktanızı ortam değişkenlerinden alan değişkenler oluşturun.

// retrieve environment variables
final static String trainingApiKey = System.getenv("VISION_TRAINING_KEY");
final static String trainingEndpoint = System.getenv("VISION_TRAINING_ENDPOINT");
final static String predictionApiKey = System.getenv("VISION_PREDICTION_KEY");
final static String predictionEndpoint = System.getenv("VISION_PREDICTION_ENDPOINT");
final static String predictionResourceId = System.getenv("VISION_PREDICTION_RESOURCE_ID");

Önemli

Azure portalına gidin. Önkoşullar bölümünde oluşturduğunuz Özel Görüntü İşleme kaynaklar başarıyla dağıtıldıysa, Sonraki Adımlar'ın altındaki Kaynağa Git düğmesini seçin. Anahtarlarınızı ve uç noktanızı kaynakların anahtar ve uç nokta sayfalarında bulabilirsiniz. Hem eğitim hem de tahmin kaynaklarınızın anahtarlarını ve eğitim kaynağınızın API uç noktasını almanız gerekir.

Tahmin kaynak kimliğini, Kaynağın Özellikler sekmesinde, Azure portalında Kaynak Kimliği olarak listelenmiş olarak bulabilirsiniz.

Önemli

İşiniz bittiğinde anahtarları kodunuzdan kaldırmayı unutmayın ve bunları asla herkese açık olarak göndermeyin. Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.

Uygulamanın ana yönteminde, bu hızlı başlangıçta kullanılan yöntemler için ç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.

Veri Akışı Adı Açıklama
CustomVisionTrainingClient Bu sınıf modellerinizin oluşturulmasını, eğitılmasını ve yayımlanmasını işler.
CustomVisionPredictionClient Bu sınıf, görüntü sınıflandırma tahminleri için modellerinizi sorgulamayı işler.
ImagePrediction Bu sınıf, tek bir görüntüde tek bir tahmin tanımlar. Nesne kimliği ve adı için özellikler ve güvenilirlik puanı içerir.

Kod örnekleri

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

İstemcinin kimliğini doğrulama

Ana yönteminizde, uç noktanızı ve anahtarlarınızı kullanarak eğitim ve tahmin istemcilerinin ö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 Ö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 CreateProject yöntemi aşırı yüklemelerine bakın (Algılayıcı oluşturma 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, modeli eğitecek 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.

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şlevi kullanır (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ımlama

Bu yöntem, modelin geçerli yinelemesini sorgulama için kullanılabilir hale getirir. Tahmin istekleri göndermek için model adını başvuru olarak kullanabilirsiniz. için predictionResourceIdkendi değerinizi girmeniz gerekir. Tahmin kaynak kimliğini, Kaynağın Özellikler sekmesinde, Azure portalında Kaynak Kimliği olarak listelenmiş olarak 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 edin

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

// 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ı şu şekilde oluşturabilirsiniz:

gradle build

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

gradle run

Kaynakları temizleme

Azure AI hizmetleri aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla 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 abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel Görüntü İşleme web sitesindeProjeler’e gidin ve Yeni Projem’in altından çöp kutusunu secin.

Çöp kutusu simgesiyle Yeni Projem etiketli panelin ekran görüntüsü.

Sonraki adımlar

Artık görüntü sınıflandırma işleminin her adımının kodda nasıl gerçekleştirilebileceğ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ğitip test etmeniz gerekir.

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

Not

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

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

  • Yeni bir Özel Görüntü İşleme projesi oluşturma
  • Projeye etiketleri ekleme
  • Görüntüleri karşıya yükleme ve etiketleme
  • Projeyi eğitme
  • Geçerli yinelemeyi yayımlama
  • Tahmin uç noktasını test edin

Başvuru belgeleri (eğitim) (tahmin) | Paket (npm) (eğitim) (tahmin) | Örnekler

Önkoşullar

  • Azure aboneliği - Ücretsiz olarak oluşturun
  • Node.js'in geçerli sürümü
  • Azure aboneliğinizi aldıktan sonra, eğitim ve tahmin kaynağı oluşturmak için Azure portalında bir Özel Görüntü İşleme kaynağı oluşturun.
    • Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını (F0) kullanabilirsiniz.

Ortam değişkenlerini oluşturma

Bu örnekte, kimlik bilgilerinizi uygulamayı çalıştıran yerel makinedeki ortam değişkenlerine yazacaksınız.

Azure portalına gidin. Önkoşullar bölümünde oluşturduğunuz Özel Görüntü İşleme kaynaklar başarıyla dağıtıldıysa, Sonraki Adımlar'ın altındaki Kaynağa Git düğmesini seçin. Anahtarlarınızı ve uç noktalarınızı kaynakların anahtar ve uç nokta sayfalarında, kaynak yönetimi altında bulabilirsiniz. API uç noktalarıyla birlikte hem eğitim hem de tahmin kaynaklarınızın anahtarlarını almanız gerekir.

Tahmin kaynağı kimliğini Azure portalındaki Tahmin kaynağının Özellikler sekmesinde Kaynak Kimliği olarak listelenmiş olarak bulabilirsiniz.

İpucu

Bu değerleri almak için de kullanırsınız https://www.customvision.ai/ . Oturum açıldıktan sonra sağ üstteki Ayarlar simgesini seçin. Ayar sayfalarında tüm anahtarları, kaynak kimliğini ve uç noktaları görüntüleyebilirsiniz.

Ortam değişkenlerini ayarlamak için bir konsol penceresi açın ve işletim sisteminizle geliştirme ortamınıza yönelik yönergeleri izleyin.

  • Ortam değişkenini VISION_TRAINING KEY ayarlamak için öğesini eğitim kaynağınızın anahtarlarından biriyle değiştirin your-training-key .
  • Ortam değişkenini VISION_TRAINING_ENDPOINT ayarlamak için öğesini eğitim kaynağınızın uç noktasıyla değiştirin your-training-endpoint .
  • Ortam değişkenini VISION_PREDICTION_KEY ayarlamak için değerini tahmin kaynağınızın anahtarlarından biriyle değiştirin your-prediction-key .
  • Ortam değişkenini VISION_PREDICTION_ENDPOINT ayarlamak için değerini tahmin kaynağınızın uç noktasıyla değiştirin your-prediction-endpoint .
  • Ortam değişkenini VISION_PREDICTION_RESOURCE_ID ayarlamak için değerini tahmin kaynağınızın kaynak kimliğiyle değiştirin your-resource-id .

Önemli

API anahtarı kullanıyorsanız, bunu Azure Key Vault gibi başka bir yerde güvenli bir şekilde depolayın. API anahtarını doğrudan kodunuzla eklemeyin ve hiçbir zaman herkese açık olarak göndermeyin.

Yapay zeka hizmetleri güvenliği hakkında daha fazla bilgi için bkz . Azure AI hizmetlerine yönelik isteklerin kimliğini doğrulama.

setx VISION_TRAINING_KEY your-training-key
setx VISION_TRAINING_ENDPOINT your-training-endpoint
setx VISION_PREDICTION_KEY your-prediction-key
setx VISION_PREDICTION_ENDPOINT your-prediction-endpoint
setx VISION_PREDICTION_RESOURCE_ID your-resource-id

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenlerini okuyacak tüm çalışan programları yeniden başlatmanız gerekebilir.

Ayarlama

Yeni bir Node.js uygulaması oluşturma

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

mkdir myapp && cd myapp

Bir package.json dosyası ile bir düğüm uygulaması oluşturmak için npm init komutunu çalıştırın.

npm init

İstemci kitaplığını yükleme

Node.js için Özel Görüntü İşleme içeren bir görüntü analizi uygulaması yazmak için Özel Görüntü İşleme NPM paketleri 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ızın package.json dosyası bağımlılıklarla güncelleştirilecek.

adlı index.js bir dosya oluşturun 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

Tüm hızlı başlangıç kodunu aynı anda görüntülemek mi istiyorsunuz? Bunu, bu hızlı başlangıçtaki kod örneklerini içeren GitHub’da bulabilirsiniz.

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

// retrieve environment variables
const trainingKey = process.env["VISION_TRAINING_KEY"];
const trainingEndpoint = process.env["VISION_TRAINING_ENDPOINT"];

const predictionKey = process.env["VISION_PREDICTION_KEY"];
const predictionResourceId = process.env["VISION_PREDICTION_RESOURCE_ID"];
const predictionEndpoint = process.env["VISION_PREDICTION_ENDPOINT"];

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

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

Nesne modeli

Veri Akışı Adı Açıklama
TrainingAPIClient Bu sınıf modellerinizin oluşturulmasını, eğitılmasını ve yayımlanmasını işler.
PredictionAPIClient Bu sınıf, görüntü sınıflandırma tahminleri için modellerinizi sorgulamayı işler.
Tahmin Bu arabirim, tek bir görüntüde tek bir tahmin tanımlar. Nesne kimliği ve adı için özellikler ve güvenilirlik puanı içerir.

Kod örnekleri

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

İstemcinin kimliğini doğrulama

Uç noktanız ve anahtarınız ile istemci nesnelerinin örneğini oluşturun. Anahtarınız ile bir ApiKeyCredentials nesnesi oluşturun ve bunu uç noktanızla birlikte kullanarak 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 Özel Görüntü İşleme işlev çağrılarınızı içerecek yeni bir işlev başlatın. Yeni bir Özel Görüntü İşleme hizmet projesi oluşturmak için aşağıdaki kodu ekleyin.

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

Projeye etiketleri ekleme

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.

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

Azure AI hizmetleri Python SDK Örnekleri depoyu indirdiğiniz yere göre görüntülerin (sampleDataRoot) yolunu değiştirmeniz gerekir.

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ımlama

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

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

Tahmin uç noktasını test edin

Tahmin uç noktasına 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ıp çağırabilirsiniz.

})()

Uygulamayı çalıştırma

Uygulamayı hızlı başlangıç dosyanızdaki node komutuyla ç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%

Daha sonra test görüntüsünün (sampleDataRoot>/Test/içinde <bulunur) 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.

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 abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel Görüntü İşleme web sitesindeProjeler’e gidin ve Yeni Projem’in altından çöp kutusunu secin.

Çöp kutusu simgesiyle Yeni Projem etiketli panelin ekran görüntüsü.

Sonraki adımlar

Artık kodda nesne algılama işleminin her adımının nasıl gerçekleştirilebileceğ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ğitip test etmeniz gerekir.

Python için Özel Görüntü İşleme istemci kitaplığını kullanmaya başlayın. Paketi yüklemek için bu adımları izleyin ve görüntü sınıflandırma modeli oluşturmaya yönelik örnek kodu deneyin. Program aracılığıyla test etmek için bir proje oluşturacak, etiketler ekleyecek, projeyi eğitecek ve projenin tahmin uç noktası URL'sini kullanacaksınız. Bu örneği kendi görüntü tanıma uygulamanızı oluşturmak için şablon olarak kullanın.

Not

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

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

  • Yeni bir Özel Görüntü İşleme projesi oluşturma
  • Projeye etiketleri ekleme
  • Görüntüleri karşıya yükleme ve etiketleme
  • Projeyi eğitme
  • Geçerli yinelemeyi yayımlama
  • Tahmin uç noktasını test edin

Başvuru belgeleri | Kitaplık kaynak kodu | Paketi (PyPI)Örnekleri |

Önkoşullar

  • Azure aboneliği - Ücretsiz olarak oluşturun
  • Python 3.x
    • Python yüklemeniz pip içermelidir. Pip'in yüklü olup olmadığını denetlemek için komut satırında komutunu çalıştırabilirsiniz pip --version . Python'ın en son sürümünü yükleyerek pip alın.
  • Azure aboneliğinizi aldıktan sonra Azure portalında bir eğitim ve tahmin kaynağı oluşturmak için bir Özel Görüntü İşleme kaynağı oluşturun.
    • Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını (F0) kullanabilirsiniz.

Ortam değişkenlerini oluşturma

Bu örnekte, kimlik bilgilerinizi uygulamayı çalıştıran yerel makinedeki ortam değişkenlerine yazacaksınız.

Azure portalına gidin. Önkoşullar bölümünde oluşturduğunuz Özel Görüntü İşleme kaynaklar başarıyla dağıtıldıysa, Sonraki Adımlar'ın altındaki Kaynağa Git düğmesini seçin. Anahtarlarınızı ve uç noktalarınızı kaynakların anahtar ve uç nokta sayfalarında, kaynak yönetimi altında bulabilirsiniz. API uç noktalarıyla birlikte hem eğitim hem de tahmin kaynaklarınızın anahtarlarını almanız gerekir.

Tahmin kaynağı kimliğini Azure portalındaki Tahmin kaynağının Özellikler sekmesinde Kaynak Kimliği olarak listelenmiş olarak bulabilirsiniz.

İpucu

Bu değerleri almak için de kullanırsınız https://www.customvision.ai/ . Oturum açıldıktan sonra sağ üstteki Ayarlar simgesini seçin. Ayar sayfalarında tüm anahtarları, kaynak kimliğini ve uç noktaları görüntüleyebilirsiniz.

Ortam değişkenlerini ayarlamak için bir konsol penceresi açın ve işletim sisteminizle geliştirme ortamınıza yönelik yönergeleri izleyin.

  • Ortam değişkenini VISION_TRAINING KEY ayarlamak için öğesini eğitim kaynağınızın anahtarlarından biriyle değiştirin your-training-key .
  • Ortam değişkenini VISION_TRAINING_ENDPOINT ayarlamak için öğesini eğitim kaynağınızın uç noktasıyla değiştirin your-training-endpoint .
  • Ortam değişkenini VISION_PREDICTION_KEY ayarlamak için değerini tahmin kaynağınızın anahtarlarından biriyle değiştirin your-prediction-key .
  • Ortam değişkenini VISION_PREDICTION_ENDPOINT ayarlamak için değerini tahmin kaynağınızın uç noktasıyla değiştirin your-prediction-endpoint .
  • Ortam değişkenini VISION_PREDICTION_RESOURCE_ID ayarlamak için değerini tahmin kaynağınızın kaynak kimliğiyle değiştirin your-resource-id .

Önemli

API anahtarı kullanıyorsanız, bunu Azure Key Vault gibi başka bir yerde güvenli bir şekilde depolayın. API anahtarını doğrudan kodunuzla eklemeyin ve hiçbir zaman herkese açık olarak göndermeyin.

Yapay zeka hizmetleri güvenliği hakkında daha fazla bilgi için bkz . Azure AI hizmetlerine yönelik isteklerin kimliğini doğrulama.

setx VISION_TRAINING_KEY your-training-key
setx VISION_TRAINING_ENDPOINT your-training-endpoint
setx VISION_PREDICTION_KEY your-prediction-key
setx VISION_PREDICTION_ENDPOINT your-prediction-endpoint
setx VISION_PREDICTION_RESOURCE_ID your-resource-id

Ortam değişkenlerini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenlerini okuyacak tüm çalışan programları yeniden başlatmanız gerekebilir.

Ayarlama

İstemci kitaplığını yükleme

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

pip install azure-cognitiveservices-vision-customvision

Yeni 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ıç kodunu aynı anda görüntülemek mi istiyorsunuz? Bunu, bu hızlı başlangıçtaki kod örneklerini içeren GitHub’da bulabilirsiniz.

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

# retrieve environment variables
ENDPOINT = os.environ["VISION_TRAINING_ENDPOINT"]
training_key = os.environ["VISION_TRAINING_KEY"]
prediction_key = os.environ["VISION_PREDICTION_KEY"]
prediction_resource_id = os.environ["VISION_PREDICTION_RESOURCE_ID"]

Nesne modeli

Veri Akışı Adı Açıklama
CustomVisionTrainingClient Bu sınıf modellerinizin oluşturulmasını, eğitılmasını ve yayımlanmasını işler.
CustomVisionPredictionClient Bu sınıf, görüntü sınıflandırma tahminleri için modellerinizi sorgulamayı işler.
ImagePrediction Bu sınıf, tek bir görüntüde tek bir nesne tahmini tanımlar. Nesne kimliği ve adı, nesnenin sınırlayıcı kutu konumu ve güvenilirlik puanı özelliklerini içerir.

Kod örnekleri

Bu kod parçacıkları, Python için Özel Görüntü İşleme istemci kitaplığıyla aşağıdakileri nasıl yapacağınızı gösterir:

İstemcinin kimliğini doğrulama

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

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ı oluşturma web portalı 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 etiketleri ekleme

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.

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şlemde 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

Azure AI hizmetleri Python SDK Örnekleri depoyu indirdiğiniz yere göre 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ğit

İsteğe bağlı olarak, uygulanan etiketlerinizin yalnızca bir alt kümesi üzerinde eğitebilirsiniz. Henüz belirli etiketlerden yeterince uygulamadıysanız ancak daha fazla etiketiniz varsa bunu yapmak isteyebilirsiniz. train_project çağrısında, selected_tags isteğe bağlı parametresini kullanmak istediğiniz etiketlerin kimlik dizelerinin listesine ayarlayın. Model yalnızca bu listedeki etiketleri tanıyacak şekilde eğitilecektir.

Geçerli yinelemeyi yayımlama

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 edin

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 test görüntüsünün ( <base_image_location>/görüntüler/Test/) 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 abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel Görüntü İşleme web sitesindeProjeler’e gidin ve Yeni Projem’in altından çöp kutusunu secin.

Çöp kutusu simgesiyle Yeni Projem etiketli panelin ekran görüntüsü.

Sonraki adımlar

Artık görüntü sınıflandırma işleminin her adımının kodda nasıl gerçekleştirilebileceğ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ğitip test etmeniz gerekir.

Özel Görüntü İşleme REST API'sini kullanmaya başlayın. API'yi çağırmak ve görüntü sınıflandırma modeli oluşturmak için bu adımları izleyin. Program aracılığıyla test etmek için bir proje oluşturacak, etiketler ekleyecek, projeyi eğitecek ve projenin tahmin uç noktası URL'sini kullanacaksınız. Bu örneği kendi görüntü tanıma uygulamanızı oluşturmak için şablon olarak kullanın.

Not

Özel Görüntü İşleme, istemci kitaplığı SDK'sı veya tarayıcı tabanlı yönergeler aracılığıyla en kolay şekilde kullanılır.

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

  • Yeni bir Özel Görüntü İşleme projesi oluşturma
  • Projeye etiketleri ekleme
  • Görüntüleri karşıya yükleme ve etiketleme
  • Projeyi eğitme
  • Geçerli yinelemeyi yayımlama
  • Tahmin uç noktasını test edin

Önkoşullar

  • Azure aboneliği - Ücretsiz olarak oluşturun
  • Azure aboneliğinizi aldıktan sonra Azure portalında bir eğitim ve tahmin kaynağı oluşturmak ve anahtarlarınızı ve uç noktanızı almak için bir Özel Görüntü İşleme kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesine tıklayın.
    • Uygulamanızı Özel Görüntü İşleme bağlamak için oluşturduğunuz kaynaklardan anahtara ve uç noktaya ihtiyacınız olacaktır. Anahtarınızı ve uç noktanızı hızlı başlangıcın ilerleyen bölümlerinde aşağıdaki koda yapıştıracaksınız.
    • Hizmeti denemek ve daha sonra üretim için ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını (F0) 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ırma projesi oluşturmak için aşağıdakine benzer bir komut kullanacaksınız. Oluşturulan proje Özel Görüntü İşleme web sitesinde gösterilir.

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:

  • değerini geçerli Yüz Tanıma anahtarınız ile değiştirin {subscription key} .
  • değerini anahtarınıza karşılık gelen uç noktayla değiştirin {endpoint} .

    Not

    1 Temmuz 2019'da oluşturulan yeni kaynaklar özel alt etki alanı adlarını kullanacaktır. Daha fazla bilgi ve bölgesel uç noktaların tam listesi için bkz . Azure AI hizmetleri için özel alt etki alanı adları.

  • değerini projenizin adıyla değiştirin {name} .
  • İsteğe bağlı olarak, projenizin hangi model türünü kullanacağını yapılandırmak için diğer URL parametrelerini ayarlayın. Seçenekler için creatProject API'sine bakın.

Aşağıdaki gibi bir JSON yanıtı alırsı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 etiketleri ekleme

Modeli eğitmek istediğiniz 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}"
  • Yine kendi anahtarınızı ve uç nokta URL'nizi ekleyin.
  • değerini kendi proje kimliğiniz ile değiştirin {projectId} .
  • yerine {name} kullanmak istediğiniz etiketin adını yazın.

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

Aşağıdaki gibi bir JSON yanıtı alırsınız. Her etiketin "id" 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

Ardından, 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.

Görüntüleri karşıya yüklemek ve etiketleri uygulamak için aşağıdaki komutu kullanın; bir kez "Hemlock" görüntüleri için ve ayrıca "Japon Kirazı" görüntüleri için. Daha fazla seçenek için Verilerden Görüntü Oluşturma API'sine 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}"
  • Yine kendi anahtarınızı ve uç nokta URL'nizi ekleyin.
  • değerini kendi proje kimliğiniz ile değiştirin {projectId} .
  • değerini bir etiketin kimliğiyle değiştirin {tagArray} .
  • Ardından, isteğin gövdesini etiketlemek istediğiniz görüntülerin ikili verileriyle doldurun.

Projeyi eğitme

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

curl -v -X POST -H "Content-Type: application/json" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/train"
  • Yine kendi anahtarınızı ve uç nokta URL'nizi ekleyin.
  • değerini kendi proje kimliğiniz ile değiştirin {projectId} .
  • değerini bir etiketin kimliğiyle değiştirin {tagArray} .
  • 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 EĞIT API'sine bakın.

İpucu

Seçili etiketlerle eğit

İsteğe bağlı olarak, uygulanan etiketlerinizin yalnızca bir alt kümesi üzerinde eğitebilirsiniz. Henüz belirli etiketlerden yeterince uygulamadıysanız ancak daha fazla etiketiniz varsa bunu yapmak isteyebilirsiniz. İsteğe bağlı JSON içeriğini isteğinizin gövdesine ekleyin. Diziyi "selectedTags" , kullanmak istediğiniz etiketlerin kimlikleriyle doldurun.

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

JSON yanıtı, eğitilen projenizle ilgili yineleme kimliği ("id") dahil olmak üzere bilgiler içerir. Bu değeri sonraki adım için 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ımlama

Bu yöntem, modelin geçerli yinelemesini sorgulama için kullanılabilir hale getirir. Tahmin istekleri göndermek için başvuru olarak döndürülen model adını 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}"
  • Yine kendi anahtarınızı ve uç nokta URL'nizi ekleyin.
  • değerini kendi proje kimliğiniz ile değiştirin {projectId} .
  • değerini önceki adımda döndürülen kimlikle değiştirin {iterationId} .
  • değerini tahmin modelinize atamak istediğiniz adla değiştirin {publishedName} .
  • değerini kendi tahmin kaynağı kimliğiniz ile değiştirin {predictionId} . Tahmin kaynak kimliğini, Kaynağın Özellikler sekmesinde, Azure portalında Kaynak Kimliği olarak listelenmiş olarak bulabilirsiniz.
  • İsteğe bağlı olarak diğer URL parametrelerini kullanın. Bkz. Yayımlama Yineleme API'si.

Tahmin uç noktasını test edin

Son olarak, eğitilen modelinizi etiketlerle sınıflandırmak üzere yeni bir görüntü yükleyerek test etmek için bu komutu kullanın. Daha önce indirdiğiniz örnek dosyaların "Test" klasöründeki görüntüyü 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}"
  • Yine kendi anahtarınızı ve uç nokta URL'nizi ekleyin.
  • değerini kendi proje kimliğiniz ile değiştirin {projectId} .
  • değerini önceki adımda kullandığınız adla değiştirin {publishedName} .
  • yerel görüntünüzün ikili verilerini istek gövdesine ekleyin.
  • İsteğe bağlı olarak diğer URL parametrelerini kullanın. Bkz. Görüntü Sınıflandırma API'sini.

Döndürülen JSON yanıtı, modelin görüntünüze uyguladığı etiketlerin her birini ve her etiket için olasılık puanlarını listeler.

{
  "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 abonelik iki Özel Görüntü İşleme projesine izin verir.

Özel Görüntü İşleme web sitesindeProjeler’e gidin ve Yeni Projem’in altından çöp kutusunu secin.

Çöp kutusu simgesiyle Yeni Projem etiketli 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ı gerçekleştirdiniz. 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ğitip test etmeniz gerekir.