

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Detección de objetos - MXNet
<a name="object-detection"></a>

El MXNet algoritmo Amazon SageMaker AI Object Detection detecta y clasifica los objetos en las imágenes mediante una única red neuronal profunda. Es un algoritmo de aprendizaje supervisado que toma como entrada e identifica todas las instancias de objetos dentro de la escena de una imagen. El objeto es categorizado en una de las clases en una colección especificada con una puntuación de confianza que pertenece a la clase. Su ubicación y escala en la imagen se indican con un cuadro delimitador rectangular. Utiliza el marco [Single Shot Multibox Detector (SSD)](https://arxiv.org/pdf/1512.02325.pdf) y es compatible con dos redes base: [VGG](https://arxiv.org/pdf/1409.1556.pdf) y. [ResNet](https://arxiv.org/pdf/1603.05027.pdf) La red se puede entrenar desde cero o con modelos previamente entrenados en el conjunto de datos. [ImageNet](http://www.image-net.org/)

**Topics**
+ [Interfaz de entrada/salida para el algoritmo de detección de objetos](#object-detection-inputoutput)
+ [Recomendación de instancias EC2 para el algoritmo de detección de objetos](#object-detection-instances)
+ [Cuadernos de ejemplo de detección de objetos](#object-detection-sample-notebooks)
+ [Cómo funciona la detección de objetos](algo-object-detection-tech-notes.md)
+ [Hiperparámetros de detección de objetos](object-detection-api-config.md)
+ [Ajuste de un modelo de detección de objetos](object-detection-tuning.md)
+ [Formatos de solicitud de detección de objeto y respuesta](object-detection-in-formats.md)

## Interfaz de entrada/salida para el algoritmo de detección de objetos
<a name="object-detection-inputoutput"></a>

El algoritmo de detección de objetos mediante SageMaker IA admite los tipos de contenido `application/x-recordio` RecordIO () e imagen (`image/png``image/jpeg`, y`application/x-image`) para el entrenamiento en modo archivo, y admite RecordIO (`application/x-recordio`) para el entrenamiento en modo vertical. Sin embargo también puede realizar la capacitación en modo de canalización mediante los archivos de imágenes (`image/png`, `image/jpeg` y `application/x-image`), sin necesidad de crear archivos RecordIO, mediante el formato de manifiesto aumentado. El formato de entrada recomendado para los algoritmos de detección de objetos de Amazon SageMaker AI es [Apache MXNet Recordio](https://mxnet.apache.org/api/architecture/note_data_loading). Sin embargo, también pueden utilizar imágenes sin procesar en formato .jpg o .png. El algoritmo solo admite `application/x-image` para la inferencia.

**nota**  
Para mantener una mejor interoperabilidad con los marcos de aprendizaje profundo existentes, esto difiere de los formatos de datos protobuf que suelen utilizar otros algoritmos de IA de Amazon SageMaker .

Consulte [Cuadernos de ejemplo de detección de objetos](#object-detection-sample-notebooks) para más información sobre formatos de datos.

### Capacitación con el formato RecordIO
<a name="object-detection-recordio-training"></a>

Si utiliza el formato RecordIO para la capacitación, especifique los canales de capacitación y validación como valores para el parámetro `InputDataConfig` de la solicitud [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). Especifique un archivo RecordIO (.rec) en el canal de capacitación y un archivo RecordIO en el canal de validación. Establezca el tipo de canal para ambos canales en `application/x-recordio`. Un ejemplo de cómo generar un archivo RecordIO se encuentra en el bloc de notas de muestras de detección de objetos. También puede utilizar las herramientas [MXNetde GluonCV](https://gluon-cv.mxnet.io/build/examples_datasets/recordio.html) para generar archivos Recordio para conjuntos de datos populares, como las [clases de objetos visuales PASCAL y los [objetos comunes](http://cocodataset.org/#home) en contexto](http://host.robots.ox.ac.uk/pascal/VOC/) (COCO).

### Capacitación con el formato de imagen
<a name="object-detection-image-training"></a>

Si utiliza el formato de imagen para la capacitación, especifique los canales `train`, `validation`, `train_annotation` y `validation_annotation` como valores para el parámetro `InputDataConfig` de la solicitud [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). Especifique los archivos de datos de imagen individuales (.jpg or .png) para los canales de capacitación y validación. Para los datos de comentario, puede utilizar el formato JSON. Especifique los archivos .json correspondientes en los canales `train_annotation` y `validation_annotation`. Establezca el tipo de contenido para los cuatro canales en `image/png` o `image/jpeg` en función del tipo de imagen. También puede utilizar el tipo de contenido `application/x-image` cuando su conjunto de datos contiene imágenes .jpg y .png. A continuación se muestra un ejemplo de un archivo .json.

```
{
   "file": "your_image_directory/sample_image1.jpg",
   "image_size": [
      {
         "width": 500,
         "height": 400,
         "depth": 3
      }
   ],
   "annotations": [
      {
         "class_id": 0,
         "left": 111,
         "top": 134,
         "width": 61,
         "height": 128
      },
      {
         "class_id": 0,
         "left": 161,
         "top": 250,
         "width": 79,
         "height": 143
      },
      {
         "class_id": 1,
         "left": 101,
         "top": 185,
         "width": 42,
         "height": 130
      }
   ],
   "categories": [
      {
         "class_id": 0,
         "name": "dog"
      },
      {
         "class_id": 1,
         "name": "cat"
      }
   ]
}
```

Cada imagen necesita un archivo.json para comentarios y el archivo.json debe tener el mismo nombre que la imagen correspondiente. El nombre del archivo .json anterior debe ser "sample\$1image1.json". Existen cuatro propiedades en el archivo .json de comentarios. La propiedad "file" especifica la ruta relativa del archivo de imagen. Por ejemplo, si tus imágenes de entrenamiento y los archivos.json correspondientes están almacenados en s3://*your\$1bucket*/train/sample\$1image y s3://*your\$1bucket*/train\$1annotation, especifica la ruta de tus canales train y train\$1annotation como s3://*your\$1bucket*/train y s3://*your\$1bucket*/train\$1annotation, respectivamente. 

En el archivo .json, la ruta relativa para una imagen denominada sample\$1image1.jpg debe ser sample\$1image/sample\$1image1.jpg. La propiedad `"image_size"` especifica las dimensiones de la imagen global. SageMaker El algoritmo de detección de objetos de IA actualmente solo admite imágenes de 3 canales. La propiedad `"annotations"` especifica las categorías y cuadros delimitadores para los objetos dentro de la imagen. Cada objeto se comenta con un `"class_id"` índice y con cuatro coordenadas del cuadro delimitador (`"left"`, `"top"`, `"width"`, `"height"`). Los `"left"` valores (coordenada x) y `"top"` (coordenada y) representan la esquina superior izquierda del cuadro delimitador. Los `"width"` valores (coordenada x) y `"height"` (coordenada y) representan las dimensiones del cuadro delimitador. El origen (0, 0) es la esquina superior izquierda de toda la imagen. Si tiene varios objetos dentro de una imagen, todos los comentarios deben incluirse en un solo archivo .json. La propiedad `"categories"` almacena el mapeo entre el índice de clase y el nombre de clase. Los índices de clase se deben numerar sucesivamente y la numeración debe comenzar por 0. La propiedad `"categories"` es opcional para el archivo .json de comentarios

### Capacitación con formato de imagen de manifiesto aumentado
<a name="object-detection-augmented-manifest-training"></a>

El formato de manifiesto aumentado le permite realizar la capacitación en modo de canalización mediante los archivos de imágenes sin necesidad de crear archivos RecordIO. Debe especificar los canales de capacitación y de validación como valores para el parámetro `InputDataConfig` de la solicitud [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). Cuando utilice el formato, es necesario generar un archivo de manifiesto de S3 que contenga la lista de imágenes y sus comentarios correspondientes. El formato del archivo de manifiesto debe tener el formato [líneas de JSON](http://jsonlines.org/) en el que cada línea representa una muestra. Las imágenes se especifican utilizando la etiqueta `'source-ref'` que apunta a la ubicación de S3 de la imagen. Los comentarios se proporcionan bajo el valor del parámetro `"AttributeNames"` tal y como se especifica en la solicitud [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). También puede contener metadatos adicionales en la etiqueta de `metadata` pero el algoritmo los omite. En el siguiente ejemplo, los `"AttributeNames` se encuentran en la lista `["source-ref", "bounding-box"]`:

```
{"source-ref": "s3://your_bucket/image1.jpg", "bounding-box":{"image_size":[{ "width": 500, "height": 400, "depth":3}], "annotations":[{"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 80, "height": 50}]}, "bounding-box-metadata":{"class-map":{"0": "dog", "5": "horse"}, "type": "groundtruth/object-detection"}}
{"source-ref": "s3://your_bucket/image2.jpg", "bounding-box":{"image_size":[{ "width": 400, "height": 300, "depth":3}], "annotations":[{"class_id": 1, "left": 100, "top": 120, "width": 43, "height": 78}]}, "bounding-box-metadata":{"class-map":{"1": "cat"}, "type": "groundtruth/object-detection"}}
```

El orden de los `"AttributeNames"` en los archivos de entrada importa a la hora de capacitar el algoritmo de detección de objetos. Acepta datos canalizados en un orden específico, con `image` primero, seguido de `annotations`. Por lo tanto, en este ejemplo, el AttributeNames «» aparece `"source-ref"` primero, seguido `"bounding-box"` de. Cuando se utiliza la detección de objetos con manifiesto aumentado, el valor del parámetro `RecordWrapperType` se debe establecer como `"RecordIO"`.

Para obtener más información sobre archivos de manifiesto aumentado, consulte [Archivos de manifiesto aumentados para trabajos de entrenamiento](augmented-manifest.md).

### Entrenamiento incremental
<a name="object-detection-incremental-training"></a>

También puedes iniciar el entrenamiento de un nuevo modelo con los artefactos de un modelo que hayas entrenado previamente con SageMaker IA. El entrenamiento incremental ahorra tiempo de entrenamiento cuando quieres entrenar un nuevo modelo con datos iguales o similares. SageMaker Los modelos de detección de objetos de IA solo se pueden combinar con otro modelo de detección de objetos integrado y entrenado en SageMaker IA.

Para utilizar un modelo capacitado previamente, en la solicitud [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html), especifique el `ChannelName` como el "modelo" en el parámetro `InputDataConfig`. Establezca `ContentType` para el canal de modelo en `application/x-sagemaker-model` Los hiperparámetros de entrada del nuevo modelo y del modelo capacitado previamente cargado al canal de modelos tienen que tener la misma configuración para los parámetros de entrada `base_network` y `num_classes`. Estos parámetros definen la arquitectura de red. Para el archivo de modelo previamente entrenado, utilice los artefactos del modelo comprimidos (en formato.tar.gz) generados por la IA. SageMaker Puede usar los formatos RecordIO o de imagen para los datos de entrada.

Para obtener más información sobre la capacitación incremental e instrucciones sobre cómo usarla, consulte [Utilice la formación incremental en Amazon SageMaker AI](incremental-training.md). 

## Recomendación de instancias EC2 para el algoritmo de detección de objetos
<a name="object-detection-instances"></a>

El algoritmo de detección de objetos es compatible con las familias de instancias de GPU P2, P3, G4dn y G5. Recomendamos utilizar instancias de GPU con más memoria para la capacitación con tamaños grandes de lotes. Puede ejecutar el algoritmo de detección de objetos en configuraciones de varias máquinas o varias GPU para el entrenamiento distribuido.

Para la inferencia, puede usar instancias CPU (como C5 y M5) e instancias GPU (como P3 y G4dn).

## Cuadernos de ejemplo de detección de objetos
<a name="object-detection-sample-notebooks"></a>

Para ver un ejemplo de cuaderno que muestra cómo utilizar el algoritmo de detección de objetos SageMaker mediante IA para entrenar y alojar un modelo en el 

Conjunto de datos de [Caltech Birds (CUB 200 2011)](http://www.vision.caltech.edu/datasets/cub_200_2011/) que utiliza el algoritmo Single Shot Multibox Detection for Bird Species. Consulte [Amazon SageMaker AI Object Detection for](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/object_detection_birds/object_detection_birds.html) Bird Species. Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas, que puede utilizar para ejecutar el ejemplo en IA, consulte. SageMaker [Instancias de Amazon SageMaker Notebook](nbi.md) Una vez que haya creado una instancia de bloc de notas y la haya abierto, seleccione la pestaña **Ejemplos de SageMaker IA** para ver una lista de todos los ejemplos de SageMaker IA. El bloc de notas de ejemplo de detección de objetos que utiliza el algoritmo de detección de objetos se encuentra en la sección **Introducción a los algoritmos de Amazon**. Para abrir un cuaderno, haga clic en la pestaña **Usar** y seleccione **Crear copia**.

Para obtener más información sobre el algoritmo Amazon SageMaker AI Object Detection, consulte las siguientes entradas de blog:
+ [Entrenar el modelo de detección de objetos de Amazon SageMaker AI y ejecutarlo AWS IoT Greengrass — Parte 1 de 3: Preparación de los datos de entrenamiento](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-1-of-3/)
+ [Entrenar el modelo de detección de objetos de Amazon SageMaker AI y ejecutarlo AWS IoT Greengrass — Parte 2 de 3: Entrenar un modelo de detección de objetos personalizado](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-2-of-3/)
+ [Entrenar el modelo de detección de objetos de Amazon SageMaker AI y ejecutarlo AWS IoT Greengrass : parte 3 de 3: Implementación perimetral](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-3-of-3/)

# Cómo funciona la detección de objetos
<a name="algo-object-detection-tech-notes"></a>

El algoritmo de detección de objetos identifica y localiza todas las instancias de objetos en una imagen de un conjunto de categorías de objetos. El algoritmo toma una imagen como entrada y genera la categoría a la que pertenece el objeto, junto con una puntuación de confianza que pertenece a la categoría. El algoritmo también predice la ubicación y escala de cada objeto con un cuadro delimitador rectangular. Amazon SageMaker AI Object Detection utiliza el algoritmo [Single Shot Multibox Detector (SSD)](https://arxiv.org/pdf/1512.02325.pdf) que toma como red base una red neuronal convolucional (CNN) previamente entrenada para tareas de clasificación. SSD utiliza la salida de capas intermedias como características para la detección. 

Varios CNNs , como el [VGG](https://arxiv.org/pdf/1409.1556.pdf), [ResNet](https://arxiv.org/pdf/1603.05027.pdf)han obtenido un gran rendimiento en la tarea de clasificación de imágenes. La detección de objetos en Amazon SageMaker AI es compatible con VGG-16 y ResNet -50 como red base para SSD. El algoritmo puede ser capacitado en modo de capacitación completa o en modo de aprendizaje de transferencia. En el modo de capacitación completa, la red base se inicializa con ponderaciones aleatorias y después se capacita con los datos de usuario. En el modo de aprendizaje de transferencia, las ponderaciones de la red base se cargan desde modelos capacitados previamente.

El algoritmo de detección de objetos utiliza operaciones de aumento de datos estándar, como, por ejemplo, flip, rescale y jittery sobre la marcha internamente para ayudar a evitar ajustes excesivos.

# Hiperparámetros de detección de objetos
<a name="object-detection-api-config"></a>

En la solicitud [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html), especifique el algoritmo de capacitación que desee utilizar. También puede especificar hiperparámetros específicos de algoritmo que se utilizan para ayudar a calcular los parámetros del modelo desde un conjunto de datos de capacitación. En la siguiente tabla se enumeran los hiperparámetros proporcionados por Amazon SageMaker AI para entrenar el algoritmo de detección de objetos. Para obtener más información sobre cómo funciona la capacitación de objetos, consulte [Cómo funciona la detección de objetos](algo-object-detection-tech-notes.md).


| Nombre del parámetro | Description (Descripción) | 
| --- | --- | 
| num\$1classes |  El número de clases de salida. Este parámetro define las dimensiones de la salida de red y normalmente se establece en el número de clases en el conjunto de datos. **Obligatorio** Valores válidos: número entero positivo  | 
| num\$1training\$1samples |  El número de ejemplos de capacitación en el conjunto de datos de entrada.  Si se produce una falta de coincidencia entre este valor y el número de muestras en el conjunto de capacitación, el comportamiento del parámetro `lr_scheduler_step` será indefinido y la precisión distribuida de la capacitación podrá verse afectada.  **Obligatorio** Valores válidos: número entero positivo  | 
| base\$1network |  La arquitectura de red base a utilizar. **Opcional** Valores válidos: "vgg-16" o "resnet-50' Valor predeterminado: 'vgg-16'  | 
| early\$1stopping |  `True` para utilizar lógica de detención temprana durante la capacitación. `False` para no utilizarla. **Opcional** Valores válidos: `True` o `False` Valor predeterminado: `False`  | 
| early\$1stopping\$1min\$1epochs |  El número mínimo de fechas de inicio que deben ejecutarse antes de que pueda invocarse la lógica de detención temprana. Se utiliza solo cuando `early_stopping` = `True`. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 10  | 
| early\$1stopping\$1patience |  El número de fechas de inicio que esperar antes de finalizar la capacitación si no se realiza ninguna mejora, tal como se define en el hiperparámetro `early_stopping_tolerance`, a la métrica relevante. Se utiliza solo cuando `early_stopping` = `True`. **Opcional** Valores válidos: número entero positivo Valor predeterminado: 5  | 
| early\$1stopping\$1tolerance |  El valor de tolerancia relativa que la mejora relativa en `validation:mAP`, la precisión media ponderada (mAP), es necesario para superar para evitar detención una temprana. Si la proporción de cambio en la mAP dividida por la mejor mAP anterior es inferior al conjunto de valor `early_stopping_tolerance`, la detención temprana considerará que no hay mejora. Se utiliza solo cuando `early_stopping` = `True`. **Opcional** Valores válidos: 0 ≤ número flotante ≤ 1 Valor predeterminado: 0,0  | 
| image\$1shape |  El tamaño de la imagen para imágenes de entrada. Reescalamos la imagen de entrada a una imagen cuadrada con este tamaño. Recomendamos utilizar 300 y 512 para un mejor rendimiento. **Opcional** Valores válidos: número entero positivo ≥300 Predeterminado: 300  | 
| epochs |  El número de fechas de inicio de capacitación.  **Opcional** Valores válidos: número entero positivo Valor predeterminado: 30  | 
| freeze\$1layer\$1pattern |  La expresión regular (regex) para congelar capas en la red base. Por ejemplo, si establecemos `freeze_layer_pattern` = `"^(conv1_\|conv2_).*"`, cualquier capa con un nombre que contenga `"conv1_"` o `"conv2_"` se congelará, lo que significa que las ponderaciones de estas capas no se actualizan durante la capacitación. Los nombres de capa se pueden encontrar en los archivos de símbolo de red [vgg16-symbol.json](http://data.mxnet.io/models/imagenet/vgg/vgg16-symbol.json ) y [resnet-50-symbol.json](http://data.mxnet.io/models/imagenet/resnet/50-layers/resnet-50-symbol.json). Congelar una capa significa que sus ponderaciones no se pueden modificar más. Esto puede reducir considerablemente el tiempo de capacitación a cambio de pequeñas pérdidas en precisión. Esta técnica se utiliza generalmente en capacitación de transferencia dónde las capas inferiores de la red básica no tienen que volverse a capacitar. **Opcional** Valores válidos: cadena Predeterminado: sin capas congeladas.  | 
| kv\$1store |  El modo de sincronización de actualización de ponderación usado para la capacitación distribuido. Las ponderaciones pueden actualizarse de forma sincrónica o asíncrona en las máquinas. Las actualizaciones sincrónicas suelen proporcionar una mejor precisión que las asincrónicas, pero pueden ser más lentas. Consulte el MXNet tutorial de [formación distribuida](https://mxnet.apache.org/api/faq/distributed_training) para obtener más información.  Este parámetro no es aplicable a la capacitación de una máquina.  **Opcional** Valores válidos: `'dist_sync'` o `'dist_async'` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/object-detection-api-config.html) Predeterminado: -  | 
| label\$1width |  La anchura de la etiqueta de relleno de fuerza que se utiliza para la sincronización entre la capacitación y los datos de validación. Por ejemplo, si una imagen de los datos contiene un máximo de 10 objetos y cada comentario del objeto se especifica con 5 números, [class\$1id, izquierda, parte superior, ancho, alto], el `label_width` no puede tener una longitud inferior a (10\$15 \$1 longitud de información del encabezado). La información del encabezado suele ser de longitud 2. Le recomendamos que utilice un `label_width` ligeramente mayor para la capacitación, como 60 en este ejemplo. **Opcional** Valores válidos: número entero positivo lo suficientemente grande como para admitir la mayor información de comentarios en los datos. Predeterminado: 350  | 
| learning\$1rate |  La tasa de aprendizaje inicial. **Opcional** Valores válidos: número flotante en (0, 1] Predeterminado: 0.001  | 
| lr\$1scheduler\$1factor |  La proporción para reducir la tasa de aprendizaje. Utilizado en combinación con el parámetro `lr_scheduler_step` definido como `lr_new` = `lr_old` \$1 `lr_scheduler_factor`. **Opcional** Valores válidos: número flotante en (0, 1) Predeterminado: 0.1  | 
| lr\$1scheduler\$1step |  Las fechas de inicio en las que reducir la tasa de aprendizaje. La tasa de aprendizaje se reduce en `lr_scheduler_factor` en las fechas de inicio (epochs) enumeradas en una cadena delimitada por comas: "epoch1, epoch2,...". Por ejemplo, si el valor se establece en "10, 20" y el `lr_scheduler_factor` se fija en 1/2, la tasa de aprendizaje será dividida a la mitad después de la décima fecha de inicio y de nuevo dividida a la mitad después de la vigésima fecha de inicio. **Opcional** Valores válidos: cadena Valor predeterminado: cadena vacía  | 
| mini\$1batch\$1size |  El tamaño del lote para la capacitación. En una configuración de varias GPU de una sola máquina, cada GPU administra muestras de capacitación `mini_batch_size`/`num_gpu`. Para la capacitación de varias máquinas en el modo `dist_sync`, el tamaño de lote real es `mini_batch_size`\$1número de máquinas. Un gran `mini_batch_size` normalmente conduce a una capacitación más rápida, pero puede provocar un problema de falta de memoria. El uso de la memoria está relacionado con `mini_batch_size`, `image_shape` y la `base_network` arquitectura. Por ejemplo, en una sola instancia p3.2xlarge, el mayor `mini_batch_size` sin un error de falta de memoria es de 32 con base\$1network establecido en "resnet-50" y un `image_shape` de 300. Con la misma instancia de base de datos, puede usar 64 como `mini_batch_size` con la red base `vgg-16` y un `image_shape` de 300. **Opcional** Valores válidos: número entero positivo Predeterminado: 32  | 
| momentum |  El impulso para `sgd`. No se tiene en cuenta para otros optimizadores. **Opcional** Valores válidos: número flotante en (0, 1] Predeterminado: 0.9  | 
| nms\$1threshold |  El umbral de supresión no máxima. **Opcional** Valores válidos: número flotante en (0, 1] Predeterminado: 0.45  | 
| optimizer |  Los tipos de optimizador. Para obtener más información sobre los valores del optimizador, consulta [MXNetla API](https://mxnet.apache.org/api/python/docs/api/). **Opcional** Valores válidos: ["sgd", "adam", "rmsprop", "adadelta"] Predeterminada: "sgd"  | 
| overlap\$1threshold |  La evaluación se solapa al umbral. **Opcional** Valores válidos: número flotante en (0, 1] Predeterminado: 0.5  | 
| use\$1pretrained\$1model |  Indica si usar un modelo capacitado previamente para capacitación. Si se establece en 1, se carga el modelo capacitado previamente con la arquitectura correspondiente y se utiliza para capacitación. De lo contrario, se realiza la capacitación de la red desde cero. **Opcional** Valores válidos: 0 o 1 Valor predeterminado: 1  | 
| weight\$1decay |  El coeficiente de decremento de ponderación para `sgd` y `rmsprop`. No se tiene en cuenta para otros optimizadores. **Opcional** Valores válidos: número flotante en (0, 1) Predeterminado: 0.0005  | 

# Ajuste de un modelo de detección de objetos
<a name="object-detection-tuning"></a>

El *ajuste de modelo automático*, también conocido como ajuste de hiperparámetros, encuentra la mejor versión de un modelo ejecutando muchas tareas que probar una serie de hiperparámetros en su conjunto de datos. Usted elige los hiperparámetros que pueden ajustarse, un rango de valores para cada uno de ellos y una métrica objetiva. Puede elegir la métrica objetiva de las métricas que el algoritmo computa. El ajuste de modelo automático busca los hiperparámetros elegidos para encontrar la combinación de valores que obtienen el modelo que optimiza la métrica objetiva.

Para obtener más información acerca del ajuste de modelos, consulte [Ajuste automático de modelos con IA SageMaker](automatic-model-tuning.md).

## Métricas calculadas por el algoritmo de detección de objetos
<a name="object-detection-metrics"></a>

El algoritmo de detección de objetos informa sobre una única métrica durante la capacitación: `validation:mAP`. Al ajustar un modelo, elija esta métrica como la métrica objetivo.


| Nombre de métrica | Description (Descripción) | Dirección de optimización | 
| --- | --- | --- | 
| validation:mAP |  Precisión media ponderada (mAP) calculada en el conjunto de validación.  |  Maximizar  | 



## Hiperparámetros de detección de objetos ajustables
<a name="object-detection-tunable-hyperparameters"></a>

Ajuste el modelo de detección de objetos de Amazon SageMaker AI con los siguientes hiperparámetros. Los hiperparámetros que tienen el mayor impacto sobre la métrica objetivo de detección de objetos son: `mini_batch_size`, `learning_rate` y `optimizer`.


| Nombre del parámetro | Tipo de parámetro | Intervalos recomendados | 
| --- | --- | --- | 
| learning\$1rate |  ContinuousParameterRange  |  MinValue: 1e-6,: 0.5 MaxValue  | 
| mini\$1batch\$1size |  IntegerParameterRanges  |  MinValue: 8, 64 MaxValue  | 
| momentum |  ContinuousParameterRange  |  MinValue: 0,0, MaxValue 0,999  | 
| optimizer |  CategoricalParameterRanges  |  ['sgd', 'adam', 'rmsprop', 'adadelta']  | 
| weight\$1decay |  ContinuousParameterRange  |  MinValue: 0,0, MaxValue 0,999  | 

# Formatos de solicitud de detección de objeto y respuesta
<a name="object-detection-in-formats"></a>

En la siguiente página se describen los formatos de solicitud y respuesta de inferencia para el MXNet modelo Amazon SageMaker AI Object Detection.

## Formato de las solicitudes
<a name="object-detection-json"></a>

Consulte un modelo de capacitación mediante el punto de enlace del modelo. El punto de enlace acepta formatos de imagen.jpg y .png con `image/jpeg` y tipos de `image/png` contenido.

## Formatos de respuesta
<a name="object-detection-recordio"></a>

La respuesta es el índice de clase con una puntuación de confianza y las coordenadas del cuadro delimitador para todos los objetos dentro de la imagen codificados en formato JSON. A continuación se muestra un ejemplo de respuesta de un archivo .json:

```
{"prediction":[
  [4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],
  [0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475],
  [4.0, 0.32643985450267792, 0.3677481412887573, 0.034883320331573486, 0.6318609714508057, 0.5967587828636169],
  [8.0, 0.22552496790885925, 0.6152569651603699, 0.5722782611846924, 0.882301390171051, 0.8985623121261597],
  [3.0, 0.42260299175977707, 0.019305512309074402, 0.08386176824569702, 0.39093565940856934, 0.9574796557426453]
]}
```

Cada fila en este archivo .json contiene una matriz que representa un objeto detectado. Cada una de estas matrices objeto se compone de una lista de seis números. El primer número es la etiqueta de clase predicha. El segundo número es la puntuación de confianza asociada para la detección. Los últimos cuatro números representan las coordenadas del cuadro delimitador [xmin, ymin, xmax, ymax]. Estos índices de esquinas del cuadro delimitador de salida están normalizados por el tamaño global de la imagen. Tenga en cuenta que esta codificación es diferente a la que utiliza el formato .json de entrada. Por ejemplo, en el resultado de la detección de la primera entrada, 0,3088374733924866 es la coordenada izquierda (coordenada x de la esquina superior izquierda) del cuadro delimitador como relación del ancho de la imagen general, 0,07030484080314636 es la coordenada superior (coordenada y de la esquina superior izquierda) del cuadro delimitador como relación de la altura de la imagen general, 0,7110607028007507 es la coordenada derecha (coordenada x de esquina inferior derecha) del cuadro delimitador como relación del ancho de la imagen general y 0,9345266819000244 es la coordenada inferior (coordenada y de esquina inferior derecha) del cuadro delimitador como relación de la altura de la imagen general. 

Para evitar los resultados de detección poco fiables, es posible que desee filtrar los resultados de la detección con bajas puntuaciones de confianza. En el [cuaderno de muestra de detección de objetos](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/object_detection_birds/object_detection_birds.ipynb), incluimos ejemplos de scripts que utilizan un umbral para eliminar las detecciones de baja fiabilidad y trazar recuadros delimitadores en las imágenes originales.

Para transformar por lotes, la respuesta se encuentra en formato JSON, donde el formato es idéntico al formato JSON descrito anteriormente. Los resultados de detección de cada imagen se representan como un archivo JSON. Por ejemplo:

```
{"prediction": [[label_id, confidence_score, xmin, ymin, xmax, ymax], [label_id, confidence_score, xmin, ymin, xmax, ymax]]}
```

Para obtener más información capacitación e inferencia, consulte el [Cuadernos de ejemplo de detección de objetos](object-detection.md#object-detection-sample-notebooks).

## SALIDA: Formato de respuesta JSON
<a name="object-detection-output-json"></a>

accept: application/json;annotation=1

```
{
   "image_size": [
      {
         "width": 500,
         "height": 400,
         "depth": 3
      }
   ],
   "annotations": [
      {
         "class_id": 0,
         "score": 0.943,
         "left": 111,
         "top": 134,
         "width": 61,
         "height": 128
      },
      {
         "class_id": 0,
         "score": 0.0013,
         "left": 161,
         "top": 250,
         "width": 79,
         "height": 143
      },
      {
         "class_id": 1,
         "score": 0.0133,
         "left": 101,
         "top": 185,
         "width": 42,
         "height": 130
      }
   ]
}
```