From 33dca040b7c72c5bce52faa6c6e6594fd4b10cf9 Mon Sep 17 00:00:00 2001 From: zhiboniu <31800336+zhiboniu@users.noreply.github.com> Date: Thu, 13 May 2021 11:28:57 +0800 Subject: [PATCH] fix batchsize=1 backward error (#2973) --- configs/keypoint/higherhrnet/higherhrnet_hrnet_w32_512.yml | 4 ++-- ppdet/modeling/heads/keypoint_hrhrnet_head.py | 7 +++---- ppdet/modeling/losses/keypoint_loss.py | 5 ++++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/configs/keypoint/higherhrnet/higherhrnet_hrnet_w32_512.yml b/configs/keypoint/higherhrnet/higherhrnet_hrnet_w32_512.yml index 25a0ab43c..f4fcdfbea 100644 --- a/configs/keypoint/higherhrnet/higherhrnet_hrnet_w32_512.yml +++ b/configs/keypoint/higherhrnet/higherhrnet_hrnet_w32_512.yml @@ -1,8 +1,8 @@ use_gpu: true -log_iter: 1 +log_iter: 10 save_dir: output snapshot_epoch: 10 -weights: output/higherhrnet_hrnet_v1_512/290 +weights: output/higherhrnet_hrnet_w32_512/model_final epoch: 300 num_joints: &num_joints 17 flip_perm: &flip_perm [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15] diff --git a/ppdet/modeling/heads/keypoint_hrhrnet_head.py b/ppdet/modeling/heads/keypoint_hrhrnet_head.py index 90a1298fc..2cec010bb 100644 --- a/ppdet/modeling/heads/keypoint_hrhrnet_head.py +++ b/ppdet/modeling/heads/keypoint_hrhrnet_head.py @@ -92,15 +92,14 @@ class HrHRNetHead(nn.Layer): xo2 = self.conv2(x2) num_joints = self.num_joints if self.training: + heatmap1, tagmap = paddle.split(xo1, 2, axis=1) if self.swahr: so1 = self.scalelayer0(x1) so2 = self.scalelayer1(x2) - hrhrnet_outputs = ([xo1[:, :num_joints], so1], [xo2, so2], - xo1[:, num_joints:]) + hrhrnet_outputs = ([heatmap1, so1], [xo2, so2], tagmap) return self.loss(hrhrnet_outputs, targets) else: - hrhrnet_outputs = (xo1[:, :num_joints], xo2, - xo1[:, num_joints:]) + hrhrnet_outputs = (heatmap1, xo2, tagmap) return self.loss(hrhrnet_outputs, targets) # averaged heatmap, upsampled tagmap diff --git a/ppdet/modeling/losses/keypoint_loss.py b/ppdet/modeling/losses/keypoint_loss.py index 442204cc3..d37ef5759 100644 --- a/ppdet/modeling/losses/keypoint_loss.py +++ b/ppdet/modeling/losses/keypoint_loss.py @@ -194,7 +194,10 @@ class AELoss(object): def __call__(self, preds, tagmaps): bs = preds.shape[0] - losses = [self.apply_single(preds[i], tagmaps[i]) for i in range(bs)] + losses = [ + self.apply_single(preds[i:i + 1].squeeze(), + tagmaps[i:i + 1].squeeze()) for i in range(bs) + ] pull = self.pull_factor * sum(loss[0] for loss in losses) / len(losses) push = self.push_factor * sum(loss[1] for loss in losses) / len(losses) return pull, push -- GitLab