From a2f247621f52150cb036dec8054ac63bc5b2f84a Mon Sep 17 00:00:00 2001 From: Guanghua Yu <742925032@qq.com> Date: Tue, 21 Dec 2021 10:35:48 +0800 Subject: [PATCH] fix voc dataset collact_batch (#4966) --- ppdet/engine/trainer.py | 11 +++++++++-- ppdet/modeling/backbones/lcnet.py | 4 ++-- ppdet/modeling/backbones/shufflenet_v2.py | 5 ++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ppdet/engine/trainer.py b/ppdet/engine/trainer.py index ee76406d1..2e6afc328 100644 --- a/ppdet/engine/trainer.py +++ b/ppdet/engine/trainer.py @@ -111,8 +111,12 @@ class Trainer(object): if self.mode == 'eval': self._eval_batch_sampler = paddle.io.BatchSampler( self.dataset, batch_size=self.cfg.EvalReader['batch_size']) - self.loader = create('{}Reader'.format(self.mode.capitalize()))( - self.dataset, cfg.worker_num, self._eval_batch_sampler) + reader_name = '{}Reader'.format(self.mode.capitalize()) + # If metric is VOC, need to be set collate_batch=False. + if cfg.metric == 'VOC': + cfg[reader_name]['collate_batch'] = False + self.loader = create(reader_name)(self.dataset, cfg.worker_num, + self._eval_batch_sampler) # TestDataset build after user set images, skip loader creation here # build optimizer in train mode @@ -444,6 +448,9 @@ class Trainer(object): paddle.io.BatchSampler( self._eval_dataset, batch_size=self.cfg.EvalReader['batch_size']) + # If metric is VOC, need to be set collate_batch=False. + if self.cfg.metric == 'VOC': + self.cfg['EvalReader']['collate_batch'] = False self._eval_loader = create('EvalReader')( self._eval_dataset, self.cfg.worker_num, diff --git a/ppdet/modeling/backbones/lcnet.py b/ppdet/modeling/backbones/lcnet.py index d4e3a2c15..4242b4c81 100644 --- a/ppdet/modeling/backbones/lcnet.py +++ b/ppdet/modeling/backbones/lcnet.py @@ -19,7 +19,7 @@ from __future__ import print_function import paddle import paddle.nn as nn from paddle import ParamAttr -from paddle.nn import AdaptiveAvgPool2D, BatchNorm, Conv2D, Dropout, Linear +from paddle.nn import AdaptiveAvgPool2D, Conv2D from paddle.regularizer import L2Decay from paddle.nn.initializer import KaimingNormal @@ -81,7 +81,7 @@ class ConvBNLayer(nn.Layer): weight_attr=ParamAttr(initializer=KaimingNormal()), bias_attr=False) - self.bn = BatchNorm2D( + self.bn = nn.BatchNorm2D( num_filters, weight_attr=ParamAttr(regularizer=L2Decay(0.0)), bias_attr=ParamAttr(regularizer=L2Decay(0.0))) diff --git a/ppdet/modeling/backbones/shufflenet_v2.py b/ppdet/modeling/backbones/shufflenet_v2.py index 059b15ed7..996697ad7 100644 --- a/ppdet/modeling/backbones/shufflenet_v2.py +++ b/ppdet/modeling/backbones/shufflenet_v2.py @@ -19,7 +19,8 @@ from __future__ import print_function import paddle import paddle.nn as nn from paddle import ParamAttr -from paddle.nn import Conv2D, MaxPool2D, AdaptiveAvgPool2D, BatchNorm +import paddle.nn.functional as F +from paddle.nn import Conv2D, MaxPool2D, AdaptiveAvgPool2D, BatchNorm2D from paddle.nn.initializer import KaimingNormal from paddle.regularizer import L2Decay @@ -55,6 +56,8 @@ class ConvBNLayer(nn.Layer): out_channels, weight_attr=ParamAttr(regularizer=L2Decay(0.0)), bias_attr=ParamAttr(regularizer=L2Decay(0.0))) + if act == "hard_swish": + act = 'hardswish' self.act = act def forward(self, inputs): -- GitLab