PaddleX entrena un modelo de clasificación de imágenes de un conjunto de datos personalizado y se abre todo el proceso (desde la construcción del entorno hasta el despliegue de la inferencia)

PaddleX entrena un modelo de clasificación de imágenes de un conjunto de datos personalizado y se abre todo el proceso (desde la construcción del entorno hasta el despliegue de la inferencia)

Escrito en la parte superior: PaddleX es un almacén lanzado por paddlepaddle que es menos difícil de comenzar y es fácil de implementar.Los modelos están en una sola pieza, y es especialmente fácil perderse en él. Este tutorial es para aquellos que no saben mucho sobre PaddleX para usar PaddleX.

Dirección del almacén oficial de PaddleX

1. Preparación ambiental

Antes de iniciar el entrenamiento de datos, es necesario construir un entorno de aprendizaje profundo para el equipo utilizado, a continuación se utiliza el sistema ubuntu20.04 como ejemplo.
1. Tutorial de instalación del controlador de la tarjeta gráfica, se recomienda usar el controlador adicional en la actualización de software para la instalación con un solo clic
2. Instalación de Cuda y cudnn, preste atención a la versión de cuda y cudnn debe ser correspondiente
3. Instalación de Anaconda
4. Use Anaconda para crear un entorno virtual
5. Ingrese al entorno virtual recién creado y comience a instalar paddlepaddle. Tenga en cuenta que la versión de cuda y el sistema operativo deben ser los mismos que los recién instalados. Se recomienda usar el pip que ha cambiado la fuente para 6. Instalar
PaddleX

pip install paddlex==2.1.0 -i https://mirror.baidu.com/pypi/simple

paddlepaddle ha integrado el paquete pycocotools, pero hay casos en los que pycocotools no se puede instalar correctamente con paddlepaddle. Debido a que PaddleX depende del paquete pycocotools, si falla la instalación de pycocotools, puede instalar pycocotools de la siguiente manera:

pip install cython  
pip install pycocotools

Hasta ahora, el entorno básicamente ha sido construido.

2. Preparación de datos

Al entrenar un modelo de clasificación de imágenes, el conjunto de datos debe prepararse en el formato de ImageNet. Los requisitos de formato son los siguientes. Si hay N categorías, use N carpetas:

dataset/ # 图像分类数据集根目录
|--dog/ # 当前文件夹所有图片属于dog类别
|  |--d1.jpg
|  |--d2.jpg
|  |--...
|  |--...
|
|--...
|
|--snake/ # 当前文件夹所有图片属于snake类别
|  |--s1.jpg
|  |--s2.jpg
|  |--...
|  |--...

Use el comando PaddleX para dividir aleatoriamente el conjunto de datos en un 70 % de entrenamiento, un 20 % de validación y un 10 % de prueba; –dataset_dir es una ruta relativa aquí, si se informa un error y no se puede encontrar la carpeta, se recomienda usar una ruta absoluta; –val_value 0.2 y –test_value 0.1 se pueden ajustar apropiadamente según sus propias ideas.

paddlex --split_dataset --format ImageNet --dataset_dir dataset --val_value 0.2 --test_value 0.1

3. Formación modelo

Cree un nuevo train.py en el directorio dataset/same-level, copie el siguiente código y luego ejecute python train.py para comenzar a entrenar.

import paddlex as pdx
from paddlex import transforms as T


# 定义训练和验证时的transforms
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/transforms/transforms.md
train_transforms = T.Compose(
    [T.RandomCrop(crop_size=224), T.RandomHorizontalFlip(), T.Normalize()])

eval_transforms = T.Compose([
    T.ResizeByShort(short_size=256), T.CenterCrop(crop_size=224), T.Normalize()
])

# 定义训练和验证所用的数据集
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/datasets.md
train_dataset = pdx.datasets.ImageNet(
    data_dir='dataset',
    file_list='dataset/train_list.txt',
    label_list='dataset/labels.txt',
    transforms=train_transforms,
    shuffle=True)

eval_dataset = pdx.datasets.ImageNet(
    data_dir='dataset',
    file_list='dataset/val_list.txt',
    label_list='dataset/labels.txt',
    transforms=eval_transforms)

# 初始化模型,并进行训练
num_classes = len(train_dataset.labels)
model = pdx.cls.MobileNetV3_small(num_classes=num_classes)

# 模型训练参数
# 各参数介绍与调整说明:https://github.com/PaddlePaddle/PaddleX/tree/develop/docs/parameters.md
model.train(
    num_epochs=200,
    train_dataset=train_dataset,
    train_batch_size=32,
    eval_dataset=eval_dataset,
    lr_decay_epochs=[130, 160, 180],
    learning_rate=0.01,
    save_dir='output/mobilenetv3_small',
    use_vdl=True)

Si necesita usar varias tarjetas GPU para el entrenamiento, por ejemplo, cuando usa 2 tarjetas, ejecute:

python -m paddle.distributed.launch --gpus 0,1 train.py

4. Indicadores visuales

En el código de entrenamiento, si use_vdl se establece en True, el proceso de entrenamiento guardará automáticamente el registro de entrenamiento en formato VisualDL en el directorio vdl_log bajo save_dir (la ruta especificada por el usuario), y el usuario puede usar el siguiente comando para iniciar el Servicio VisualDL para ver los indicadores de visualización

visualdl --logdir output/mobilenetv3_small/vdl_log --port 6001

Después de que se inicie el servicio, use un navegador para abrir https://0.0.0.0:6001 o https://localhost:6001

5. Modelo de predicción

Use la interfaz de predicción integrada de PaddleX para predecir el resultado

import paddlex as pdx
test_jpg = 'test.jpg'
model = pdx.load_model('output/mobilenetv3_small/best_model')
result = model.predict(test_jpg)
print("Predict Result: ", result)

6. Implementación del modelo

Formato del modelo de entrenamiento
En la carpeta del modelo guardado por el entrenamiento de PaddleX, hay principalmente cuatro archivos:

model.pdopt, optimizador para entrenar parámetros del modelo
model.pdparams, parámetros del modelo
model.yml, archivos de configuración del modelo (incluidos parámetros de preprocesamiento, definiciones del modelo, etc.)
eval_details.json, resultados de predicción y valores verdaderos en la evaluación del modelo

Cabe señalar que el modelo guardado durante el entrenamiento no se puede usar directamente para la implementación, debe exportarse a un formato de implementación antes de que se pueda usar para la implementación.
Utilice el siguiente comando en la terminal de línea de comandos para exportar el modelo entrenado al formato requerido para la implementación:

paddlex --export_inference --model_dir=./output/mobilenetv3_small/best_model/ --save_dir=./inference_model

Formato del modelo de implementación
Al implementar el modelo en el lado del servidor, el modelo guardado durante el proceso de capacitación debe exportarse como un modelo de formato de inferencia. El modelo de formato de inferencia exportado con PaddleX 2.0 incluye cinco archivos:

model.pdmodel, estructura de red del modelo
model.pdiparams, peso del modelo
model.pdiparams.info, nombre del peso del modelo
model.yml, archivo de configuración del modelo (incluidos los parámetros de preprocesamiento, definición del modelo, etc.)
pipeline.yml, que se puede usar en PaddleX Fabricar archivo de configuración del proceso SDK

Después de exportar el modelo de implementación, puede usar la interfaz de inferencia de alto rendimiento de PaddleX para la implementación. El código es el siguiente:

import paddlex as pdx
predictor = pdx.deploy.Predictor('./inference_model')
result = predictor.predict(img_file='test.jpg')

Supongo que te gusta

Origin blog.csdn.net/weixin_45921929/article/details/128271831
Recomendado
Clasificación