PaddleX icon indicating copy to clipboard operation
PaddleX copied to clipboard

使用pdx.det.YOLOv3训练时出错

Open ulen2000 opened this issue 2 years ago • 0 comments

使用pdx.det.YOLOv3训练时出错,不是出现报错,而是训练日志的打印出现乱码,且预测的准确率为0。训练代码如下:

import paddlex as pdx import os #os.environ['CUDA_VISIBLE_DEVICES'] = '1,2,3' # 同时使用第0、1号GPU卡进行训练 #export CUDA_VISIBLE_DEVICES=3

from paddlex import transforms as T

train_transforms = T.Compose([ T.MixupImage(mixup_epoch=250), T.RandomDistort(), T.RandomExpand(im_padding_value=[123.675, 116.28, 103.53]), T.RandomCrop(), T.RandomHorizontalFlip(), T.BatchRandomResize( target_sizes=[320, 352, 384, 416, 448, 480, 512, 544, 576, 608], interp='RANDOM'), T.Normalize( mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ])

eval_transforms = T.Compose([ T.Resize( 608, interp='CUBIC'), T.Normalize( mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ])

meter_det_dataset = 'https://bj.bcebos.com/paddlex/examples/meter_reader/datasets/meter_det.tar.gz' pdx.utils.download_and_decompress(meter_det_dataset, path='./')

train_dataset = pdx.datasets.CocoDetection( data_dir='meter_det/train/', ann_file='meter_det/annotations/instance_train.json', transforms=train_transforms, shuffle=True) eval_dataset = pdx.datasets.CocoDetection( data_dir='meter_det/test/', ann_file='meter_det/annotations/instance_test.json', transforms=eval_transforms)

num_classes = len(train_dataset.labels)

model = pdx.det.YOLOv3( num_classes=len(train_dataset.labels), backbone='DarkNet53')

model.train( train_dataset=train_dataset, eval_dataset=eval_dataset,

num_epochs=270,
train_batch_size=4,
learning_rate=0.000125/2,
warmup_steps=500,
warmup_start_lr=0.0,
lr_decay_epochs=[213, 240],
lr_decay_gamma=0.1,

save_interval_epochs=5,
log_interval_steps=20,
save_dir='output/YOLOv3_DarkNet53',
pretrain_weights='COCO',

use_vdl=True,
early_stop=True,
early_stop_patience=5)

训练日志如下图: 选区_016

可以看到loss显示为或乱码。

训练10个epoch后也因此自动停止。如下图: 选区_018

不知道是否为backbone问题,之前使用MobileNetV1 backbone是正常的

ulen2000 avatar Sep 14 '22 08:09 ulen2000