Compartir a través de


Entrenamiento de un modelo de detección de objetos con TensorFlow

Ahora que hemos configurado TensorFlow, usaremos la arquitectura YOLO para entrenar el modelo de detección de objetos. YOLO es una red neuronal que predice los cuadros delimitadores y las probabilidades de clase a partir de una imagen en una sola evaluación. Los modelos YOLO pueden procesar más de 60 fotogramas por segundo, lo que lo convierte en una excelente arquitectura para detectar objetos en vídeos. Puede encontrar más información sobre cómo funciona YOLO aquí.

Uso de YOLO

En primer lugar, descargue este archivo de ejemplo de YOLO, que contiene scripts auxiliares para empezar.

Al usar YOLO, tenemos tres opciones:

  1. Utilice pesos de modelo entrenados previamente para YOLO. El modelo entrenado previamente se ha entrenado en un conjunto de datos grande con 80 clases (categorías) para objetos cotidianos como autobús, persona, sándwich, etc. Si desea descargar un modelo YOLO entrenado previamente en formato ONNX, puede hacerlo aquí. A continuación, puede continuar con la fase final de este tutorial para aprender a integrar ese modelo en una aplicación.

  2. Implemente el aprendizaje de transferencia con un conjunto de datos personalizado. El aprendizaje de transferencia es un método para usar un modelo entrenado como punto de partida para entrenar un modelo resolviendo una tarea diferente pero relacionada. En este tutorial se usarán las ponderaciones YOLO previamente entrenadas con 80 clases, para entrenar un modelo con 20 clases con el Conjunto de datos VOC. Si desea crear su propio conjunto de datos con clases personalizadas, consulte las instrucciones aquí.

  3. Entrena YOLO desde cero. Esta técnica no se recomienda, ya que es muy difícil converger. El artículo original de YOLO entrenó a Darknet en ImageNet (que contiene cientos de miles de fotos) antes de entrenar también toda la red.

Implemente el aprendizaje de transferencia en pesos de YOLO previamente entrenados en el conjunto de datos de VOC:

Vamos a continuar con la segunda opción e implementar el aprendizaje de transferencia con los pasos siguientes.

  1. En una ventana de miniconda, vaya al directorio de ejemplo yolo y ejecute el siguiente comando para instalar todos los paquetes pip necesarios para YOLO.

pip install -r requirements.txt

  1. Ejecute el script de instalación para descargar los datos y los pesos entrenados previamente.

python setup.py

  1. Transforme el conjunto de datos. Consulte tools/voc2012.py para la implementación: este formato se basa en la API de detección de objetos tensorflow. Muchos campos no son obligatorios, pero aquí se han rellenado para la compatibilidad con la API oficial.
python tools/voc2012.py \
  --data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
  --split train \
  --output_file ./data/voc2012_train.tfrecord

python tools/voc2012.py \
  --data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
  --split val \
  --output_file ./data/voc2012_val.tfrecord
  1. Entrene el modelo. Ejecute los comandos siguientes:
python convert.py
python detect.py --image ./data/meme.jpg # Sanity check

python train.py \
	--dataset ./data/voc2012_train.tfrecord \
	--val_dataset ./data/voc2012_val.tfrecord \
	--classes ./data/voc2012.names \
	--num_classes 20 \
	--mode fit --transfer darknet \
	--batch_size 16 \
	--epochs 10 \
	--weights ./checkpoints/yolov3.tf \
	--weights_num_classes 80 

Ahora ya tiene un modelo entrenado de nuevo con 20 clases, listo para su uso.

Pasos siguientes

Ahora que hemos creado un modelo de TensorFlow, es necesario convertirlo en formato ONNX para usarlo con las API de Windows Machine Learning.