改动ppyolo.xml训练时出错
Created by: kgkzhiwen
改动了ppyolo.yml去识别小目标,但是训练时出现如下错误。是什么原因导致形状不同?
`------------------------------------------ Python Call Stacks (More useful to users):
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/framework.py", line 2610, in append_op attrs=kwargs.get("attrs", None)) File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py", line 248, in impl attrs={'axis': axis}) File "/home/aistudio/PaddleDetection/ppdet/modeling/losses/yolo_loss.py", line 170, in _get_fine_grained_loss loss_h = fluid.layers.abs(h - th) * tscale_tobj File "/home/aistudio/PaddleDetection/ppdet/modeling/losses/yolo_loss.py", line 69, in call mask_anchors, self._ignore_thresh) File "/home/aistudio/PaddleDetection/ppdet/modeling/anchor_heads/yolo_head.py", line 404, in get_loss self.prefix_name) File "/home/aistudio/PaddleDetection/ppdet/modeling/architectures/yolo.py", line 85, in build gt_score, targets) File "/home/aistudio/PaddleDetection/ppdet/modeling/architectures/yolo.py", line 159, in train return self.build(feed_vars, mode='train') File "tools/train.py", line 116, in main train_fetches = model.train(feed_vars) File "tools/train.py", line 407, in main()
Error Message Summary:
InvalidArgumentError: Broadcast dimension mismatch. Operands could not be broadcast together with the shape of X = [4, 3, 25, 25] and the shape of Y = [4, 3, 50, 50]. Received [25] in X is not equal to [50] in Y at i:2. [Hint: Expected x_dims_array[i] == y_dims_array[i] || x_dims_array[i] <= 1 || y_dims_array[i] <= 1 == true, but received x_dims_array[i] == y_dims_array[i] || x_dims_array[i] <= 1 || y_dims_array[i] <= 1:0 != true:1.] at (/paddle/paddle/fluid/operators/elementwise/elementwise_op_function.h:160) [operator < elementwise_sub > error]`
下面是改动过的ppyolo.yml:
`architecture: YOLOv3 use_gpu: false #max_iters: 250000 max_iters: 12000 log_smooth_window: 100 log_iter: 20 save_dir: output snapshot_iter: 300 metric: COCO pretrain_weights: https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar weights: output/ppyolo/model_final #num_classes: 80 num_classes: 1 use_fine_grained_loss: true use_ema: true ema_decay: 0.9998
YOLOv3: backbone: ResNet yolo_head: YOLOv3Head use_fine_grained_loss: true
ResNet:
norm_type: bn
freeze_at: 0
freeze_norm: false
norm_decay: 0.
depth: 50
feature_maps: [4, 5]
variant: d
dcn_v2_stages: [5]
YOLOv3Head:
anchor_masks: [[3, 4, 5], [0, 1, 2]]
anchors: [[27, 22], [21, 57], [78, 17],
[51, 36], [35, 73], [67, 76]]
norm_decay: 0.
coord_conv: true
iou_aware: true
iou_aware_factor: 0.4
scale_x_y: 1.05
spp: true
yolo_loss: YOLOv3Loss
nms: MatrixNMS
drop_block: true
YOLOv3Loss:
batch_size: 4
ignore_thresh: 0.7
scale_x_y: 1.05
label_smooth: false
use_fine_grained_loss: true
iou_loss: IouLoss
iou_aware_loss: IouAwareLoss
IouLoss: loss_weight: 2.5 max_height: 200 max_width: 200
IouAwareLoss: loss_weight: 1.0 max_height: 200 max_width: 200
MatrixNMS: background_label: -1 keep_top_k: 100 normalized: false score_threshold: 0.01 post_threshold: 0.01
LearningRate: base_lr: 0.00125 schedulers:
- !PiecewiseDecay
gamma: 0.1
milestones:
- 8000
- 11000
- !LinearWarmup start_factor: 0. steps: 1000
OptimizerBuilder: optimizer: momentum: 0.9 type: Momentum regularizer: factor: 0.0005 type: L2
TrainReader: inputs_def: fields: ['image', 'gt_bbox', 'gt_class', 'gt_score'] num_max_boxes: 50 dataset: !COCODataSet image_dir: images anno_path: annotations/instances_train2017.json dataset_dir: dataset/coco with_background: false sample_transforms: - !DecodeImage to_rgb: True with_mixup: True - !MixupImage alpha: 1.5 beta: 1.5 - !ColorDistort {} - !RandomExpand fill_value: [123.675, 116.28, 103.53] - !RandomCrop {} - !RandomFlipImage is_normalized: false - !NormalizeBox {} - !PadBox num_max_boxes: 50 - !BboxXYXY2XYWH {} batch_transforms:
- !RandomShape
sizes: [800,1200] random_inter: True - !NormalizeImage mean: [0.485, 0.456, 0.406] std: [0.229, 0.224, 0.225] is_scale: True is_channel_first: false
- !Permute to_bgr: false channel_first: True
- !Gt2YoloTarget
anchor_masks: [[3, 4, 5], [0, 1, 2]] anchors: [[27, 22], [21, 57], [78, 17], [51, 36], [35, 73], [67, 76]] downsample_ratios: [16, 8]
batch_size: 4 shuffle: true
mixup_epoch: 1000 drop_last: true worker_num: 4 bufsize: 4 use_process: true `