def construct(self, box_xy, box_wh, box_confidence, box_probs, image_shape): batch_size = F.shape(box_xy)[0] x = box_xy[:, :, :, :, 0:1] y = box_xy[:, :, :, :, 1:2] box_yx = P.Concat(-1)((y, x)) w = box_wh[:, :, :, :, 0:1] h = box_wh[:, :, :, :, 1:2] box_hw = P.Concat(-1)((h, w)) new_shape = P.Round()(image_shape * P.ReduceMin()(self.input_shape / image_shape)) offset = (self.input_shape - new_shape) / 2.0 / self.input_shape scale = self.input_shape / new_shape box_yx = (box_yx - offset) * scale box_hw = box_hw * scale box_min = box_yx - box_hw / 2.0 box_max = box_yx + box_hw / 2.0 boxes = P.Concat(-1)( (box_min[:, :, :, :, 0:1], box_min[:, :, :, :, 1:2], box_max[:, :, :, :, 0:1], box_max[:, :, :, :, 1:2])) image_scale = P.Tile()(image_shape, (1, 2)) boxes = boxes * image_scale boxes = F.reshape(boxes, (batch_size, -1, 4)) boxes_scores = box_confidence * box_probs boxes_scores = F.reshape(boxes_scores, (batch_size, -1, self.num_classes)) return boxes, boxes_scores
def __init__(self, num_bits=8, compute_type=mstype.float32, clip_value=1.0, per_channel=False): super(QuantizeWeightCell, self).__init__() self.num_bits = num_bits self.compute_type = compute_type self.clip_value = clip_value self.per_channel = per_channel self.clamp = C.clip_by_value self.abs = P.Abs() self.sum = P.ReduceSum() self.nelement = F.size self.div = P.Div() self.cast = P.Cast() self.max = P.ReduceMax() self.min = P.ReduceMin() self.round = P.Round()
('Sum_5', { 'block': P.ReduceSum(keep_dims=True), 'desc_const': [()], 'desc_inputs': [[2, 3, 4]], 'desc_bprop': [[1, 1, 1]]}), ('Sum_6', { 'block': P.ReduceSum(), 'desc_const': [()], 'desc_inputs': [[2, 3, 4]], 'desc_bprop': [[1]]}), ('Sign', { 'block': P.Sign(), 'desc_inputs': [[3]], 'desc_bprop': [[3]]}), ('Round', { 'block': P.Round(), 'desc_inputs': [[3]], 'desc_bprop': [[3]]}), ('Atan2', { 'block': P.Atan2(), 'desc_inputs': [Tensor(np.array([0, 1]).astype(np.float32)), Tensor(np.array([1, 1]).astype(np.float32))], 'desc_bprop': [[2]]}) ] test_case_nn_ops = [ ('BiasAdd', { 'block': P.BiasAdd(), 'desc_inputs': [[1, 3, 3, 3], [3]], 'desc_bprop': [[1, 3, 3, 3]]}), ('BiasAddGrad', {
def __init__(self, strategy1, strategy2): super().__init__() self.matmul = P.MatMul().set_strategy(strategy1) self.round = P.Round().set_strategy(strategy2) self.matmul2 = P.MatMul().set_strategy(strategy1)
'skip': ['backward']}), # input is not tensor ('Sign0', { 'block': (P.Sign(), {'exception': TypeError, 'error_keywords': ['Sign']}), 'desc_inputs': [5.0], 'skip': ['backward']}), # input is Tensor(bool) ('Sign1', { 'block': (P.Sign(), {'exception': TypeError, 'error_keywords': ['Sign']}), 'desc_inputs': [Tensor(np.ones([3, 4]).astype(np.bool_))], 'skip': ['backward']}), # input is not tensor ('Round0', { 'block': (P.Round(), {'exception': TypeError, 'error_keywords': ['Round']}), 'desc_inputs': [5.0], 'skip': ['backward']}), # input is Tensor(bool) ('Round1', { 'block': (P.Round(), {'exception': TypeError, 'error_keywords': ['Round']}), 'desc_inputs': [Tensor(np.ones([3, 4]).astype(np.bool_))], 'skip': ['backward']}), # one input is scalar, and another is Tensor(float32) ('Atan20', { 'block': (P.Atan2(), {'exception': TypeError, 'error_keywords': ['Atan2']}), 'desc_inputs': [5.0, Tensor(np.ones([3, 4]).astype(np.float32))], 'skip': ['backward']}), # input two tensors, but element types are not same ('Atan21', {
'desc_inputs': [5.0], 'skip': ['backward'] }), # input is Tensor(bool) ('Sign1', { 'block': (P.Sign(), { 'exception': TypeError, 'error_keywords': ['Sign'] }), 'desc_inputs': [Tensor(np.ones([3, 4]).astype(np.bool_))], 'skip': ['backward'] }), # input is not tensor ('Round0', { 'block': (P.Round(), { 'exception': TypeError, 'error_keywords': ['Round'] }), 'desc_inputs': [5.0], 'skip': ['backward'] }), # input is Tensor(bool) ('Round1', { 'block': (P.Round(), { 'exception': TypeError, 'error_keywords': ['Round'] }), 'desc_inputs': [Tensor(np.ones([3, 4]).astype(np.bool_))], 'skip': ['backward'] }),
def __init__(self, config, batch_size, num_bboxes, add_gt_as_proposals): super(BboxAssignSampleForRcnn, self).__init__() cfg = config self.batch_size = batch_size self.neg_iou_thr = cfg.neg_iou_thr_stage2 self.pos_iou_thr = cfg.pos_iou_thr_stage2 self.min_pos_iou = cfg.min_pos_iou_stage2 self.num_gts = cfg.num_gts self.num_bboxes = num_bboxes self.num_expected_pos = cfg.num_expected_pos_stage2 self.num_expected_neg = cfg.num_expected_neg_stage2 self.num_expected_total = cfg.num_expected_total_stage2 self.add_gt_as_proposals = add_gt_as_proposals self.label_inds = Tensor( np.arange(1, self.num_gts + 1).astype(np.int32)) self.add_gt_as_proposals_valid = Tensor( np.array(self.add_gt_as_proposals * np.ones(self.num_gts), dtype=np.int32)) self.concat = P.Concat(axis=0) self.max_gt = P.ArgMaxWithValue(axis=0) self.max_anchor = P.ArgMaxWithValue(axis=1) self.sum_inds = P.ReduceSum() self.iou = P.IOU() self.greaterequal = P.GreaterEqual() self.greater = P.Greater() self.select = P.Select() self.gatherND = P.GatherNd() self.squeeze = P.Squeeze() self.cast = P.Cast() self.logicaland = P.LogicalAnd() self.less = P.Less() self.random_choice_with_mask_pos = P.RandomChoiceWithMask( self.num_expected_pos) self.random_choice_with_mask_neg = P.RandomChoiceWithMask( self.num_expected_neg) self.reshape = P.Reshape() self.equal = P.Equal() self.bounding_box_encode = P.BoundingBoxEncode(means=(0.0, 0.0, 0.0, 0.0), stds=(0.1, 0.1, 0.2, 0.2)) self.concat_axis1 = P.Concat(axis=1) self.logicalnot = P.LogicalNot() self.tile = P.Tile() # Check self.check_gt_one = Tensor( np.array(-1 * np.ones((self.num_gts, 4)), dtype=np.float16)) self.check_anchor_two = Tensor( np.array(-2 * np.ones((self.num_bboxes, 4)), dtype=np.float16)) # Init tensor self.assigned_gt_inds = Tensor( np.array(-1 * np.ones(num_bboxes), dtype=np.int32)) self.assigned_gt_zeros = Tensor( np.array(np.zeros(num_bboxes), dtype=np.int32)) self.assigned_gt_ones = Tensor( np.array(np.ones(num_bboxes), dtype=np.int32)) self.assigned_gt_ignores = Tensor( np.array(-1 * np.ones(num_bboxes), dtype=np.int32)) self.assigned_pos_ones = Tensor( np.array(np.ones(self.num_expected_pos), dtype=np.int32)) self.gt_ignores = Tensor( np.array(-1 * np.ones(self.num_gts), dtype=np.int32)) self.range_pos_size = Tensor( np.arange(self.num_expected_pos).astype(np.float16)) self.check_neg_mask = Tensor( np.array(np.ones(self.num_expected_neg - self.num_expected_pos), dtype=np.bool)) self.bboxs_neg_mask = Tensor( np.zeros((self.num_expected_neg, 4), dtype=np.float16)) self.labels_neg_mask = Tensor( np.array(np.zeros(self.num_expected_neg), dtype=np.uint8)) self.reshape_shape_pos = (self.num_expected_pos, 1) self.reshape_shape_neg = (self.num_expected_neg, 1) self.scalar_zero = Tensor(0.0, dtype=mstype.float16) self.scalar_neg_iou_thr = Tensor(self.neg_iou_thr, dtype=mstype.float16) self.scalar_pos_iou_thr = Tensor(self.pos_iou_thr, dtype=mstype.float16) self.scalar_min_pos_iou = Tensor(self.min_pos_iou, dtype=mstype.float16) self.expand_dims = P.ExpandDims() self.split = P.Split(axis=1, output_num=4) self.concat_last_axis = P.Concat(axis=-1) self.round = P.Round() self.image_h_w = Tensor( [cfg.img_height, cfg.img_width, cfg.img_height, cfg.img_width], dtype=mstype.float16) self.range = nn.Range(start=0, limit=cfg.num_expected_pos_stage2) self.crop_and_resize = P.CropAndResize(method="bilinear_v2") self.mask_shape = (cfg.mask_shape[0], cfg.mask_shape[1]) self.squeeze_mask_last = P.Squeeze(axis=-1)
def __init__(self): super(RoundNet, self).__init__() self.round = P.Round()