Le modèle de pré-formation PaddleDetection est exporté et utilisé pour paddex

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.pyet 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
Capture d'écran du dépôt git
Après le téléchargement, cela ressemble à ceci
Après téléchargement ça ressemble à ça

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
insérez la description de l'image ici

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

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45921929/article/details/123003108
conseillé
Classement