COCO 数据集分析和coco API使用

0. coco数据集格式了解:分析数据存储格式

1. coco Python API-使用:coco API 使用​​​​​​

2. coco Python API-源码分析:coco API 源码分析​​​​​​

3. coco Pythonn API-数据集类数据分布:coco 数据类别数量分布

 

下面举一个例子,将一个大的标注文件(json)转化为每张图对应的(小josn文件),利用小json文件可以方便的与其他数据格式进行转换。

1. 首先看看目录

    .
   ├── 517
   │   ├── imageset
   │   └── instances_default.json
   ├── get_img_info.py
   └── utils.py

    注:imageset里面存放的是图片。

           instances_default.json是标准的coco数据集标注格式。

2. 看代码

import os
import cv2
import shutil
import json
from tqdm import tqdm
from PIL import Image
from pycocotools.coco import COCO


def json_dump(data, json_out):
    json.dump(data, open(json_out, "w"), indent=2, ensure_ascii=False)


def cati2name(coco):
    classes = dict()
    for cat in coco.dataset['categories']:
        classes[cat['id']] = cat['name']
    return classes


def get_img_info(img, coco, classes, img_dir):
    file_name = img['file_name']
    file_path = os.path.join(img_dir, file_name)
    I = cv2.imread(file_path)
    ann_ids = coco.getAnnIds(imgIds=img['id'], iscrowd=None)
    anns = coco.loadAnns(ann_ids)
    json_path = file_path.replace(".jpg", ".json")
    img_info = {}
    img_info['img'] = file_name
    anns_new = []
    for ann in anns:
        ann['name'] = classes[ann['category_id']]
    img_info['anns'] = anns
    json_dump(img_info, json_path)


def main(ann_path):
    img_dir = os.path.join(ann_path.split("/")[0], 'imageset')
    coco = COCO(ann_path)
    classes = cati2name(coco)
    img_ids = coco.getImgIds()
    for img_id in tqdm(img_ids):
        img = coco.loadImgs(img_id)[0]
        get_img_info(img, coco, classes, img_dir)


if __name__ == "__main__":
    ann_path = "517/instances_default.json"
    main(ann_path)

利用该代码,就将整个标注文件拆解为多个标注文件,每张图对应一个标注文件。
 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值