Tensorflow / código fuente de la biblioteca de modelos Deeplabv3 + implementación (dos) capacitación en el conjunto de datos PASCAL VOC2012


Configuración del entorno Deeplabv3 + ver el tutorial anterior: el entrenamiento del modelo de configuración del entorno se puede realizar después de la configuración del entorno, elijo entrenar en el conjunto de datos PASCAL VOC2012

1. Descarga el conjunto de datos

Ejecute el comando en ubuntu:

#From the tensorflow/models/research/deeplab/datasets directory.
  sh download_and_convert_voc2012.sh

Este comando se puede descargar y convertir al formato tfrecord. Cree una carpeta pascal_voc_seg en el directorio modelos / research / deeplab / datasets, la estructura de carpetas es la siguiente:
Inserte la descripción de la imagen aquí

2. Descarga el modelo previamente entrenado

Si no sabe qué modelo de preentrenamiento descargar, abra el script local_test_mobilenetv2.sh para echar un vistazo. Comencé a usar el modelo de preentrenamiento incorrecto, lo que resultó en errores de entrenamiento continuos.

mobilenetv2_coco_voc_trainaug

Después de la descarga, descomprímalo y guárdelo en el directorio local: / home / hy / software / models / research / deeplab / datasets / pascal_voc_seg / init_models (debe crearse manualmente)

3. Capacitación

Consulte las instrucciones de formación que se proporcionan en el script local_test_mobilenetv2.sh:

NUM_ITERATIONS=10
python "${WORK_DIR}"/train.py \
  --logtostderr \
  --train_split="trainval" \
  --model_variant="mobilenet_v2" \
  --output_stride=16 \
  --train_crop_size="513,513" \
  --train_batch_size=4 \
  --training_number_of_steps="${NUM_ITERATIONS}" \
  --fine_tune_batch_norm=true \
  --tf_initial_checkpoint="${INIT_FOLDER}/${CKPT_NAME}/model.ckpt-30000" \
  --train_logdir="${TRAIN_LOGDIR}" \
  --dataset_dir="${PASCAL_DATASET}"

Formato de parámetro del entrenamiento real:

# from models/research directory
python deeplab/train.py \
--logtostderr \
--train_split="train" \
--model_variant="mobilenet_v2" \
--output_stride=16 \
--train_crop_size="513,513" \ # 网上说内存不够时可调小为321,我没调也能正常训练完成
--train_batch_size=1 \
--training_number_of_steps=1000 \
--fine_tune_batch_norm=False \
--tf_initial_checkpoint="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/init_models/deeplabv3_mnv2_pascal_train_aug/model.ckpt-30000" \
--train_logdir="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/train" \
--dataset_dir="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/tfrecord"

Comprensión de parámetros

  • training_number_of_steps: el número de iteraciones de entrenamiento, aquí es solo una verificación, así que establezca el menor en 1000
  • train_crop_size: el tamaño de recorte de la imagen de entrenamiento, no hay cambios, las reglas cambiadas se mencionan en este artículo https://www.jianshu.com/p/1a07990705ee
    crop_size = output_stride * k + 1
  • train_batch_size: entrenamiento del tamaño del lote, debido a las condiciones del hardware, establecido en 1 fine_tune_batch_norm = False: si se debe usar batch_norm, porque el tamaño del lote es 1, por lo tanto, establézcalo en False
  • tf_initial_checkpoint: el punto de control inicial para el entrenamiento previo
  • train_logdir: el directorio donde se guardan los pesos de entrenamiento. Tenga en cuenta que se crea cuando se crea el directorio del proyecto al principio
  • dataset_dir: la dirección del conjunto de datos, el directorio TFRecords creado anteriormente

ERROR1

ValueError: el tamaño total de la nueva matriz no debe modificarse para MobilenetV2 / Conv / weights lh_shape: [(3, 3, 3, 16)], rh_shape: [(3, 3, 3, 32)]

Se debe a que el modelo de preentrenamiento se descarga incorrectamente y se puede reemplazar por el correcto.
Los
Inserte la descripción de la imagen aquí archivos del modelo entrenado se han guardado en la carpeta de entrenamiento de los resultados del entrenamiento . La carpeta contiene:

  • control
  • graph.pbtxt
  • model.ckpt-0.data-00000-of-00002

4. Ejecute eval.py

Al igual que tran.py, los parámetros se refieren a los oficiales. Los parámetros que utilicé son los siguientes:

python deeplab/eval.py \
--logtostderr \
--eval_split="val" \
--model_variant="mobilenet_v2" \
--eval_crop_size="513,513" \
--checkpoint_dir='/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/train' \
--eval_logdir='/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/eval' \
--dataset_dir='/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/tfrecord' \
--max_number_of_evaluations=1

ERROR2
Inserte la descripción de la imagen aquímuestra que la memoria no es suficiente Utilice ps aux para comprobar que el programa ocupa el 330% de la CPU ... Utilice kill -9 PID para matar. Cambie eval_crop_size a 321,321, se produjo un error. . . Adivina si train_crop_size y eval_crop_size son iguales (por verificar). Debido a que no hay cambios durante el tren, no hay forma de mantener 513, y luego no hay ningún error pero no se me da ningún resultado de mIOU. Pasemos al siguiente paso.

5. Ejecute vis.py para visualizar los resultados.

Mis parámetros:

python deeplab/vis.py \
--logtostderr \
--vis_split="val" \
--model_variant="mobilenet_v2" \
--vis_crop_size="513,513" \
--checkpoint_dir="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/train" \
--vis_logdir="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/vis" \
--dataset_dir="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/tfrecord" \
--max_number_of_iterations=1

Afortunadamente, se puede ejecutar y se mostrará después de la ejecución:
Inserte la descripción de la imagen aquípuede ver los resultados en la carpeta vis.

  • Primero mire las representaciones dadas en el sitio web oficial:
    Inserte la descripción de la imagen aquí
  • Las representaciones se me acabaron:
    Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquíInserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

6. Ejecute export_model.py

Mi configuración de parámetros:

# export_model
python deeplab/export_model.py \
--logtostderr \
--checkpoint_path="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/init_models/deeplabv3_mnv2_pascal_train_aug/model.ckpt-30000" \
--export_path="/home/hy/software/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_train_set/export/frozen_inference_graph.pb" \
--model_variant="mobilenet_v2" \
--num_classes=21 \
--crop_size=513 \
--crop_size=513 \
--inference_scales=1.0

Este paso debe ser exportar los parámetros (para ser verificado)

Supongo que te gusta

Origin blog.csdn.net/qq_43265072/article/details/105477047
Recomendado
Clasificación