Computer vision 如何保存和重用语义分割结果?
我使用detectron2对图像进行语义分割。Detectron2具有用于显示结果的预构建功能。我感兴趣的是保存分段的结果,并在需要时解析它们。因此,我回溯了代码,发现instances_to_coco_json函数就是输出分段结果的函数。我试着保存结果 结果采用以下格式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
{
"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
]