Computer vision 如何保存和重用语义分割结果?

Computer vision 如何保存和重用语义分割结果?,computer-vision,image-segmentation,semantic-segmentation,Computer Vision,Image Segmentation,Semantic Segmentation,我使用detectron2对图像进行语义分割。Detectron2具有用于显示结果的预构建功能。我感兴趣的是保存分段的结果,并在需要时解析它们。因此,我回溯了代码,发现instances_to_coco_json函数就是输出分段结果的函数。我试着保存结果 结果采用以下格式 { "image_id": 1, "segmentation": { "counts": "R[W<=Sf0001O0000000000000000000000

我使用detectron2对图像进行语义分割。Detectron2具有用于显示结果的预构建功能。我感兴趣的是保存分段的结果,并在需要时解析它们。因此,我回溯了代码,发现instances_to_coco_json函数就是输出分段结果的函数。我试着保存结果

结果采用以下格式

 {
        "image_id": 1, 
        "segmentation": {
            "counts": "R[W<=Sf0001O000000000000000000000000000000000000000^_\\?", 
            "size": [
                720, 
                1280
            ]
        }, 
        "category_id": 1, 
        "score": 0.992115
    }, 

如果输出是coco格式,我如何理解它?

要理解这个问题,您需要知道在coco协议中有两种不同的存储掩码格式。一种是使用多边形,如第二个示例,另一种是使用称为的二进制数据压缩格式,这是第一个示例的情况。在COCO中,如果掩码以RLE格式存储,则分割将是具有
“counts”
“size”
键的对象。 如果选中
detectron2/detectron2/utils/visualizer.py
,您将在
类GenericMask的构造函数中找到处理不同掩码格式的代码

您可以轻松地将RLE格式转换为二进制掩码或多边形,您还可以在
detectron2/tools/visualize\u json\u results.py
找到一个非常有用的可视化脚本

TLDR:

简而言之,要将RLE分段转换为二进制掩码,只需运行以下脚本(假设您已安装COCO python api,这是detection2的先决条件):

导入pycocotools.mask作为mask\u util
#使用第一个示例提供的片段

段={'counts':'R[WHi,你还需要帮助吗?是的,一些帮助会很好。我已经发布了我的答案:)我有同样的需要。基本上,instances\u to coco\u json将detectron2.structures.instances.instances对象转换为json文件。你知道如何从json转换回instances对象吗?谢谢你知道如何从json转换回instances对象吗对象?,谢谢
 "segmentation": [
            [
                662.1764705882352, 
                387, 
                686, 
                386.5882352941176, 
                686, 
                398, 
                662.7647058823529, 
                399
            ]