def process()

in libraries/python/coco/process_single_image_output.py [0:0]


    def process(self):
        im_infos = []
        with open(self.args.im_info, "r") as f:
            lines = f.readlines()
        for line in lines:
            im_info = json.loads(line)
            im_infos.append(im_info)

        blobs = self.getBlobs()
        assert len(im_infos) == len(
            blobs
        ), "The number for im_infos and blobs do not match"
        results = []
        for i in range(len(blobs)):
            one_blob = blobs[i]
            im_info = im_infos[i]
            classids = one_blob["class_nms"]
            scores = one_blob["score_nms"]  # bbox scores, (R, )
            boxes = one_blob["bbox_nms"]  # i.e., boxes, (R, 4*1)
            masks = one_blob["mask_fcn_probs"]  # (R, cls, mask_dim, mask_dim)
            R = boxes.shape[0]
            im_masks = []
            if R > 0:
                im_masks = self.compute_segm_results(
                    masks,
                    boxes,
                    classids,
                    im_info["height"],
                    im_info["width"],
                    rle_encode=self.args.rle_encode,
                )

            boxes = np.column_stack((boxes, scores))

            ret = {
                "classids": classids,
                "boxes": boxes,
                "masks": masks,
                "im_masks": im_masks,
            }
            results.append(ret)
        with open(self.args.output_file, "w") as f:
            pickle.dump(results, f, pickle.HIGHEST_PROTOCOL)