cocoapi的 rle 解码使用

news/2024/5/20 7:35:05 标签: python, 语义分割

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结构的.

python">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://www.niftyadmin.cn/n/5360643.html

相关文章

学习Android的第一天

目录 什么是 Android&#xff1f; Android 官网 Android 应用程序 Android 开发环境搭建 Android 平台架构 Android 应用程序组件 附件组件 Android 第一个程序 HelloWorld 什么是 Android&#xff1f; Android&#xff08;发音为[ˈnˌdrɔɪd]&#xff0c;非官方中文…

Java开发工具 IntelliJ IDEA 2023中文

IntelliJ IDEA 2023是一款强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;适用于多种编程语言&#xff0c;包括Java、Python、Kotlin等。它提供了许多特色功能&#xff0c;以提高开发效率和代码质量。 Java开发工具 IntelliJ IDEA 2023中文 以下是一些IntelliJ ID…

Tomcat在Java web的应用

Tomcat在Java web的应用 本来这篇博客顺应之前的内容&#xff0c;应该是需要写Tomcat的简介、基本使用、配置和部署项目、Web的项目结构、创建MavenWeb、idea本地集成以及Tomcat的Maven插件的笔记内容&#xff0c;但是总觉得没必要&#xff0c;因为这些内容网上肯定很多了&…

Emmet常用语法总结

Emmet常用语法总结 子元素&#xff1a;>兄弟元素&#xff1a;上级元素&#xff1a;^倍数&#xff1a;*分组&#xff1a;&#xff08;&#xff09;属性&#xff1a;[]id和类&#xff1a;# .迭代数字&#xff1a;$文本内容&#xff1a;{}注意事项 Emmet是许多流行文本编辑器的…

FreeRTOS 使用 二进制信号量进行任务同步

使用 FreeRTOS 的二进制信号量进行任务同步 在嵌入式系统中&#xff0c;任务之间的同步是一项重要的任务&#xff0c;特别是在多任务环境下。FreeRTOS 是一个流行的实时操作系统内核&#xff0c;它提供了许多同步机制&#xff0c;其中包括二进制信号量。本文将介绍二进制信号量…

杠杆交易在伦敦金市场的优势与风险

伦敦金作为黄金市场的灯塔&#xff0c;每天吸引着全球投资者的目光。伦敦金的特殊地位使得以它为基准的杠杆交易成为众多投资者追逐的目标。在这篇文章中&#xff0c;我们将深入探讨伦敦金杠杆交易的奥秘&#xff0c;带你揭开这一盛宴的神秘面纱。 伦敦金杠杆交易的核心在于通过…

【Java】和面试官谈策略模式

你还在大篇幅的使用if…else吗&#xff1f; 举个例子&#xff1a;比如你们有一个订单系统&#xff0c;用户在平时下单和在双11的时候下单的时候逻辑是不一样的&#xff0c;可能双11下单就涉及到一些优惠之类的&#xff0c;这个时候你怎么做&#xff0c;应该有好多同学是这样做…

如何解决 docker registry x509 证书不信任问题?

最近想尝试一下极狐GitLab&#xff08;可以理解为 GitLab 在中国的发行版&#xff09;内置的容器镜像仓库&#xff0c;这样就不用自己安装 Harbor 之类的了。于是找了个服务器安装了一个极狐GitLab 的私有化部署版本&#xff0c;安装过程可以参考过往的技术文章使用Omnibus 安装…