diff --git a/official/cv/deeptext/src/Deeptext/proposal_generator.py b/official/cv/deeptext/src/Deeptext/proposal_generator.py index 3edd1c68fffd49e2704ecc8edc701b82e12579b8..2b484be8895a5d26926ec0d7f4577fdc279f3147 100644 --- a/official/cv/deeptext/src/Deeptext/proposal_generator.py +++ b/official/cv/deeptext/src/Deeptext/proposal_generator.py @@ -17,8 +17,9 @@ import numpy as np import mindspore.nn as nn import mindspore.common.dtype as mstype +from mindspore.ops import functional as F from mindspore.ops import operations as P -from mindspore import Tensor +from mindspore import context, Tensor class Proposal(nn.Cell): @@ -112,6 +113,7 @@ class Proposal(nn.Cell): cfg = config self.topK_stage1 = () self.topK_shape = () + self.exec_mode = context.get_context("mode") total_max_topk_input = 0 if not self.training_local: self.num_pre = cfg.rpn_nms_pre @@ -146,6 +148,9 @@ class Proposal(nn.Cell): bbox_pred_list = bbox_pred_list + (rpn_bbox_pred_i,) proposals, masks = self.get_bboxes_single(cls_score_list, bbox_pred_list, anchor_list) + if self.exec_mode == context.PYNATIVE_MODE: + proposals = F.stop_gradient(proposals) + masks = F.stop_gradient(masks) proposals_tuple += (proposals,) masks_tuple += (masks,) return proposals_tuple, masks_tuple diff --git a/official/cv/deeptext/src/Deeptext/rcnn.py b/official/cv/deeptext/src/Deeptext/rcnn.py index b1d34bbb70254eafd3b328b00f4967c289e33c4c..dda16fbdc37116c223346ecb0964b3d549e9f941 100644 --- a/official/cv/deeptext/src/Deeptext/rcnn.py +++ b/official/cv/deeptext/src/Deeptext/rcnn.py @@ -23,11 +23,13 @@ from mindspore.common.initializer import initializer from mindspore.common.parameter import Parameter from model_utils.config import config as default_config + if default_config.export_device_target == "Ascend": mtype = mstype.float16 else: mtype = mstype.float32 + class DenseNoTranpose(nn.Cell): """Dense method""" @@ -153,7 +155,7 @@ class Rcnn(nn.Cell): bbox_weights = self.cast(self.logicaland(self.greater(labels, 0), mask), mstype.int32) * labels if self.use_ambigous_sample: bbox_weights = self.cast(self.logicaland(self.equal(labels, 1), mask), mstype.int32) * labels - labels = self.cast(self.onehot(labels, self.num_classes, self.on_value, self.off_value), mstype.float32) + labels = self.cast(self.onehot(labels, self.num_classes, self.on_value, self.off_value), x_cls.dtype) bbox_targets = self.tile(self.expandims(bbox_targets, 1), (1, self.num_classes, 1)) loss, loss_cls, loss_reg, loss_print = self.loss(x_cls, x_reg, bbox_targets, bbox_weights, labels, mask)