Compartir a través de


Llamada a Prediction API

Después de entrenar el modelo, para probarlo mediante programación envíe imágenes al punto de conexión de Prediction API. En esta guía, aprenderá a llamar a Prediction API para puntuar una imagen. Conocerá las distintas maneras en que puede configurar el comportamiento de esta API para satisfacer sus necesidades.

Nota

En este documento, se muestra el uso de la biblioteca cliente de .NET para C# para enviar una imagen a la API de predicción. Para más información y ejemplos, consulte la referencia de Prediction API.

Configurar

Publicación de la iteración entrenada

En el sitio web de Custom Vision, seleccione el proyecto y, luego, seleccione la pestaña Rendimiento.

Para enviar imágenes a Prediction API, primero debe publicar la iteración para la predicción; para ello, seleccione Publicar y especifique un nombre para la iteración publicada. Esto hace que Prediction API de su recurso de Azure de Custom Vision pueda acceder a su modelo.

Captura de pantalla que muestra la pestaña de rendimiento, con un rectángulo rojo que rodea el botón Publicar.

Una vez que el modelo se publica correctamente, la etiqueta Publicado aparece junto a la iteración en la barra lateral izquierda y su nombre aparece en la descripción de la iteración.

Captura de pantalla de la pestaña de rendimiento, con un rectángulo rojo que rodea la etiqueta Publicado y el nombre de la iteración publicada.

Obtención de una clave de predicción y dirección URL

Una vez que se publica el modelo, puede recuperar la información necesaria mediante la selección de Dirección URL de predicción. Se abre un cuadro de diálogo con información para el uso de Prediction API, en el que se incluyen las opciones Dirección URL de predicción y Clave de predicción.

Captura de pantalla de la pestaña de rendimiento con un rectángulo rojo que rodea el botón de dirección URL de predicción.

Captura de pantalla de la pestaña de rendimiento con un rectángulo rojo que rodea la dirección URL de predicción para el uso de un archivo de imagen y el valor de la clave de predicción.

Envío de datos al servicio

En esta guía, se da por supuesto que ya ha construido un objeto CustomVisionPredictionClient , llamado predictionClient, con la clave de predicción y la dirección URL del punto de conexión de Custom Vision. Para obtener instrucciones sobre cómo configurar esta característica, siga uno de los inicios rápidos.

En esta guía, se usa una imagen local, por lo que debe descargar una imagen que quiera enviar al modelo entrenado. El código siguiente solicita al usuario que especifique una ruta de acceso local y obtiene la secuencia de bytes del archivo en esa ruta de acceso.

Console.Write("Enter image file path: ");
string imageFilePath = Console.ReadLine();
byte[] byteData = GetImageAsByteArray(imageFilePath);

Incluya el siguiente método auxiliar:

private static byte[] GetImageAsByteArray(string imageFilePath)
{
    FileStream fileStream = new FileStream(imageFilePath, FileMode.Open, FileAccess.Read);
    BinaryReader binaryReader = new BinaryReader(fileStream);
    return binaryReader.ReadBytes((int)fileStream.Length);
}

El método ClassifyImageAsync toma el identificador del proyecto y la imagen almacenada localmente, y puntúa la imagen según el modelo especificado.

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

Determinación de cómo se procesan los datos

Opcionalmente, puede configurar cómo realiza el servicio la operación de puntuación eligiendo métodos alternativos. Para más información, consulte el método CustomVisionPredictionClient.

Puede usar una versión no asincrónica del método anterior para simplificar, pero esto puede hacer que el programa se bloquee durante un período de tiempo apreciable.

Los métodos -WithNoStore requieren que el servicio no conserve la imagen de predicción una vez completada la predicción. Normalmente, el servicio conserva estas imágenes, por lo que tiene la opción de agregarlas como datos de entrenamiento para futuras iteraciones del modelo.

Los métodos -WithHttpMessages devuelven la respuesta HTTP sin procesar de la llamada API.

Obtención de resultados a partir del servicio

El servicio devuelve los resultados en forma de un objeto ImagePrediction . La propiedad Predictions contiene una lista de objetos PredictionModel, cada uno de los cuales representa la predicción de un solo objeto. Incluyen el nombre de la etiqueta y las coordenadas del rectángulo delimitador donde se detectó el objeto en la imagen. A continuación, la aplicación puede analizar estos datos para, por ejemplo, mostrar la imagen con los campos de objeto etiquetados en una pantalla.

Paso siguiente

En esta guía, ha aprendido a enviar imágenes a su clasificador o detector de imágenes personalizado y a recibir una respuesta mediante programación con el SDK de C#. A continuación, aprenda a realizar escenarios de un extremo a otro con C# o comience a usar un SDK de un lenguaje diferente.