PyTorch a TFLite
Este capítulo describirá cómo convertir y exportar modelos PyTorch a modelos TFLite.
Preparación
Configuración del Entorno
Como en el paso de Entrenamiento, te recomendamos hacerlo en un entorno virtual durante la fase de exportación del modelo. En el entorno virtual sscma
, asegúrate de que el paso Instalación - Prerrequisitos - Instalar Dependencias Adicionales haya sido completado.
Si has configurado un entorno virtual pero no lo has activado, puedes activarlo con el siguiente comando.
conda activate sscma
Modelos y Pesos
También necesitas preparar el modelo PyTorch y sus pesos antes de exportar el modelo. Para el modelo, puedes encontrarlo en la sección Config, ya lo hemos preconfigurado. Para los pesos, puedes referirte a los siguientes pasos para obtener los pesos del modelo.
-
Consulta la sección Entrenamiento y elige un modelo, y entrénalo para obtener los pesos del modelo.
-
O descarga los pesos preentrenados oficiales de SSCMA desde nuestro GitHub Releases - Model Zoo.
Exportar modelo TFLite requiere un conjunto de entrenamiento como conjunto de datos representativo, si no se encuentra, el programa lo descargará automáticamente. Sin embargo, para algunos conjuntos de datos grandes, esto puede tomar mucho tiempo, así que ten paciencia.
Exportar Modelo
Para la transformación del modelo (convertir y exportar), se listan los comandos relevantes con algunos parámetros comunes.
python3 tools/export.py \
"<CONFIG_FILE_PATH>" \
"<CHECKPOINT_FILE_PATH>" \
--target tflite
Ejemplos de Exportación TFLite
Aquí hay algunos ejemplos de conversión de modelos (precisión int8
) para referencia.
- Conversión de Modelo FOMO
- Conversión de Modelo PFLD
- Conversión de Modelo PFLD
python3 tools/export.py \
configs/fomo/fomo_mobnetv2_0.35_x8_abl_coco.py \
"$(cat work_dirs/fomo_mobnetv2_0.35_x8_abl_coco/last_checkpoint)" \
--target tflite \
--cfg-options \
data_root='datasets/mask'
python3 tools/export.py \
configs/pfld/pfld_mbv2n_112.py \
"$(cat work_dirs/pfld_mbv2n_112/last_checkpoint)" \
--target tflite \
--cfg-options \
data_root='datasets/meter'
python3 tools/export.py \
configs/swift_yolo/swift_yolo_tiny_1xb16_300e_coco.py \
"$(cat work_dirs/swift_yolo_tiny_1xb16_300e_coco/last_checkpoint)" \
--target tflite
--cfg-options \
data_root='datasets/digital_meter'
Validación del Modelo
Dado que en el proceso de exportación del modelo, SSCMA realizará algunas optimizaciones para el modelo usando algunas herramientas, como poda del modelo, destilación, etc. Aunque hemos probado y evaluado los pesos del modelo durante el proceso de entrenamiento, te recomendamos validar el modelo exportado nuevamente.
python3 tools/inference.py \
"<CONFIG_FILE_PATH>" \
"<CHECKPOINT_FILE_PATH>" \
--show \
--cfg-options "<CFG_OPTIONS>"
Para más parámetros soportados, por favor consulta el código fuente tools/inference.py
o ejecuta python3 tools/inference.py --help
.
Ejemplo de Validación del Modelo
Aquí hay algunos ejemplos para validar el modelo convertido (precisión int8
), solo para referencia.
- Validación de Modelo FOMO
- Validación de Modelo PFLD
- Validación de Modelo PFLD
python3 tools/inference.py \
configs/fomo/fomo_mobnetv2_0.35_x8_abl_coco.py \
"$(cat work_dirs/fomo_mobnetv2_0.35_x8_abl_coco/last_checkpoint | sed -e 's/.pth/_int8.tflite/g')" \
--show \
--cfg-options \
data_root='datasets/mask'
python3 tools/inference.py \
configs/pfld/pfld_mbv2n_112.py \
"$(cat work_dirs/pfld_mbv2n_112/last_checkpoint | sed -e 's/.pth/_int8.tflite/g')" \
--show \
--cfg-options \
data_root='datasets/meter'
python3 tools/inference.py \
configs/swift_yolo/swift_yolo_tiny_1xb16_300e_coco.py \
"$(cat work_dirs/swift_yolo_tiny_1xb16_300e_coco/last_checkpoint | sed -e 's/.pth/_int8.tflite/g')" \
--show \
--cfg-options \
data_root='datasets/digital_meter'