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)