Le modèle de pré-formation PaddleDetection est exporté et utilisé pour paddex
préambule
Récemment, j'envisage d'utiliser paddlex pour déployer le projet, mais après quelques jours d'embûches, j'ai constaté que le modèle dans paddleDetection ne peut pas être directement exporté vers paddlex.La clé est que le fichier de configuration exporté par paddleDetection est infer_cfg.yml, python tools/export_model.py
et le contenu est le même que le modèle que paddlex peut utiliser. Il y a quelques différences dans yml. Une méthode consiste à trouver un ensemble de données approprié, à utiliser l'interface d'entraînement dans paddlex pour s'entraîner pendant plusieurs tours et à générer automatiquement un fichier yml L'autre méthode consiste à générer un fichier yml par vous-même.
Télécharger le fichier de poids paddleDetection
Ici est basé sur ppyolov2, entrez d'abord dans l'entrepôt paddleDetection
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/ppyolo/README_cn.md
Après le téléchargement, cela ressemble à ceci
modèle d'exportation
Ensuite, utilisez l'outil d'exportation de modèle pour exporter, faites attention d'aller dans le dossier de configuration pour sélectionner le bon fichier de configuration
python tools/export_model.py -c configs/ppyolo/ppyolov2_r50vd_dcn_365e_coco.yml --output_dir=./inference_model -o weights=ppyolov2_r50vd_dcn_365e_coco.pdparams
Le fichier exporté ressemble à ceci
Modifier model.yml
Ici, vous pouvez utiliser l'interface de train dans paddlex pour vous entraîner d'abord pendant un ou deux tours, obtenir un fichier model.yml, puis le modifier
Model: PPYOLOv2
Transforms:
- Resize:
interp: CUBIC
keep_ratio: false
target_size: !!python/tuple
- 640
- 640
- Normalize:
is_scale: true
max_val:
- 255.0
- 255.0
- 255.0
mean:
- 0.485
- 0.456
- 0.406
min_val:
- 0
- 0
- 0
std:
- 0.229
- 0.224
- 0.225
_Attributes:
best_accuracy: 7.663954650946425
best_model_epoch: 1
eval_metrics:
bbox_map: 7.663954650946425
fixed_input_shape: null
labels:
- person
- bicycle
- car
- motorcycle
- airplane
- bus
- train
- truck
- boat
- traffic light
- fire hydrant
- stop sign
- parking meter
- bench
- bird
- cat
- dog
- horse
- sheep
- cow
- elephant
- bear
- zebra
- giraffe
- backpack
- umbrella
- handbag
- tie
- suitcase
- frisbee
- skis
- snowboard
- sports ball
- kite
- baseball bat
- baseball glove
- skateboard
- surfboard
- tennis racket
- bottle
- wine glass
- cup
- fork
- knife
- spoon
- bowl
- banana
- apple
- sandwich
- orange
- broccoli
- carrot
- hot dog
- pizza
- donut
- cake
- chair
- couch
- potted plant
- bed
- dining table
- toilet
- tv
- laptop
- mouse
- remote
- keyboard
- cell phone
- microwave
- oven
- toaster
- sink
- refrigerator
- book
- clock
- vase
- scissors
- teddy bear
- hair drier
- toothbrush
model_type: detector
num_classes: 80
_init_params:
anchor_masks:
- - 6
- 7
- 8
- - 3
- 4
- 5
- - 0
- 1
- 2
anchors:
- - 10
- 13
- - 16
- 30
- - 33
- 23
- - 30
- 61
- - 62
- 45
- - 59
- 119
- - 116
- 90
- - 156
- 198
- - 373
- 326
backbone: ResNet50_vd_dcn
ignore_threshold: 0.7
label_smooth: false
nms_iou_threshold: 0.45
nms_keep_topk: 100
nms_score_threshold: 0.01
nms_topk: -1
num_classes: 80
scale_x_y: 1.05
use_drop_block: true
use_iou_aware: true
use_iou_loss: true
use_matrix_nms: true
use_spp: true
completed_epochs: 1
status: Infer
version: 2.1.0
Le modèle qu'il contient est remplacé par votre propre modèle, mais seul le modèle pris en charge par paddlex est
modifié. Les étiquettes sont remplacées par votre propre étiquette de catégorie.
num_classes est remplacé par le nombre total de catégories. Notez qu'il existe deux endroits pour modifier
le statut en Déduire. Si les pdparams utilisés ne sont pas exportés La version précédente est la
version normale et la version paddlex