首页 前端知识 【ann2coco】图像label转coco格式的JSON

【ann2coco】图像label转coco格式的JSON

2024-04-29 11:04:34 前端知识 前端哥 840 838 我要收藏

目录

🍋🍋需求

🍋🍋coco格式

🍋🍋python代码实现

整理不易,欢迎一键三连!!!

送你们一条美丽的--分割线--


🍋🍋需求

        单波段灰度图label转coco格式的JSON文件

 

🍋🍋coco格式

        COCO 数据集的格式是基于 JSON(JavaScript Object Notation)的,使用一个主 JSON 文件来描述整个数据集,以及其他辅助的 JSON 文件来存储图像和标注等信息。在 COCO 数据集格式中,主要的 JSON 文件通常被称为 "instance" 文件,它包含了以下重要字段:

  •  "info" 字段:用于描述数据集的基本信息,例如名称、版本、年份等。
  • "license" 字段:包含了数据集使用的许可证信息,可以指定数据集的使用和共享方式。
  • "images" 字段:存储了每张图像的相关信息,包括图像的唯一标识符、文件名、高度、宽度等。
  • "annotations" 字段:记录了每个图像的标注信息,每个标注包含了一些必要的信息,如标注的唯一标识符、所属图像的标识符、类别、边界框信息等。
  • "categories" 字段:定义了数据集中所有类别的信息,包括类别的唯一标识符、名称等。 

                       

        coco格式的JSON文件包含了一个COCO数据集的基本信息。它包括了数据集的信息(年份、版本、描述等)、许可证信息、图像信息(宽度、高度、文件名等)、标注信息(标注ID、图像ID、类别ID、边界框、面积等)以及类别信息(类别ID、类别名称、超类别等)。

        COCO数据格式的JSON文件示例:

{
  "info": {
    "year": 2021,
    "version": "1.0",
    "description": "COCO Dataset Example",
    "contributor": "John Doe",
    "url": "http://example.com",
    "date_created": "2021-06-01"
  },
  "licenses": [
    {
      "id": 1,
      "name": "License 1",
      "url": "http://example.com/license1"
    },
    {
      "id": 2,
      "name": "License 2",
      "url": "http://example.com/license2"
    }
  ],
  "images": [
    {
      "id": 1,
      "width": 500,
      "height": 400,
      "file_name": "image1.jpg",
      "license": 1,
      "date_captured": "2021-01-01"
    },
    {
      "id": 2,
      "width": 800,
      "height": 600,
      "file_name": "image2.jpg",
      "license": 2,
      "date_captured": "2021-02-01"
    }
  ],
  "annotations": [
    {
      "id": 1,
      "image_id": 1,
      "category_id": 1,
      "bbox": [100, 100, 200, 200],
      "area": 40000,
      "iscrowd": 0
    },
    {
      "id": 2,
      "image_id": 1,
      "category_id": 2,
      "bbox": [300, 200, 150, 250],
      "area": 37500,
      "iscrowd": 1
    },
    {
      "id": 3,
      "image_id": 2,
      "category_id": 1,
      "bbox": [50, 50, 300, 400],
      "area": 120000,
      "iscrowd": 0
    }
  ],
  "categories": [
    {
      "id": 1,
      "name": "cat",
      "supercategory": "animal"
    },
    {
      "id": 2,
      "name": "dog",
      "supercategory": "animal"
    }
  ]
}
 

原文链接:https://blog.csdn.net/qq_38308388/article/details/136377164 

🍋🍋python代码实现

        python源码实现:

import json
import numpy as np

def label2coco(gray_label, image_id):
    # 创建COCO数据格式的字典
    coco_data = {
        "info": {},
        "licenses": [],
        "images": [],
        "annotations": [],
        "categories": []
    }

    # 添加图像信息
    image_info = {
        "id": image_id,
        "width": gray_label.shape[1],
        "height": gray_label.shape[0],
        "file_name": "image.jpg",
    }
    coco_data["images"].append(image_info)

    # 添加类别信息
    category_info = {
        "id": 1,
        "name": "object",
        "supercategory": "none"
    }
    coco_data["categories"].append(category_info)

    # 转换标签数据为COCO格式
    label_data = np.squeeze(gray_label)
    unique_labels = np.unique(label_data)
    for label in unique_labels:
        if label == 0:
            continue
        mask = label_data == label
        annotation_info = {
            "id": label,
            "image_id": image_id,
            "category_id": 1,
            "segmentation": [],
            "bbox": [],
            "area": int(np.sum(mask)),
            "iscrowd": 0
        }
        coco_data["annotations"].append(annotation_info)

    return coco_data

# 示例用法
gray_label = np.array([[0, 0, 1, 1],
                      [0, 2, 1, 1],
                      [0, 2, 2, 1]])

coco_data = label2coco(gray_label, image_id=1)
json.dump(coco_data, open("coco_data.json", "w"))

        上述代码实现了将单波段灰度图标签转换为COCO格式的JSON文件的功能。需要将标签存储为一个二维的numpy数组(gray_label),其中每个元素代表一个像素的类别信息。

        在示例中,灰度图标签为:[[0, 0, 1, 1], [0, 2, 1, 1], [0, 2, 2, 1]],其中0表示背景,1和2表示两个不同的物体。image_id为1,表示图像的唯一标识。

        函数label2coco接受灰度标签和图像ID作为输入,并返回COCO数据格式的字典。最后,将该字典存储为JSON文件(coco_data.json)。

        注意:该代码只实现了将灰度图标签转换为COCO格式的基本功能,可以根据实际需要进行修改和扩展。

整理不易,欢迎一键三连!!!

送你们一条美丽的--分割线--

🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

转载请注明出处或者链接地址:https://www.qianduange.cn//article/6139.html
评论
发布的文章

qt JSON和字符串相互转换

2024-05-05 12:05:04

nlohmann::json从入门到精通

2024-05-05 12:05:00

Android-第十节JSON讲解

2024-05-05 12:05:35

FastJson 框架详解

2024-05-05 12:05:31

MySql操作JSON

2024-05-05 12:05:31

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!