cocoapi的 rle 解码使用

news/2024/7/8 0:00:45

cocoapi 是目前mask数据记录的一个比较好的解决方案, 网上有很多相关的使用资料.如COCO数据集介绍, 这里感谢大家的贡献.

cocoapi 数据本身是一组json描述结构, cocoapi 项目是解析和生成json数据结构, json有个不能嵌套的弊端, 所以一个json文件往往比较大.

cocoapi核心部分是rle数据的压缩, 我本地尝试了一张图片, 如果保存png格式, 数据大小在1.4M左右, 如果使用rle格式保存存储数据只有82.7K, 相对压缩了17倍, 对于传输和存储非常友好, 很多项目直接使用的 rle 数据结构, 而不是 cocoapi 的完整协议.

比如我这里参考的 SA-1B(segment-anything) 数据结构.SA-1B(segment-anything)/An_...Y0/sa_10001.json

{
    "image": {
        "image_id": 10001,
        "width": 2250,
        "height": 1500,
        "file_name": "sa_10001.jpg"
    },
    "annotations": [
        {
            "bbox": [
                957.0,
                514.0,
                75.0,
                91.0
            ],
            "area": 5437,
            "segmentation": {
                "size": [
                    1500,
                    2250
                ],
                "counts": "]]j[1<\\^17J5K5L3K6J6@?F:K5L3O2N1O2M2O1O100O00100O100O10O10O1000O10O1000O100000000O1000001O0O101O000O2O001O1N101O1O0O2O1O1O1O1N2O1O1O2M2O2N1O2N2N2M4M2N3L5K6I8D^Ufg1"
            },
            "predicted_iou": 0.9770874977111816,
            "point_coords": [
                [
                    1018.0625,
                    559.0625
                ]
            ],
            "crop_box": [
                499.0,
                311.0,
                755.0,
                567.0
            ],
            "id": 857953971,
            "stability_score": 0.985213577747345
        },
        {
            "bbox": [
                1373.0,
                575.0,
                83.0,
                75.0
            ],
            "area": 3007,
            "segmentation": {
                "size": [
                    1500,
                    2250
                ],
                "counts": "_ikn1=]^14N2M2O2N1N3N1O1O1O101N1O101N1O2O0O100O2O001O00001O001O1O001O001O10O0100O100O01N101N001O000000000O10001O00000000001O0O2O1O1O1O1O001O001O001O001O2N3M2M2O2N1O1O2N2M3N4IooXT1"
            },
            "predicted_iou": 0.9649069309234619,
            "point_coords": [
                [
                    1422.6875,
                    629.9375
                ]
            ],
            "crop_box": [
                998.0,
                311.0,
                755.0,
                567.0
            ],
            "id": 857953972,
            "stability_score": 0.9847984313964844
        },
...

其中 segmentation 数据结构就是 rle结构的.

from pycocotools import mask as maskUtils
import matplotlib.pyplot as plt
import json

# 下载和读取上面的 json数据文件到 mask_info 中, 下面代码进行rle数据解码
mask_a = maskUtils.decode(mask_info['annotations']['segmentation'])

# 展示
plt.figure('image')
plt.imshow(mask_a)
plt.show()

主要是一个处理记录, 希望对大家有帮助, 欢迎评论区讨论.


http://lihuaxi.xjx100.cn/news/2001387.html

相关文章

wifi配网(esp8266和esp32)-http get和post方式

wifi配网(esp8266和esp32)-http get和post方式 通过http get和post方式来给esp芯片配网 步骤&#xff1a; 开机&#xff0c;指示灯亮起后(需要灯闪烁3下后)&#xff0c;需在3s内&#xff08;超过3s则会正常启动&#xff09;&#xff0c;按一下按键&#xff08;注&#xff1a;切…

日本理化学研究所和大阪大学研发的集成了生成式AI的实验机器人,可以临场自我决策并具有高运动精度

理化学研究所和大阪大学的研究小组宣布&#xff0c;他们开发了一种实验机器人&#xff0c;该机器人能利用生成式人工智能&#xff08;AI&#xff09;自主做出准确判断并有效工作。该机器人设计用于处理形状、大小和排列各异的样本&#xff0c;如同植物的叶子。这项技术有望应用…

为什么MySQL推荐使用自增主键?

为什么MySQL推荐使用自增主键&#xff1f; 主键数据记录本身被存于主索引&#xff08;一棵BTree&#xff09;的叶子节点上&#xff0c;这就要求同一个叶子节点内&#xff08;大小为一个内存页或磁盘页&#xff09;的各条数据记录按主键顺序存放&#xff0c;因此每当有一条新的记…

Python完善APC netbotz 250报告功能实现主动式运维。

首先介绍一下APC netbotz 250, 这是施耐德推出的一款机架式监控主机&#xff0c;能够对所有IT环境进行经济有效而且灵活的监控&#xff0c;号称APC史上性价比最高的环境监测方案&#xff0c;这可不是我吹的&#xff0c;是APC官网的介绍&#xff0c;可参考下面的官网截图。 我们…

STM32F407移植OpenHarmony笔记4

上一篇写到make menuconfig报错&#xff0c;继续开整。 make menuconfig需要/device/soc/*下面有对应的Kconfig文件。 直接去gitee下载stm32的配置文件拿来参考用。 先提取Kconfig文件&#xff0c;后面再添加其它文件。https://gitee.com/openharmony/device_soc_st/tree/Open…

利用路由守卫实现token访问拦截

需求&#xff1a;在项目中&#xff0c;我们经常会遇到对路径访问的拦截&#xff0c;如&#xff1a;未登录时&#xff0c;只允许访问登录和404页面&#xff0c;在登录后&#xff0c;不允许直接通过url访问登录页面等。本文章将对该需求做简单介绍。 一、实现思路 添加全局路由守…

点餐APP开发需要用到的一些源代码

在数字化日益普及的今天&#xff0c;点餐APP已经成为人们日常生活的重要组成部分&#xff0c;从校园食堂到高级餐厅&#xff0c;从快餐外卖到定制化营养餐&#xff0c;点餐APP的多样性和便利性满足了不同用户的需求&#xff0c;本文将深入探讨在开发一款点餐APP时可能用到的源代…

系统架构设计师-22年-下午题目

系统架构设计师-22年-下午题目 更多软考知识请访问 https://ruankao.blog.csdn.net/ 试题一必答&#xff0c;二、三、四、五题中任选两题作答 试题一 (25分) 说明 某电子商务公司拟升级其会员与促销管理系统&#xff0c;向用户提供个性化服务&#xff0c;提高用户的粘性。…