Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Начало работы с клиентской библиотекой пользовательского визуального распознавания для .NET. Выполните следующие действия, чтобы установить пакет и попробовать пример кода для создания модели классификации изображений. Вы можете создать проект, добавить теги, обучить проект и использовать URL-адрес конечной точки прогнозирования проекта для программного тестирования. Используйте этот пример в качестве шаблона для создания собственного приложения распознавания изображений.
Примечание
Если вы хотите создать и обучить модель классификации без написания кода, ознакомьтесь с рекомендациями на основе браузера.
Документация по обращению | Исходный код библиотеки для обучения и прогнозирования | Пакет (NuGet) для обучения и прогнозирования | Образцы
Необходимые условия
- Подписка Azure. Вы можете создать его бесплатно.
- Visual Studio IDE или текущая версия .NET Core.
- После получения подписки Azure создайте ресурс Custom Vision на портале Azure, чтобы создать обучающий ресурс и ресурс прогнозирования.
- Вы можете использовать бесплатный тарифный план (
F0), чтобы попробовать службу, а затем перейти на платный план для рабочих нужд.
- Вы можете использовать бесплатный тарифный план (
Создание переменных среды
В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.
Перейдите на портал Azure. Если ресурсы пользовательского визуального распознавания, созданные в разделе предварительных требований , развернуты успешно, нажмите кнопку "Перейти к ресурсу " в разделе "Дальнейшие действия". Ключи и конечные точки можно найти на страницах ключей и конечных точек ресурсов в разделе "Управление ресурсами". Вам потребуется получить ключи для ресурса обучения и ресурса прогнозирования, а также конечных точек API.
Идентификатор ресурса прогнозирования можно найти на вкладке Properties на портале Azure, указанном как Resource ID.
Совет
Вы также используете https://www.customvision.ai для получения этих значений. После входа щелкните значок "Параметры " в правом верхнем углу. На страницах параметров можно просмотреть все ключи, идентификатор ресурса и конечные точки.
Чтобы задать переменные среды, откройте окно консоли и следуйте инструкциям для вашей операционной системы и среды разработки.
- Чтобы задать
VISION_TRAINING KEYпеременную среды, замените<your-training-key>одним из ключей для учебного ресурса. - Чтобы задать переменную среды, замените
VISION_TRAINING_ENDPOINTна конечную точку<your-training-endpoint>для вашего ресурса обучения. - Чтобы задать
VISION_PREDICTION_KEYпеременную среды, замените<your-prediction-key>одним из ключей для ресурса прогнозирования. - Чтобы задать переменную окружения
VISION_PREDICTION_ENDPOINT, замените ее конечной точкой<your-prediction-endpoint>для ресурса прогнозирования. - Чтобы задать переменную среды
VISION_PREDICTION_RESOURCE_ID, замените<your-resource-id>на идентификатор ресурса для прогнозирования.
Важно
Мы рекомендуем Microsoft Entra ID проверку подлинности с помощью управляемых удостоверений для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничивайте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Для получения дополнительной информации о безопасном использовании ключей API в ваших приложениях, см. ключи API в Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.
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>
После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые считывают переменные среды, включая окно консоли.
Настройка
Создание приложения C#
С помощью Visual Studio создайте новое приложение .NET Core.
Установка клиентской библиотеки
После создания нового проекта установите клиентскую библиотеку, щелкнув правой кнопкой мыши по решению в Обозреватель решений и выбрав Управление пакетами NuGet. Выберите Browse в открывшемся диспетчере пакетов, затем установите флажок Include prerelease и выполните поиск Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training и Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction. Выберите последнюю версию и нажмите кнопку "Установить".
Совет
Хотите одновременно просмотреть весь файл кода быстрого запуска? Его можно найти на сайте GitHub, который содержит примеры кода в этом кратком руководстве.
В каталоге проекта откройте файл program.cs и добавьте следующие using директивы:
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;
В методе приложения main создайте переменные, которые извлекают ключи и конечные точки ресурса из переменных среды. Вы также объявите некоторые основные объекты, которые будут использоваться позже.
// 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;
В методе main приложения добавьте вызовы методов, используемых в этом кратком руководстве. Вы реализуете эти действия позже.
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);
Проверка подлинности клиента
В новом методе инстанцируйте клиентов обучения и прогнозирования, используя вашу конечную точку и ключи.
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;
}
Создание проекта пользовательского визуального распознавания
Следующий бит кода создает проект классификации изображений. Созданный проект отображается на веб-сайте Пользовательского визуального распознавания. См. метод CreateProject , чтобы указать другие параметры при создании проекта (описано в руководстве по созданию классификатора на веб-портале).
private static Project CreateProject(CustomVisionTrainingClient trainingApi)
{
// Create a new project
Console.WriteLine("Creating new project:");
return trainingApi.CreateProject("My New Project");
}
Добавление тегов в проект
Этот метод определяет теги, на которые вы обучаете модель.
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");
}
Загрузка изображений и добавление тегов
Сначала скачайте примеры образов для этого проекта. Сохраните содержимое папки sample Images на локальном устройстве.
Затем определите вспомогательный метод для отправки изображений в этом каталоге. Может потребоваться изменить GetFiles аргумент, чтобы указать расположение, в котором сохраняются изображения.
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")));
}
Затем определите метод для отправки изображений, применяя теги в соответствии с расположением папки. Изображения уже отсортированы. Вы можете отправлять и тегировать изображения в итеративном режиме или в пакете (до 64 на пакет). Этот фрагмент кода содержит примеры обоих.
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 }));
}
Обучить проект
Этот метод создает первую итерацию обучения в проекте. Делает запрос к службе до завершения обучения.
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);
}
}
Совет
Обучение с выбранными тегами
По желанию можно обучать только подмножество ваших примененных тегов. Вы можете сделать это, если вы еще не применили достаточно определенных тегов, но у вас достаточно других. В вызове TrainProject используйте trainingParameters параметр. Создайте TrainingParameters и задайте для свойства SelectedTags список идентификаторов тегов, которые вы хотите использовать. Модель будет обучаться распознавать только теги в этом списке.
Публикация текущей итерации
Этот метод делает текущую итерацию модели доступной для запроса. Имя модели можно использовать в качестве ссылки для отправки запросов на прогнозирование. Для этого необходимо ввести собственное значение predictionResourceId. Идентификатор ресурса прогнозирования можно найти на вкладке Properties на портале Azure, указанном как Resource ID.
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
}
Тестирование конечной точки прогнозирования
Эта часть скрипта загружает тестовый образ, запрашивает конечную точку модели и выводит данные прогнозирования в консоль.
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}");
}
}
Запуск приложения
Запустите приложение, нажав кнопку отладки в верхней части окна интегрированной среды разработки.
По мере запуска приложения он должен открыть окно консоли и записать следующие выходные данные:
Creating new project:
Uploading images
Training
Done!
Making a prediction:
Hemlock: 95.0%
Japanese Cherry: 0.0%
Затем можно убедиться, что тестовый образ (найденный в Images/Test/) помечен соответствующим образом. Нажмите любой ключ, чтобы выйти из приложения. Вы также можете вернуться на веб-сайт Пользовательского визуального распознавания и просмотреть текущее состояние созданного проекта.
Очистка ресурсов
Если вы хотите реализовать собственный проект классификации изображений (или попробовать проект обнаружения объектов вместо этого), может потребоваться удалить проект идентификации дерева из этого примера. Бесплатная подписка позволяет использовать два проекта Custom Vision.
На веб-сайте Custom Vision перейдите к разделу Проекты и выберите корзину в разделе "Мой новый проект".
Связанное содержимое
Теперь вы узнали, как каждый шаг процесса обнаружения объектов можно выполнить в коде. В этом примере выполняется одна итерация обучения, но часто необходимо обучать и тестировать модель несколько раз, чтобы сделать ее более точной.
- Что такое Пользовательское визуальное распознавание?
- Исходный код этого примера можно найти в GitHub
- Справочная документация по пакету SDK
В этом руководстве приведены инструкции и пример кода, помогающие приступить к работе с клиентской библиотекой Пользовательского визуального распознавания для Go, чтобы создать модель классификации изображений. Вы создадите проект, добавьте теги, обучите проект и используйте URL-адрес конечной точки прогнозирования проекта для программного тестирования. Используйте этот пример в качестве шаблона для создания собственного приложения распознавания изображений.
Примечание
Если вы хотите создать и обучить модель классификации без написания кода, ознакомьтесь с рекомендациями на основе браузера.
Используйте клиентскую библиотеку Custom Vision для использования в Go:
- Создание проекта пользовательского визуального распознавания
- Добавление тегов в проект
- Загрузка изображений и добавление тегов
- Обучить проект
- Публикация текущей итерации
- Тестирование конечной точки прогнозирования
Справочная документация по (обучение) и (прогнозирование)
Необходимые условия
- Подписка Azure. Вы можете создать его бесплатно.
- Go 1.8 или новее.
- После получения подписки Azure создайте ресурс Custom Vision на портале Azure, чтобы создать ресурс обучения и прогнозирования.
- Вы можете использовать бесплатный тарифный план (
F0), чтобы попробовать службу, а затем перейти на платный план для рабочих нужд.
- Вы можете использовать бесплатный тарифный план (
Создание переменных среды
В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.
Перейдите на портал Azure. Если ресурсы пользовательского визуального распознавания, созданные в разделе предварительных требований , развернуты успешно, нажмите кнопку "Перейти к ресурсу " в разделе "Дальнейшие действия". Ключи и конечные точки можно найти на страницах ключей и конечных точек ресурсов в разделе "Управление ресурсами". Вам потребуется получить ключи для ресурса обучения и ресурса прогнозирования, а также конечных точек API.
Идентификатор ресурса прогнозирования можно найти на вкладке Properties на портале Azure, указанном как Resource ID.
Совет
Вы также используете https://www.customvision.ai для получения этих значений. После входа щелкните значок "Параметры " в правом верхнем углу. На страницах параметров можно просмотреть все ключи, идентификатор ресурса и конечные точки.
Чтобы задать переменные среды, откройте окно консоли и следуйте инструкциям для вашей операционной системы и среды разработки.
- Чтобы задать
VISION_TRAINING KEYпеременную среды, замените<your-training-key>одним из ключей для учебного ресурса. - Чтобы задать переменную среды, замените
VISION_TRAINING_ENDPOINTна конечную точку<your-training-endpoint>для вашего ресурса обучения. - Чтобы задать
VISION_PREDICTION_KEYпеременную среды, замените<your-prediction-key>одним из ключей для ресурса прогнозирования. - Чтобы задать переменную окружения
VISION_PREDICTION_ENDPOINT, замените ее конечной точкой<your-prediction-endpoint>для ресурса прогнозирования. - Чтобы задать переменную среды
VISION_PREDICTION_RESOURCE_ID, замените<your-resource-id>на идентификатор ресурса для прогнозирования.
Важно
Мы рекомендуем Microsoft Entra ID проверку подлинности с помощью управляемых удостоверений для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничивайте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Для получения дополнительной информации о безопасном использовании ключей API в ваших приложениях, см. ключи API в Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.
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>
После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые считывают переменные среды, включая окно консоли.
Настройка
Установка клиентской библиотеки Custom Vision
Чтобы написать приложение анализа изображений с помощью Пользовательского визуального распознавания для Go, вам потребуется клиентская библиотека службы пользовательского визуального распознавания. Выполните следующую команду в PowerShell:
go get -u github.com/Azure/azure-sdk-for-go/...
Или, если вы используете dep, выполните в вашем репозитории:
dep ensure -add github.com/Azure/azure-sdk-for-go
Получение примеров изображений
В этом примере используются образы из репозитория Foundry Tools Python SDK Samples в GitHub. Клонируйте или скачайте этот репозиторий в среду разработки. Помните расположение папки для последующего шага.
Создание проекта Пользовательского визуального распознавания
Создайте файл с именем sample.go в предпочтительном каталоге проекта и откройте его в предпочтительном редакторе кода.
Добавьте следующий код в скрипт, чтобы создать проект службы пользовательского визуального распознавания.
См. метод CreateProject , чтобы указать другие параметры при создании проекта (описано в руководстве по созданию классификатора на веб-портале).
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)
}
Создание тегов в проекте
Чтобы создать теги классификации в проекте, добавьте следующий код в конец sample.go:
// 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))
Загрузка изображений и добавление тегов
Чтобы добавить примеры изображений в проект, вставьте следующий код после создания тега. Этот код отправляет каждое изображение с соответствующим тегом. Вы можете отправлять до 64 образов в одном пакете.
Примечание
Вам потребуется изменить путь к изображениям в зависимости от того, где вы скачали проект Foundry Tools Go SDK Samples.
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() })
}
Обучение и публикация проекта
Этот код создает первую итерацию модели прогнозирования, а затем публикует эту итерацию в конечной точке прогнозирования. Имя, заданное опубликованной итерации, можно использовать для отправки запросов прогнозирования. Итерация недоступна в конечной точке прогнозирования, пока она не будет опубликована.
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))
Использование конечной точки прогнозирования
Чтобы отправить изображение в конечную точку прогнозирования и получить прогноз, добавьте следующий код в конец файла:
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("")
}
}
Запуск приложения
Запустите приложение с помощью следующей команды:
go run sample.go
Выходные данные приложения должны совпадать со следующим текстом:
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%
Затем можно убедиться, что тестовый образ (найденный в <base_image_url>/Images/Test/) помечен соответствующим образом. Вы также можете вернуться на веб-сайт Пользовательского визуального распознавания и просмотреть текущее состояние созданного проекта.
Очистка ресурсов
Если вы хотите реализовать собственный проект классификации изображений (или попробовать проект обнаружения объектов вместо этого), может потребоваться удалить проект идентификации дерева из этого примера. Бесплатная подписка позволяет использовать два проекта Custom Vision.
На веб-сайте Custom Vision перейдите к разделу Проекты и выберите корзину в разделе "Мой новый проект".
Связанное содержимое
Теперь вы узнали, как каждый шаг процесса обнаружения объектов можно выполнить в коде. В этом примере выполняется одна итерация обучения, но часто необходимо обучать и тестировать модель несколько раз, чтобы сделать ее более точной.
- Что такое Пользовательское визуальное распознавание?
- справочная документация SDK (обучение)
- справочная документация SDK (прогноз)
Начните использовать клиентскую библиотеку Custom Vision для создания модели классификации изображений на Java. Выполните следующие действия, чтобы установить пакет и попробовать пример кода для основных задач. Используйте этот пример в качестве шаблона для создания собственного приложения распознавания изображений.
Примечание
Если вы хотите создать и обучить модель классификации без написания кода, ознакомьтесь с рекомендациями на основе браузера.
Используйте клиентскую библиотеку Custom Vision для Java:
- Создание проекта пользовательского визуального распознавания
- Добавление тегов в проект
- Загрузка изображений и добавление тегов
- Обучить проект
- Публикация текущей итерации
- Тестирование конечной точки прогнозирования
Справочная документация
Необходимые условия
- Подписка Azure. Вы можете создать его бесплатно.
- Текущая версия пакета средств разработки Java (JDK).
- Средство сборки Gradle или другой диспетчер зависимостей.
- После получения подписки Azure создайте ресурс Custom Vision на портале Azure, чтобы создать ресурс обучения и прогнозирования.
- Вы можете использовать бесплатный тарифный план (
F0), чтобы попробовать службу, а затем перейти на платный план для рабочих нужд.
- Вы можете использовать бесплатный тарифный план (
Создание переменных среды
В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.
Перейдите на портал Azure. Если ресурсы пользовательского визуального распознавания, созданные в разделе предварительных требований , развернуты успешно, нажмите кнопку "Перейти к ресурсу " в разделе "Дальнейшие действия". Ключи и конечные точки можно найти на страницах ключей и конечных точек ресурсов в разделе "Управление ресурсами". Вам потребуется получить ключи для ресурса обучения и ресурса прогнозирования, а также конечных точек API.
Идентификатор ресурса прогнозирования можно найти на вкладке Properties на портале Azure, указанном как Resource ID.
Совет
Вы также используете https://www.customvision.ai для получения этих значений. После входа щелкните значок "Параметры " в правом верхнем углу. На страницах параметров можно просмотреть все ключи, идентификатор ресурса и конечные точки.
Чтобы задать переменные среды, откройте окно консоли и следуйте инструкциям для вашей операционной системы и среды разработки.
- Чтобы задать
VISION_TRAINING KEYпеременную среды, замените<your-training-key>одним из ключей для учебного ресурса. - Чтобы задать переменную среды, замените
VISION_TRAINING_ENDPOINTна конечную точку<your-training-endpoint>для вашего ресурса обучения. - Чтобы задать
VISION_PREDICTION_KEYпеременную среды, замените<your-prediction-key>одним из ключей для ресурса прогнозирования. - Чтобы задать переменную окружения
VISION_PREDICTION_ENDPOINT, замените ее конечной точкой<your-prediction-endpoint>для ресурса прогнозирования. - Чтобы задать переменную среды
VISION_PREDICTION_RESOURCE_ID, замените<your-resource-id>на идентификатор ресурса для прогнозирования.
Важно
Мы рекомендуем Microsoft Entra ID проверку подлинности с помощью управляемых удостоверений для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничивайте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Для получения дополнительной информации о безопасном использовании ключей API в ваших приложениях, см. ключи API в Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.
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>
После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые считывают переменные среды, включая окно консоли.
Настройка
Создание проекта Gradle
В окне консоли (например, cmd, PowerShell или Bash) создайте новый каталог для приложения и перейдите к нему.
mkdir myapp && cd myapp
gradle init Выполните команду из рабочего каталога. Эта команда создает основные файлы сборки для Gradle, включая build.gradle.kts, который используется во время выполнения для создания и настройки приложения.
gradle init --type basic
При появлении запроса на выбор DSL выберите Kotlin.
Установка клиентской библиотеки
Найдите build.gradle.kts и откройте его с помощью предпочтительной интегрированной среды разработки или текстового редактора. Затем скопируйте следующую конфигурацию сборки. Эта конфигурация определяет проект как приложение Java, точка входа которого является классом CustomVisionQuickstart. Он импортирует библиотеки пользовательского визуального распознавания.
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
В рабочем каталоге выполните следующую команду, чтобы создать исходную папку проекта:
mkdir -p src/main/java
Перейдите к новой папке и создайте файл с именем CustomVisionQuickstart.java. Откройте его в предпочтительном редакторе или интегрированной среде разработки и добавьте следующие 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;
Совет
Хотите одновременно просмотреть весь файл кода быстрого запуска? Его можно найти на сайте GitHub, который содержит примеры кода в этом кратком руководстве.
В классе приложения CustomVisionQuickstart создайте переменные, которые извлекают ключи и конечную точку ресурса из переменных среды.
// 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");
Важно
Не забудьте удалить ключи из кода после завершения и никогда не публиковать их публично. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, таким как Azure Key Vault. Дополнительные сведения см. в статье о безопасности средств Foundry.
В методе main приложения добавьте вызовы методов, используемых в этом кратком руководстве. Вы определите эти параметры позже.
Project project = createProject(trainClient);
addTags(trainClient, project);
uploadImages(trainClient, project);
trainProject(trainClient, project);
publishIteration(trainClient, project);
testProject(predictor, project);
Объектная модель
Следующие классы и интерфейсы обрабатывают некоторые основные функции клиентской библиотеки пользовательского визуального распознавания Java.
| Имя | Описание |
|---|---|
| CustomVisionTrainingClient | Этот класс осуществляет создание, обучение и публикацию ваших моделей. |
| CustomVisionPredictionClient | Этот класс обрабатывает запросы моделей для прогнозирования классификации изображений. |
| ImagePrediction | Этот класс определяет один прогноз на одном изображении. Он содержит свойства для идентификатора объекта и имени, а также оценки достоверности. |
Примеры кода
Эти фрагменты кода показывают, как выполнять следующие задачи с клиентской библиотекой Пользовательского визуального распознавания для Java:
- Проверка подлинности клиента
- Создание проекта пользовательского визуального распознавания
- Добавление тегов в проект
- Загрузка и добавление тегов к изображениям
- Обучение проекта
- Публикация текущей итерации
- Тестирование конечной точки прогнозирования
Проверка подлинности клиента
В вашем методе main инициализируйте клиентов для обучения и прогнозирования, используя вашу конечную точку и ключи.
// Authenticate
CustomVisionTrainingClient trainClient = CustomVisionTrainingManager
.authenticate(trainingEndpoint, trainingApiKey)
.withEndpoint(trainingEndpoint);
CustomVisionPredictionClient predictor = CustomVisionPredictionManager
.authenticate(predictionEndpoint, predictionApiKey)
.withEndpoint(predictionEndpoint);
Создание проекта Custom Vision
Следующий метод создает проект классификации изображений. Созданный проект появится на веб-сайте Пользовательского визуального распознавания , который вы посетили ранее. См. перегрузки метода CreateProject, чтобы указать другие параметры при создании проекта (описано в руководстве по созданию детектора в веб-портале Build a detector).
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;
}
Добавление тегов в проект
Этот метод определяет теги, на которые вы будете обучать модель.
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();
}
Загрузка изображений и добавление тегов
Сначала скачайте примеры образов для этого проекта. Сохраните содержимое папки sample Images на локальном устройстве.
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);
}
}
В предыдущем фрагменте кода используются две вспомогательные функции, которые извлекают изображения в виде потоков ресурсов и отправляют их в службу (вы можете отправить до 64 изображений в одном пакете).
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;
}
Обучить проект
Этот метод создает первую итерацию обучения в проекте. Делает запрос к службе до завершения обучения.
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());
}
Публикация текущей итерации
Этот метод делает текущую итерацию модели доступной для запроса. Имя модели можно использовать в качестве ссылки для отправки запросов на прогнозирование. Для этого необходимо ввести собственное значение predictionResourceId. Идентификатор ресурса прогнозирования можно найти на вкладке Properties на портале Azure, указанном как Resource ID.
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);
}
Тестирование конечной точки прогнозирования
Этот метод загружает тестовый образ, запрашивает конечную точку модели и выводит данные прогнозирования в консоль.
// 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));
}
}
Запуск приложения
Вы можете создать приложение с помощью следующих способов:
gradle build
Запустите приложение командой gradle run.
gradle run
Очистка ресурсов
Если вы хотите очистить и удалить подписку Azure AI services, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все другие ресурсы, связанные с ним.
Если вы хотите реализовать собственный проект классификации изображений (или попробовать проект обнаружения объектов вместо этого), может потребоваться удалить проект идентификации дерева из этого примера. Бесплатная подписка позволяет использовать два проекта Custom Vision.
На веб-сайте Custom Vision перейдите к разделу Проекты и выберите корзину в разделе "Мой новый проект".
Связанное содержимое
Теперь вы узнали, как каждый шаг процесса обнаружения объектов можно выполнить в коде. В этом примере выполняется одна итерация обучения, но часто необходимо обучать и тестировать модель несколько раз, чтобы сделать ее более точной.
- Что такое Пользовательское визуальное распознавание?
- Исходный код этого примера можно найти в GitHub
В этом руководстве приведены инструкции и пример кода, помогающие приступить к работе с клиентской библиотекой Пользовательского визуального распознавания для Node.js для создания модели классификации изображений. Вы можете создать проект, добавить теги, обучить проект и использовать URL-адрес конечной точки прогнозирования проекта для программного тестирования. Используйте этот пример в качестве шаблона для создания собственного приложения распознавания изображений.
Примечание
Если вы хотите создать и обучить модель классификации без написания кода, ознакомьтесь с рекомендациями на основе браузера.
Используйте клиентскую библиотеку Custom Vision для Node.js:
- Создание проекта пользовательского визуального распознавания
- Добавление тегов в проект
- Загрузка изображений и добавление тегов
- Обучить проект
- Публикация текущей итерации
- Тестирование конечной точки прогнозирования
Справочная документация по (обучение) и (прогнозирование) | Пакет (npm) для (обучение) и (прогнозирование) | Примеры
Необходимые условия
- Подписка Azure. Вы можете создать его бесплатно.
- Текущая версия Node.js.
- После получения подписки Azure создайте ресурс Custom Vision на портале Azure, чтобы создать ресурс обучения и прогнозирования.
- Вы можете использовать бесплатный тарифный план (
F0), чтобы попробовать службу, а затем перейти на платный план для рабочих нужд.
- Вы можете использовать бесплатный тарифный план (
Создание переменных среды
В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.
Перейдите на портал Azure. Если ресурсы пользовательского визуального распознавания, созданные в разделе предварительных требований , развернуты успешно, нажмите кнопку "Перейти к ресурсу " в разделе "Дальнейшие действия". Ключи и конечные точки можно найти на страницах ключей и конечных точек ресурсов в разделе "Управление ресурсами". Вам потребуется получить ключи для ресурса обучения и ресурса прогнозирования, а также конечных точек API.
Идентификатор ресурса прогнозирования можно найти на вкладке Properties на портале Azure, указанном как Resource ID.
Совет
Вы также используете https://www.customvision.ai для получения этих значений. После входа щелкните значок "Параметры " в правом верхнем углу. На страницах параметров можно просмотреть все ключи, идентификатор ресурса и конечные точки.
Чтобы задать переменные среды, откройте окно консоли и следуйте инструкциям для вашей операционной системы и среды разработки.
- Чтобы задать
VISION_TRAINING KEYпеременную среды, замените<your-training-key>одним из ключей для учебного ресурса. - Чтобы задать переменную среды, замените
VISION_TRAINING_ENDPOINTна конечную точку<your-training-endpoint>для вашего ресурса обучения. - Чтобы задать
VISION_PREDICTION_KEYпеременную среды, замените<your-prediction-key>одним из ключей для ресурса прогнозирования. - Чтобы задать переменную окружения
VISION_PREDICTION_ENDPOINT, замените ее конечной точкой<your-prediction-endpoint>для ресурса прогнозирования. - Чтобы задать переменную среды
VISION_PREDICTION_RESOURCE_ID, замените<your-resource-id>на идентификатор ресурса для прогнозирования.
Важно
Мы рекомендуем Microsoft Entra ID проверку подлинности с помощью управляемых удостоверений для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничивайте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Для получения дополнительной информации о безопасном использовании ключей API в ваших приложениях, см. ключи API в Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.
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>
После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые считывают переменные среды, включая окно консоли.
Настройка
Создание нового приложения Node.js
В окне консоли (например, cmd, PowerShell или Bash) создайте новый каталог для приложения и перейдите к нему.
mkdir myapp && cd myapp
Выполните команду npm init, чтобы создать приложение Node.js с файлом package.json. Нажмите клавишу ВВОД несколько раз, чтобы завершить процесс.
npm init
Установка клиентской библиотеки
Чтобы написать приложение анализа изображений с помощью пользовательского визуального распознавания для Node.js, вам потребуется пакеты npm пользовательского визуального распознавания. Чтобы установить их, выполните следующую команду в PowerShell:
npm install @azure/cognitiveservices-customvision-training
npm install @azure/cognitiveservices-customvision-prediction
Файл приложения package.json обновляется с помощью зависимостей.
Создайте файл с именем index.js и импортируйте следующие библиотеки:
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");
Совет
Хотите одновременно просмотреть весь файл кода быстрого запуска? Его можно найти на сайте GitHub, который содержит примеры кода в этом кратком руководстве.
Создайте переменные для конечной точки Azure и ключей ресурса.
// 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"];
Кроме того, добавьте поля для имени проекта и параметра времени ожидания для асинхронных вызовов.
const publishIterationName = "classifyModel";
const setTimeoutPromise = util.promisify(setTimeout);
Объектная модель
| Имя | Описание |
|---|---|
| TrainingAPIClient | Этот класс осуществляет создание, обучение и публикацию ваших моделей. |
| PredictionAPIClient | Этот класс обрабатывает запросы моделей для прогнозирования классификации изображений. |
| Прогноз | Этот интерфейс определяет один прогноз на одном изображении. Он содержит свойства для идентификатора объекта и имени, а также оценки достоверности. |
Примеры кода
Эти фрагменты кода показывают, как выполнять следующие задачи с клиентской библиотекой Пользовательского визуального распознавания для JavaScript:
- Проверка подлинности клиента
- Создание проекта пользовательского визуального распознавания
- Добавление тегов в проект
- Загрузка и добавление тегов к изображениям
- Обучение проекта
- Публикация текущей итерации
- Тестирование конечной точки прогнозирования
Проверка подлинности клиента
Создайте экземпляры клиентских объектов, используя конечную точку и ключ. Создайте объект ApiKeyCredentials с вашим ключом и используйте его с вашей конечной точкой для создания объектов TrainingAPIClient и PredictionAPIClient.
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);
Создание проекта пользовательского визуального распознавания
Создайте новую функцию для выполнения всех вызовов функций Custom Vision. Добавьте следующий код, чтобы создать проект службы пользовательского визуального распознавания.
(async () => {
console.log("Creating project...");
const sampleProject = await trainer.createProject("Sample Project");
Добавление тегов в проект
Чтобы создать теги классификации в проекте, добавьте следующий код в функцию:
const hemlockTag = await trainer.createTag(sampleProject.id, "Hemlock");
const cherryTag = await trainer.createTag(sampleProject.id, "Japanese Cherry");
Загрузка изображений и добавление тегов
Сначала скачайте примеры образов для этого проекта. Сохраните содержимое папки sample Images на локальном устройстве.
Чтобы добавить примеры изображений в проект, вставьте следующий код после создания тега. Этот код отправляет каждое изображение с соответствующим тегом.
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);
Важно
Вам необходимо изменить путь к изображениям (sampleDataRoot) в соответствии с местоположением, откуда вы загрузили репозиторий примеров Python SDK для средств Foundry.
Обучить проект
Этот код создает первую итерацию модели прогнозирования.
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);
Публикация текущей итерации
Этот код публикует обученную итерацию в конечной точке прогнозирования. Имя, заданное опубликованной итерации, можно использовать для отправки запросов прогнозирования. Итерация недоступна в конечной точке прогнозирования, пока она не будет опубликована.
// Publish the iteration to the end point
await trainer.publishIteration(sampleProject.id, trainingIteration.id, publishIterationName, predictionResourceId);
Тестирование конечной точки прогнозирования
Чтобы отправить изображение в конечную точку прогнозирования и получить прогноз, добавьте следующий код в функцию.
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)}%`);
});
Затем закройте функцию Пользовательского визуального распознавания и вызовите ее.
})()
Запуск приложения
Запустите приложение с помощью команды node в вашем файле быстрого запуска.
node index.js
Выходные данные приложения должны совпадать со следующим текстом:
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%
Затем можно убедиться, что тестовый образ (найденный в <примереDataRoot>/Test/) помечен соответствующим образом. Вы также можете вернуться на веб-сайт Пользовательского визуального распознавания и просмотреть текущее состояние созданного проекта.
Если вы хотите реализовать собственный проект классификации изображений (или попробовать проект обнаружения объектов вместо этого), может потребоваться удалить проект идентификации дерева из этого примера. Бесплатная подписка позволяет использовать два проекта Custom Vision.
На веб-сайте Custom Vision перейдите к разделу Проекты и выберите корзину в разделе "Мой новый проект".
Связанное содержимое
В этом руководстве показано, как можно выполнить каждый шаг процесса обнаружения объектов в коде. В этом примере выполняется одна итерация обучения, но часто необходимо обучать и тестировать модель несколько раз, чтобы сделать ее более точной.
- Что такое Пользовательское визуальное распознавание?
- Исходный код этого примера можно найти в GitHub
- справочная документация SDK (обучение)
- справочная документация SDK (прогноз)
Начало работы с клиентской библиотекой Custom Vision для Python. Выполните следующие действия, чтобы установить пакет и попробовать пример кода для создания модели классификации изображений. Вы создадите проект, добавьте теги, обучите проект и используйте URL-адрес конечной точки прогнозирования проекта для программного тестирования. Используйте этот пример в качестве шаблона для создания собственного приложения распознавания изображений.
Примечание
Если вы хотите создать и обучить модель классификации без написания кода, ознакомьтесь с рекомендациями на основе браузера.
Используйте клиентскую библиотеку Custom Vision для Python:
- Создание проекта пользовательского визуального распознавания
- Добавление тегов в проект
- Загрузка изображений и добавление тегов
- Обучить проект
- Публикация текущей итерации
- Тестирование конечной точки прогнозирования
Справочная документация | Исходный код библиотеки | Пакет (PyPI) | Примеры
Необходимые условия
- Подписка Azure. Вы можете создать его бесплатно.
-
Python 3.x.
- Установка Python должна содержать pip. Вы можете проверить, установлен ли pip, выполнив команду
pip --versionв командной строке. Получите pip, установив последнюю версию Python.
- Установка Python должна содержать pip. Вы можете проверить, установлен ли pip, выполнив команду
- После получения подписки Azure создайте ресурс Custom Vision на портале Azure, чтобы создать ресурс обучения и прогнозирования.
- Вы можете использовать бесплатный тарифный план (
F0), чтобы попробовать службу, а затем перейти на платный план для рабочих нужд.
- Вы можете использовать бесплатный тарифный план (
Создание переменных среды
В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором запущено приложение.
Перейдите на портал Azure. Если ресурсы пользовательского визуального распознавания, созданные в разделе предварительных требований , развернуты успешно, нажмите кнопку "Перейти к ресурсу " в разделе "Дальнейшие действия". Ключи и конечные точки можно найти на страницах ключей и конечных точек ресурсов в разделе "Управление ресурсами". Вам потребуется получить ключи для ресурса обучения и ресурса прогнозирования, а также конечных точек API.
Идентификатор ресурса прогнозирования можно найти на вкладке Properties на портале Azure, указанном как Resource ID.
Совет
Вы также используете https://www.customvision.ai для получения этих значений. После входа щелкните значок "Параметры " в правом верхнем углу. На страницах параметров можно просмотреть все ключи, идентификатор ресурса и конечные точки.
Чтобы задать переменные среды, откройте окно консоли и следуйте инструкциям для вашей операционной системы и среды разработки.
- Чтобы задать
VISION_TRAINING KEYпеременную среды, замените<your-training-key>одним из ключей для учебного ресурса. - Чтобы задать переменную среды, замените
VISION_TRAINING_ENDPOINTна конечную точку<your-training-endpoint>для вашего ресурса обучения. - Чтобы задать
VISION_PREDICTION_KEYпеременную среды, замените<your-prediction-key>одним из ключей для ресурса прогнозирования. - Чтобы задать переменную окружения
VISION_PREDICTION_ENDPOINT, замените ее конечной точкой<your-prediction-endpoint>для ресурса прогнозирования. - Чтобы задать переменную среды
VISION_PREDICTION_RESOURCE_ID, замените<your-resource-id>на идентификатор ресурса для прогнозирования.
Важно
Мы рекомендуем Microsoft Entra ID проверку подлинности с помощью управляемых удостоверений для ресурсов Azure, чтобы избежать хранения учетных данных в приложениях, работающих в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничивайте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Для получения дополнительной информации о безопасном использовании ключей API в ваших приложениях, см. ключи API в Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в разделе Аутентификация запросов к службам Azure AI.
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>
После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые считывают переменные среды, включая окно консоли.
Настройка
Установка клиентской библиотеки
Чтобы написать приложение анализа изображений с помощью Пользовательского визуального распознавания для Python, вам нужна клиентская библиотека Пользовательского визуального распознавания. После установки Python выполните следующую команду в PowerShell или окне консоли:
pip install azure-cognitiveservices-vision-customvision
Создание нового приложения Python
Создайте файл Python и импортируйте следующие библиотеки.
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
Совет
Хотите одновременно просмотреть весь файл кода быстрого запуска? Его можно найти на сайте GitHub, который содержит примеры кода в этом кратком руководстве.
Создайте переменные для конечной точки Azure и ключей ресурса.
# retrieve environment variables
ENDPOINT = os.environ["VISION_TRAINING_ENDPOINT"]
prediction_endpoint = os.environ["VISION_PREDICTION_ENDPOINT"]
training_key = os.environ["VISION_TRAINING_KEY"]
prediction_key = os.environ["VISION_PREDICTION_KEY"]
prediction_resource_id = os.environ["VISION_PREDICTION_RESOURCE_ID"]
Объектная модель
| Имя | Описание |
|---|---|
| CustomVisionTrainingClient | Этот класс осуществляет создание, обучение и публикацию ваших моделей. |
| CustomVisionPredictionClient | Этот класс обрабатывает запросы моделей для прогнозирования классификации изображений. |
| ImagePrediction | Этот класс определяет прогнозирование одного объекта на одном изображении. Он включает свойства для идентификатора объекта и имени, расположения ограничивающей рамки объекта и оценки уверенности. |
Примеры кода
Эти фрагменты кода показывают, как выполнить следующие действия с клиентской библиотекой Пользовательского визуального распознавания для Python:
- Проверка подлинности клиента
- Создание проекта пользовательского визуального распознавания
- Добавление тегов в проект
- Загрузка и добавление тегов к изображениям
- Обучение проекта
- Публикация текущей итерации
- Тестирование конечной точки прогнозирования
Проверка подлинности клиента
Создайте экземпляр клиента обучения и прогнозирования с помощью конечной точки и ключей. Создайте объекты с вашими ключами и используйте их с вашей конечной точкой, чтобы создать объект ApiKeyServiceClientCredentials и объект CustomVisionPredictionClient.
credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(prediction_endpoint, prediction_credentials)
Создание проекта пользовательского визуального распознавания
Добавьте следующий код в скрипт, чтобы создать проект службы пользовательского визуального распознавания.
См. метод create_project , чтобы указать другие параметры при создании проекта (описано в руководстве по созданию классификатора веб-портала).
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)
Добавление тегов в проект
Чтобы добавить теги классификации в проект, добавьте следующий код:
# Make two tags in the new project
hemlock_tag = trainer.create_tag(project.id, "Hemlock")
cherry_tag = trainer.create_tag(project.id, "Japanese Cherry")
Загрузка изображений и добавление тегов
Сначала скачайте примеры образов для этого проекта. Сохраните содержимое папки sample Images на локальном устройстве.
Чтобы добавить примеры изображений в проект, вставьте следующий код после создания тега. Этот код отправляет каждое изображение с соответствующим тегом. Вы можете отправлять до 64 образов в одном пакете.
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)
Примечание
Необходимо изменить путь к изображениям в зависимости от того, где вы загрузили репозиторий образцов средств Foundry Tools Python SDK.
Обучить проект
Этот код создает первую итерацию модели прогнозирования.
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)
Совет
Обучение с выбранными тегами
По желанию можно обучать только подмножество ваших примененных тегов. Вы можете сделать это, если вы еще не применили достаточно определенных тегов, но у вас достаточно других. В вызове train_project задайте необязательный параметр selected_tags списку строк идентификаторов тегов, которые вы хотите использовать. Модель будет обучаться распознавать только теги в этом списке.
Публикация текущей итерации
Итерация недоступна в конечной точке прогнозирования, пока она не будет опубликована. Следующий код делает текущую итерацию модели доступной для запроса.
# 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!")
Тестирование конечной точки прогнозирования
Чтобы отправить изображение в конечную точку прогнозирования и получить прогноз, добавьте следующий код в конец файла:
# 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(prediction_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))
Запуск приложения
Запустите приложение с помощью следующей команды:
python CustomVisionQuickstart.py
Выходные данные приложения должны совпадать со следующим текстом:
Creating project...
Adding images...
Training...
Training status: Training
Training status: Completed
Done!
Hemlock: 93.53%
Japanese Cherry: 0.01%
Затем можно убедиться, что тестовый образ (найденный в <base_image_location>/images/Test/) помечен соответствующим образом. Вы также можете вернуться на веб-сайт Пользовательского визуального распознавания и просмотреть текущее состояние созданного проекта.
Очистка ресурсов
Если вы хотите реализовать собственный проект классификации изображений (или попробовать проект обнаружения объектов вместо этого), может потребоваться удалить проект идентификации дерева из этого примера. Бесплатная подписка позволяет использовать два проекта Custom Vision.
На веб-сайте Custom Vision перейдите к разделу Проекты и выберите корзину в разделе "Мой новый проект".
Связанное содержимое
Теперь вы узнали, как каждый шаг процесса классификации изображений можно выполнить в коде. В этом примере выполняется одна итерация обучения, но часто необходимо обучать и тестировать модель несколько раз, чтобы сделать ее более точной.
- Что такое Пользовательское визуальное распознавание?
- Исходный код этого примера можно найти в GitHub
- Справочная документация по пакету SDK
Начните работу с REST API Custom Vision. Выполните следующие действия, чтобы вызвать API и создать модель классификации изображений. Вы создадите проект, добавьте теги, обучите проект и используйте URL-адрес конечной точки прогнозирования проекта для программного тестирования. Используйте этот пример в качестве шаблона для создания собственного приложения распознавания изображений.
Примечание
Custom Vision проще всего использовать через клиентскую библиотеку SDK или через браузерный интерфейс.
Используйте клиентскую библиотеку Custom Vision для REST API:
- Создание проекта пользовательского визуального распознавания
- Добавление тегов в проект
- Загрузка изображений и добавление тегов
- Обучить проект
- Публикация текущей итерации
- Тестирование конечной точки прогнозирования
Необходимые условия
- Подписка Azure. Вы можете создать его бесплатно.
- После получения подписки Azure создайте ресурс Custom Vision на портале Azure, чтобы создать ресурс обучения и прогнозирования.
- Вам потребуется ключ и конечная точка из создаваемых вами ресурсов, чтобы подключить приложение к Custom Vision. Вы будете вставлять ключ и адрес конечной точки в код позже в кратком руководстве.
- Вы можете использовать бесплатный тарифный план (
F0), чтобы попробовать службу, а затем перейти на платный план для рабочих нужд.
- PowerShell версии 6.0+ или аналогичное приложение командной строки.
Создание проекта пользовательского визуального распознавания
Для создания проекта классификации изображений вы будете использовать следующую команду. Созданный проект будет отображаться на веб-сайте Пользовательского визуального распознавания.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects?name={name}"
Скопируйте команду в текстовый редактор и внесите следующие изменения:
- Замените
{subscription key}допустимым ключом. - Замените
{endpoint}на конечную точку, которая соответствует вашему ключу.Примечание
Новые ресурсы, созданные после 1 июля 2019 г., будут использовать пользовательские имена поддомена. Дополнительные сведения и полный список региональных конечных точек см. в разделе "Пользовательские имена поддомена" для средств Foundry.
- Замените
{name}именем проекта. - При необходимости задайте другие параметры URL-адреса, чтобы настроить тип модели, используемой проектом. Параметры см. в API Create Project.
Появится ответ JSON, как показано в следующем примере. Сохраните "id" значение проекта в временном расположении.
{
"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"
}
Добавление тегов в проект
Используйте следующую команду, чтобы определить теги, на которые вы будете обучать модель.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/tags?name={name}"
- Снова вставьте собственный ключ и URL-адрес конечной точки.
- Замените
{projectId}собственным идентификатором проекта. - Замените
{name}именем тега, который вы хотите использовать.
Повторите этот процесс для всех тегов, которые вы хотите использовать в проекте. Если вы используете приведенные примеры изображений, добавьте теги "Hemlock" и "Japanese Cherry".
Появится ответ JSON, как показано в следующем примере. Сохраните "id" значение каждого тега во временном месте.
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"type": "Regular",
"imageCount": 0
}
Загрузка изображений и добавление тегов
Затем скачайте примеры образов для этого проекта. Сохраните содержимое папки sample Images на локальном устройстве.
Используйте следующую команду, чтобы отправить изображения и применить теги; один раз для изображений "Хемлок" и отдельно для изображений "японской вишни". Дополнительные сведения см. в API Create Images From Data для получения дополнительных опций.
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}"
- Снова вставьте собственный ключ и URL-адрес конечной точки.
- Замените
{projectId}собственным идентификатором проекта. - Замените
{tagArray}идентификатором тега. - Затем заполните текст запроса двоичными данными изображений, которые нужно пометить.
Обучить проект
Этот метод обучает модель на отправленных вами помеченных изображениях и возвращает идентификатор текущей итерации проекта.
curl -v -X POST -H "Content-Type: application/json" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/train"
- Снова вставьте собственный ключ и URL-адрес конечной точки.
- Замените
{projectId}собственным идентификатором проекта. - Замените
{tagArray}идентификатором тега. - Затем заполните текст запроса двоичными данными изображений, которые нужно пометить.
- При необходимости используйте другие параметры URL-адреса. См. API Train Project для опций.
Совет
Обучение с выбранными тегами
По желанию можно обучать только подмножество ваших примененных тегов. Вы можете сделать это, если вы еще не применили достаточно определенных тегов, но у вас достаточно других. Добавьте необязательное содержимое JSON в текст запроса.
"selectedTags" Заполните массив идентификаторами тегов, которые вы хотите использовать.
{
"selectedTags": [
"00000000-0000-0000-0000-000000000000"
]
}
Ответ JSON содержит сведения о вашем обученном проекте, включая идентификатор итерации ("id"). Сохраните это значение для следующего шага.
{
"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"
}
Публикация текущей итерации
Этот метод делает текущую итерацию модели доступной для запроса. Имя возвращаемой модели используется в качестве ссылки для отправки запросов на прогнозирование.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- Снова вставьте собственный ключ и URL-адрес конечной точки.
- Замените
{projectId}собственным идентификатором проекта. - Замените
{iterationId}на идентификатор, который был возвращен на предыдущем шаге. - Замените
{publishedName}именем, которым вы хотите назначить модель прогнозирования. - Замените
{predictionId}собственным идентификатором ресурса прогнозирования. Идентификатор ресурса прогнозирования можно найти на вкладке Properties на портале Azure, указанном как Resource ID. - При необходимости используйте другие параметры URL-адреса. См. API Публикация итерации.
Тестирование конечной точки прогнозирования
Наконец, используйте эту команду для тестирования обученной модели, отправив новый образ для него для классификации с тегами. Вы можете использовать изображение в папке Test среди образцов файлов, которые вы скачали ранее.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- Снова вставьте собственный ключ и URL-адрес конечной точки.
- Замените
{projectId}собственным идентификатором проекта. - Замените
{publishedName}на имя, которое вы использовали на предыдущем шаге. - Добавьте двоичные данные локального образа в текст запроса.
- При необходимости используйте другие параметры URL-адреса. См. API классификации изображений .
Возвращенный ответ JSON перечисляет каждый из тегов, которые модель применила к вашему изображению, а также вероятностные показатели для каждого тега.
{
"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"
}
]
}
Если вы хотите реализовать собственный проект классификации изображений (или попробовать проект обнаружения объектов вместо этого), может потребоваться удалить проект идентификации дерева из этого примера. Бесплатная подписка позволяет использовать два проекта Custom Vision.
На веб-сайте Custom Vision перейдите к разделу Проекты и выберите корзину в разделе "Мой новый проект".
Связанное содержимое
Теперь вы выполнили каждый шаг процесса классификации изображений с помощью REST API. В этом примере выполняется одна итерация обучения, но часто необходимо обучать и тестировать модель несколько раз, чтобы сделать ее более точной.