示例#1
0
    def get_roi_feature(self, conv_fpn_feat, proposal):
        p = self.p
        rcnn_stride = p.stride
        roi_canonical_scale = p.roi_canonical_scale
        roi_canonical_level = p.roi_canonical_level

        group = mx.symbol.Custom(
            op_type="assign_layer_fpn",
            rois=proposal,
            rcnn_stride=rcnn_stride,
            roi_canonical_scale=roi_canonical_scale,
            roi_canonical_level=roi_canonical_level,
            name="assign_layer_fpn"
        )
        proposal_fpn = dict()
        for i, stride in enumerate(rcnn_stride):
            proposal_fpn["stride%s" % stride] = group[i]

        if p.fp16:
            for stride in rcnn_stride:
                conv_fpn_feat["stride%s" % stride] = X.to_fp32(
                    conv_fpn_feat["stride%s" % stride],
                    name="fpn_stride%s_to_fp32"
                )

        fpn_roi_feats = list()
        for stride in rcnn_stride:
            feat_lvl = conv_fpn_feat["stride%s" % stride]
            proposal_lvl = proposal_fpn["stride%s" % stride]
            roi_feat = X.roi_align(
                feat_lvl,
                rois=proposal_lvl,
                out_size=p.out_size,
                stride=stride,
                name="roi_align"
            )
            roi_feat = X.reshape(
                data=roi_feat,
                shape=(-3, -2),
                name='roi_feat_reshape'
            )
            fpn_roi_feats.append(roi_feat)
        roi_feat = X.add_n(*fpn_roi_feats)

        if p.fp16:
            roi_feat = X.to_fp16(roi_feat, name="roi_feat_to_fp16")

        return roi_feat
示例#2
0
    def get_roi_feature(self, rcnn_feat, proposal):
        p = self.p

        if p.fp16:
            rcnn_feat = X.to_fp32(rcnn_feat, "rcnn_feat_to_fp32")

        roi_feat = X.roi_align(rcnn_feat,
                               rois=proposal,
                               out_size=p.out_size,
                               stride=p.stride,
                               name="roi_align")

        if p.fp16:
            roi_feat = X.to_fp16(roi_feat, "roi_feat_to_fp16")

        roi_feat = X.reshape(roi_feat, (-3, -2))

        return roi_feat
示例#3
0
    def get_roi_feature(self, conv_fpn_feat, proposal):
        p = self.p
        rcnn_stride = p.stride

        group = mx.symbol.Custom(rois=proposal, op_type='assign_layer_fpn')
        proposal_fpn = dict()
        proposal_fpn["stride4"] = group[1]
        proposal_fpn["stride8"] = group[2]
        proposal_fpn["stride16"] = group[3]
        proposal_fpn["stride32"] = group[4]

        if p.fp16:
            for stride in rcnn_stride:
                conv_fpn_feat["stride%s" % stride] = X.to_fp32(
                    conv_fpn_feat["stride%s" % stride],
                    name="fpn_stride%s_to_fp32")

        fpn_roi_feats = list()
        for stride in rcnn_stride:
            feat_lvl = conv_fpn_feat["stride%s" % stride]
            proposal_lvl = proposal_fpn["stride%s" % stride]
            roi_feat = X.roi_align(feat_lvl,
                                   rois=proposal_lvl,
                                   out_size=p.out_size,
                                   stride=stride,
                                   name="roi_align")
            roi_feat = X.reshape(data=roi_feat,
                                 shape=(-3, -2),
                                 name='roi_feat_reshape')
            fpn_roi_feats.append(roi_feat)
        roi_feat = X.add_n(*fpn_roi_feats)

        if p.fp16:
            roi_feat = X.to_fp16(roi_feat, name="roi_feat_to_fp16")

        return roi_feat