当前位置: 首页 > article >正文

【数据处理】COCO 数据集掩码 Run-Length Encoding (RLE) 编码转二进制掩码

输入:结果.json
输出:mask.jpg
json内容示例如下:

{
	"labels":[ # class_id 
		1,
		2,
		3,
		...
	],
	"scores":[ # 置信度
 		0.2,
 		0.7,
 		0.3,
 		...
	],
	"bboxes":[
        [
            1244.0,
            161.0,
            1335.0,
            178.0
        ],
        [
            1243.0,
            161.0,
            1336.0,
            178.0
        ],
        [
            1242.0,
            160.0,
            1336.0,
            179.0
        ],
        ...
	],
	   "masks": [ # Run-Length Encoding (RLE) 编码格式的掩码
        {
            "size": [
                1024,
                1536
            ],
            "counts": "]UlV15eo06M3O1O100O1000KcPOG]o09dPOF\\o0:dPOF\\o0:dPOF\\o0:dPOF\\o0:cPOG]o0:bPOF^o0:bPOF^o0>0000000000000000000000000O100000000000000O100IaPOM_o03aPOM_o03aPOM_o02bPON^o02bPON^o02cPOM]o03cPOM]o02dPON\\o02dPON\\o02dPOM]o03cPOM]o03cPOM]o03cPOM]o03cPOM]o03cPOM]o03cPOM]o03cPOM]o03cPOM]o03cPOM]o03cPOM]o03cPOM]o03dPOK]o05cPOK]o05700000000O1O2MYP;1hoD00Ojo10WPN002N1ONPkX6"
        },
        {
            "size": [
                1024,
                1536
            ],
            "counts": "]UkV13io06K3N2N200O10000000000000000000000000000000000000000000000000O1000000000000000000O1000000IaPOM_o03aPOM_o03aPOM_o03aPOM_o03aPOM_o03aPOM_o03aPOM_o03aPOM_o03aPOL`o04`POL`o04`POL`o04`POL`o04`POL`o04`POL`o04`POL`o04`POL`o04`POL`o04aPOJ`o06`POJ`o06aPOI_o06bPOJ^o06600O1O2N1O1O10000000000000WP21hoM00OJ0^PO0ao026002N000001LQkW6"
        },
        {
            "size": [
                1024,
                1536
            ],
            "counts": "]UjV12lo05J3M3N3N100O10000000O100000000000000000000000000000000000000000000O1000000000000000000O1000000000000000000000000O10O1000000000O1L_POIbo06_POIao06aPOI_o075O1O101N100O100000O010001NXPO0bo00^PO1ho00O1JN^PO2ao00^POOco02\\PONdo043000000O1MRkW6"
        },
}

counts 字段是 COCO 数据集中用于表示二进制掩码的 Run-Length Encoding (RLE) 编码格式。RLE 是一种无损数据压缩方法,特别适用于包含大量连续重复值的数据(如二进制掩码)。

RLE 编码格式
RLE 编码的基本思想是将连续的相同值(如 0 或 1)压缩为一个计数值。在 COCO 数据集的 RLE 编码中:

  • 编码是一个字符串,由一系列数字和符号组成。
  • 数字表示连续像素的数量。
  • 符号(如字母或特殊字符)表示像素的值(通常是 0 或 1)。

代码
Python 示例,使用 pycocotools 库将 RLE 编码转换为二进制掩码


def json2starmask(json_data):
    """
    Processes the JSON data, decoding the masks for labels == 1 and scores > 0.3.

    Args:
        json_data (dict): Loaded JSON data.
    """
    results = []

    labels=json_data['labels']
    scores=json_data['scores']
    masks=json_data['masks']
    for i,(label,score,mask) in enumerate(zip(labels,scores,masks)) :
        if label == 1 and score > 0.3: # 这边可以设置想要解吗的label和置信度分数
            binary_mask = maskUtils.decode(mask) # min=0,max=1
            results.append(binary_mask*255) # mask*255,看的更清楚~
    results = np.sum(results, axis=0) #(可选)这一步是将实例分割转为语义分割mask,
    return results
    
 json_path='/path/to/结果.json'
 with open(json_path, "r", encoding='utf-8') as jsonf:
     json_data = json.load(jsonf)
 decoded_masks = json2starmask(json_data)
 cv2.imwrite('decoded_masks.jpg',decoded_masks)


http://www.kler.cn/a/560373.html

相关文章:

  • UE5 Gameplay框架及继承关系详解
  • WPF基本布局基础
  • 【无人集群系列---大疆无人集群技术进展、技术路线与未来发展方向】
  • Hi3516CV610开发板ISP调试之——图像ISP在线调试 环境搭建教程
  • 理解CompletableFuture的非阻塞
  • springboot005学生心理咨询评估系统(源码+数据库+文档)
  • 使用Vue-Flow创建一个流程图可视化节点坐标查询器
  • 【算法】位运算
  • 4. Spring Cloud Gateway 入门与使用
  • 牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)
  • JavaWeb基础专项复习4——会话对象Session and Cookie
  • 【深度学习】Java DL4J 基于MLP构建农业数据分析模型
  • 软件需求管理办法,软件开发管理指南(Word原件)
  • 纯电动轻型载货车能量流测试优化研究
  • 鸿蒙开发深入浅出04(首页数据渲染、搜索、Stack样式堆叠、Grid布局、shadow阴影)
  • 网络安全漏洞管理要求 网络安全产品漏洞
  • Day54(补)【AI思考】-SOA,Web服务以及无状态分步解析与示例说明
  • pyecharts介绍
  • 使用Windbg调试目标进程排查C++软件异常的一般步骤与要点分享
  • DeepSeek 助力 Vue 开发:打造丝滑的文本输入框(Text Input)