Implementación de BlendMask en PyTorch

Introducción

Este artículo está pendiente de actualización.

Detectron2: Entrenamiento y Despliegue de Modelos

1. Preparación del conjunto de datos

1.1 Descarga del conjunto de datos público COCO

Visite la página oficial de descargas: https://cocodataset.org/#download

Las imágenes corresponden al conjunto de datos, mientras que las anotaciones están almacenadas en formato JSON. El API de COCO permite acceder y procesar todas las anotaciones para su preprocesamiento.

En entornos de servidor Linux, podemos utilizar wget con los enlaces de descarga:

wget http://images.cocodataset.org/zips/train2014.zip  

Nota: La red puede ser inestable en ocasiones, pero la descarga suele ser rápida.

De manera similar, descargue los conjuntos de prueba y validación. A continuación se presentan los enlaces comunes (versión 2017):

Conjunto de datos Enlace de descarga
Imágenes de entrenamiento 2017 [118K/18GB] http://images.cocodataset.org/zips/train2017.zip
Imágenes de validación 2017 [5K/1GB] http://images.cocodataset.org/zips/val2017.zip
Imágenes de prueba 2017 [41K/6GB] http://images.cocodataset.org/zips/test2017.zip
Anotaciones de entrenamiento/valiadción 2017 [241MB] http://images.cocodataset.org/annotations/annotations_trainval2017.zip

1.2 Conjuntos de datos personalizados

Para utilizar datos propios, generalmente es necesario realizar anotaciones manualmente. Para segmentación de objetos y semántica, se requieren máscaras (mask), que se generan como archivos de polígonos. La herramienta recomendada es labelme.

El proceso de instalación de labelme se omite aquí.

Tras la anotación con labelme, se generarán archivos JSON propios. Para el entrenamiento del modelo, estos deben convertirse al formato COCO. Utilice labelme2coco.py para transformar los archivos JSON de labelme al formato de COCO. Este script necesita modificar las rutas de las imágenes y los directorios de almacenamiento.

  1. Configuración del entorno de entrenamiento

2.1Configuración y verificación de Detectron2

Cree un entorno virtual con anaconda, instale Python, detectron2, pytorch y otras dependencias necesarias (prestando atención a las versiones):

# Entorno con anaconda
conda create --name=detectron2 python=3.7
conda activate detectron2
# opencv-python
pip install opencv-python==4.5.4.58 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
# Instalación precompilada de Detectron2 (solo Linux)
python -m pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu113/torch1.10/index.html -i http://pypi.douban.com/simple/
# pytorch 1.10.0 para CUDA 11.3
conda install pytorch==1.10.0 torchvision==0.11.1 torchaudio==0.10.0 cudatoolkit=11.3 -c pytorch -c conda-forge

2.2 Configuración y verificación de AdelaiDet

AdelaiDet es una caja de herramientas de código abierto para múltiples tareas de reconocimiento a nivel de instancia, construida sobre Detectron2.

2.2.1 Descarga y compilación de AdelaiDet

Ejecute los siguientes comandos para descargar y compilar AdelaiDet:

git clone https://github.com/aim-uofa/AdelaiDet.git
cd AdelaiDet
python setup.py build develop

Durante la compilación de AdelaiDet, puede aparecer el siguiente error:

El registro de errores indica que el problema se encuentra en:

Se está comparando la versión de CUDA Runtime API de nvcc con la versión de torch.version.cuda.

Solución:

Verifique la versión actual de nvcc:

which nvcc 

Verifique la versión instalada de nvcc (en la ruta /usr/local/):

 username@mulan-ai:~$ cat /usr/local/
bin/       cuda/      cuda-11/   cuda-11.4/ doc/       etc/       games/     include/   lib/       man/      sbin/      share/     src/  

Modifique las variables de entorno del usuario actual:

  • Edite el archivo ~/.bashrc:
vim ~/.bashrc

  • Añada la ruta de la versión específica:
export PATH=/usr/local/cuda-11.4/bin:$PATH

  • Actualice las variables de entorno:
source ~/.bashrc

Al ejecutar de nuevo, el error desaparece y la compilación finaliza correctamente.

2.2.2 Inferencia con Modelos Preentrenados

  1. Seleccione un modelo y su archivo de configuración, por ejemplo, fcos_R_50_1x.yaml.
  2. Descargue el modelo:
wget https://cloudstor.aarnet.edu.au/plus/s/glqFc13cCoEyHYy/download -O fcos_R_50_1x.pth

  1. Ejecute la demostración con:
python demo/demo.py --config-file configs/FCOS-Detection/R_50_1x.yaml --input input1.jpg --opts MODEL.WEIGHTS fcos_R_50_1x.pth

Entrenamiento de Modelos Personalizados

Para entrenra un modelo con "train_net.py", primero configure los conjuntos de datos correspondientes siguiendo datasets/README.md (ya cubeirto en la primera sección), luego ejecute:

OMP_NUM_THREADS=1 python tools/train_net.py --config-file configs/BlendMask/R_50_1x.yaml --num-gpus 2 OUTPUT_DIR training_dir/blendmask_R_50_1x

Primero, descargue el modelo preentrenado:

wget https://cloudstor.aarnet.edu.au/plus/s/glqFc13cCoEyHYy/download -O blendmask_R_50_1x.pth

Nota: Si no desea modificar las rutas en coco.py, puede crear un enlace simbólico del conjunto de datos COCO al directorio datasets actual para ahorrar espacio:

cd detectron2/datasets/ # Lo mismo aplica para AdelaiDet
ln -s xxx/coco .   # Modifique según su ruta específica

Etiquetas: PyTorch Detectron2 AdelaiDet Visión por Computadora segmentación

Publicado el 6-6 04:36