paddledetection 报错 形状不匹配
收藏
自己做的数据集,用paddledetection里的polov3_v1_mobilenet_fruit.yml训练,训练时没报错,预测的时候报错了。说数据形状不匹配,有没有路过的大神看一下,谢谢了!
1
收藏
请登录后评论
这个模型应该有对图像做过resize的,先检查一下预测时候输入图像的尺寸吧。
他说的是bias,变量的值都是随着特征自适应的,所以还是图像size的问题。
不放心的话用一下 fluid.layers.Print 打印一下看看
能贴下 yolov3_mobilenet_v1_myfruit.yml 里面的配置嘛,weights: output/yolov3_mobilenet_v1_fruit/best_model,有这个路径吗
yolov3_mobilenet_v1_myfruit.yml 里面的配置
architecture: YOLOv3
use_gpu: true
max_iters: 20000
log_smooth_window: 20
save_dir: output
snapshot_iter: 200
metric: VOC
map_type: 11point
pretrain_weights: https://paddlemodels.bj.bcebos.com/object_detection/yolov3_mobilenet_v1.tar
weights: output/yolov3_mobilenet_v1_fruit/best_model
num_classes: 7
finetune_exclude_pretrained_params: ['yolo_output']
use_fine_grained_loss: false
YOLOv3:
backbone: MobileNet
yolo_head: YOLOv3Head
MobileNet:
norm_type: sync_bn
norm_decay: 0.
conv_group_scale: 1
with_extra_blocks: false
YOLOv3Head:
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]]
norm_decay: 0.
yolo_loss: YOLOv3Loss
nms:
background_label: -1
keep_top_k: 100
nms_threshold: 0.45
nms_top_k: 1000
normalized: false
score_threshold: 0.01
YOLOv3Loss:
# batch_size here is only used for fine grained loss, not used
# for training batch_size setting, training batch_size setting
# is in configs/yolov3_reader.yml TrainReader.batch_size, batch
# size here should be set as same value as TrainReader.batch_size
batch_size: 8
ignore_thresh: 0.7
label_smooth: true
LearningRate:
base_lr: 0.0001
schedulers:
- !PiecewiseDecay
gamma: 0.1
milestones:
- 15000
- 18000
- !LinearWarmup
start_factor: 0.
steps: 100
OptimizerBuilder:
optimizer:
momentum: 0.9
type: Momentum
regularizer:
factor: 0.0005
type: L2
_READER_: 'yolov3_reader.yml'
# will merge TrainReader into yolov3_reader.yml
TrainReader:
inputs_def:
image_shape: [3, 608, 608]
fields: ['image', 'gt_bbox', 'gt_class', 'gt_score']
num_max_boxes: 50
dataset:
!VOCDataSet
dataset_dir: dataset/myImages
anno_path: train.txt
with_background: false
use_default_label: false
sample_transforms:
- !DecodeImage
to_rgb: true
with_mixup: false
- !NormalizeBox {}
- !ExpandImage
max_ratio: 4.0
mean: [123.675, 116.28, 103.53]
prob: 0.5
- !RandomInterpImage
max_size: 0
target_size: 608
- !RandomFlipImage
is_normalized: true
prob: 0.5
- !NormalizeImage
mean: [0.485, 0.456, 0.406]
std: [0.229, 0.224, 0.225]
is_scale: true
is_channel_first: false
- !PadBox
num_max_boxes: 50
- !BboxXYXY2XYWH {}
batch_transforms:
- !RandomShape
sizes: [608]
- !Permute
channel_first: true
to_bgr: false
batch_size: 1
shuffle: true
mixup_epoch: -1
EvalReader:
batch_size: 1
inputs_def:
image_shape: [3, 608, 608]
fields: ['image', 'im_size', 'im_id', 'gt_bbox', 'gt_class', 'is_difficult']
num_max_boxes: 50
dataset:
!VOCDataSet
dataset_dir: dataset/myImages
anno_path: val.txt
use_default_label: false
with_background: false
TestReader:
batch_size: 1
dataset:
!ImageFolder
anno_path: dataset/ImageSets/Main/label_list.txt
use_default_label: false
with_background: false
这和配置问题不大, 既然训练正常那么预测也没问题. 我建议还是追踪一下每层的网络输出
好了 已经解决了。
原因是 我复制了 paddledetection里的polov3_v1_mobilenet_fruit.yml 改名polov3_v1_mobilenet_myfruit.yml用它去训练我的数据集,就会报错。后来 我直接用原来的polov3_v1_mobilenet_fruit.yml训练 就没再报错了。
我的老师跟我说,尽量不要去复制paddledetection框架里的文件,因为里面的文件都是相互关联的,直接修改原文件会避免很多麻烦。
谢谢大家帮忙!!!
还有老师带队啊哈哈
嗯 大三学生 计算机视觉这门课老师留的作业