PyTorch para TFLite
Este capítulo descreverá como converter e exportar modelos PyTorch para modelos TFLite.
Preparação
Configuração do Ambiente
Assim como na etapa de Training, recomendamos que você faça isso em um ambiente virtual durante a fase de exportação do modelo. No ambiente virtual sscma, certifique-se de que a etapa Installation - Prerequisites - Install Extra Dependencies foi concluída.
Se você já configurou um ambiente virtual, mas não o ativou, pode ativá-lo com o seguinte comando.
conda activate sscma
Modelos e Pesos
Você também precisa preparar o modelo PyTorch e seus pesos antes de exportar o modelo. Para o modelo, você pode encontrá-lo na seção Config, onde já o pré-configuramos. Para os pesos, você pode consultar as etapas a seguir para obter os pesos do modelo.
-
Consulte a seção Training, escolha um modelo e treine para obter os pesos do modelo.
-
Ou faça o download dos pesos oficiais pré-treinados do SSCMA no nosso GitHub Releases - Model Zoo.
Exportar o modelo TFLite requer um conjunto de treinamento como conjunto de dados representativo; se ele não for encontrado, o programa irá baixá-lo automaticamente. Entretanto, para alguns conjuntos de dados grandes, isso pode levar muito tempo, portanto, seja paciente.
Exportar Modelo
Para a transformação do modelo (converter e exportar), os comandos relevantes com alguns parâmetros comuns são listados.
python3 tools/export.py \
"<CONFIG_FILE_PATH>" \
"<CHECKPOINT_FILE_PATH>" \
--target tflite
Exemplos de Exportação para TFLite
Aqui estão alguns exemplos de conversão de modelo (precisão int8) para referência.
- Conversão de Modelo FOMO
- Conversão de Modelo PFLD
- Conversão 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'
Validação do Modelo
Como no processo de exportação do modelo o SSCMA fará algumas otimizações no modelo usando algumas ferramentas, como poda de modelo, destilação, etc., embora tenhamos testado e avaliado os pesos do modelo durante o processo de treinamento, recomendamos que você valide o modelo exportado novamente.
python3 tools/inference.py \
"<CONFIG_FILE_PATH>" \
"<CHECKPOINT_FILE_PATH>" \
--show \
--cfg-options "<CFG_OPTIONS>"
Para mais parâmetros suportados, consulte o código-fonte tools/inference.py ou execute python3 tools/inference.py --help.
Exemplo de Validação de Modelo
Aqui estão alguns exemplos para validar o modelo convertido (precisão int8), somente para referência.
- Validação de Modelo FOMO
- Validação de Modelo PFLD
- Validação 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'