El modelo de preentrenamiento de PaddleDetection se exporta y se usa para paddex
preámbulo
Recientemente, planeo usar paddlex para implementar el proyecto, pero después de algunos días de dificultades, descubrí que el modelo en paddleDetection no se puede exportar directamente a paddlex.La clave es que el archivo de configuración exportado por paddleDetection es infer_cfg.yml, python tools/export_model.py
y el contenido es el mismo que el modelo que puede usar paddlex. Hay algunas diferencias en yml. Un método es encontrar un conjunto de datos adecuado, usar la interfaz de tren en paddlex para entrenar durante varias rondas y generar automáticamente un archivo yml. El otro método es generar un archivo yml por sí mismo.
Descargar archivo de pesos de paddleDetection
Aquí se basa en ppyolov2, primero ingrese al almacén de paddleDetection
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/ppyolo/README_cn.md
Después de la descarga, se ve así
modelo de exportación
Luego use la herramienta de modelo de exportación para exportar, preste atención para ir a la carpeta de configuración para seleccionar el archivo de configuración correcto
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
El archivo exportado se ve así
Modificar modelo.yml
Aquí puede usar la interfaz de entrenamiento en paddlex para entrenar durante una o dos rondas primero, obtener un archivo model.yml y luego modificarlo
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
El modelo en él se cambia a su propio modelo, pero solo se
cambia el modelo compatible con paddlex. Las etiquetas se cambian a su propia categoría, la etiqueta
num_classes se cambia al número total de categorías. Tenga en cuenta que hay dos lugares para cambiar
el estado a Inferir. Si no se exportan los pdparams usados La versión anterior es la
versión normal y la versión paddlex