COCO数据集解读

https://blog.csdn.net/qq_33254870/article/details/88683032

https://blog.csdn.net/zym19941119/article/details/80241663

 

现就几个函数做一些说明:
getCatIds(catNms=[], supNms=[], catIds=[]) :通过输入类别的名字、大类的名字或是种类的id,来筛选得到图片所属类别的id。
getImgIds(imgIds=[], catIds=[]) :通过图片的id或所属种类的id得到图片的id。
loadImgs(ids=[]) :得到图片的id信息后,就可以用loadImgs得到图片的信息了 。
getAnnIds(imgIds=[], catIds=[], areaRng=[], iscrowd=None) :通过输入图片的id、类别的id、实例的面积、是否是人群来得到图片的注释id。再根据注释信息进行实例分割。
loadAnns(ids=[]) :通过注释的id,得到注释的信息。
showAnns(anns) :使用标注的信息画分割的结果。
 

COCO数据整理

import os
import numpy as np
import util as ut

# -------------------
try:       # pycocotools 已经加入了全局环境变量中
    from pycocotools.coco import COCO
except ModuleNotFoundError:
    import sys
    # 加载 COCO API 环境
    sys.path.append('E:/pytorch/tools/cocoapi-master/PythonAPI')
    from pycocotools.coco import COCO


root = 'E:/dataset/object_detect/coco2017'  # 你下载的 COCO 数据集所在目录
# 查看 images 下的图片
root_img_path = root+ '/train2017'
print( os.listdir(root_img_path))
Z = os.listdir(root_img_path)

annFile = 'E:/dataset/object_detect/coco2017/annotations/instances_train2017.json'
coco = COCO(annFile)
cats = coco.loadCats(coco.getCatIds())
nms = [cat['name'] for cat in cats]
print('COCO categories: \n {} \n'.format(' '.join(nms)))
nms = set([cat['supercategory'] for cat in cats])
print('COCO supercategories: \n{}'.format(' '.join(nms)))


#'person', 'car', 'bus', 'truck', 'bicycle', 'motorcycle'
# 0          1      2      3         4          5
need_nms = ['person', 'car', 'bus', 'truck', 'bicycle', 'motorcycle']
id = ["0", "1", "2", "3", "4", "5"]

out_text = "ann_train.txt"

labels = []
imgIds = []
for i in range(0, len(need_nms)):

    catIds = coco.getCatIds(catNms=[need_nms[i]])
    imgId = coco.getImgIds(catIds=catIds)
    imgIds += imgId
print(" len imgIds :", len(imgIds))
imgIds = list(set(imgIds))
print("len :", len(imgIds))

for img_id in imgIds:
    img_dic = coco.loadImgs(img_id)[0]

    bboxs = ''
    for i in range(0, len(need_nms)):
        catIds = coco.getCatIds(catNms=[need_nms[i]])

        annIds = coco.getAnnIds(imgIds=img_dic['id'], catIds=catIds, iscrowd=None)

        anns = coco.loadAnns(annIds)

        for ann in anns:
            bboxs += " "
            bboxs += str(ann['bbox'][0]) + ","
            bboxs += str(ann['bbox'][1]) + ","
            bboxs += str(ann['bbox'][0] + ann['bbox'][2]) + ","
            bboxs += str(ann['bbox'][1] + ann['bbox'][3]) + ","
            bboxs += id[i]

    label = root_img_path + "/" + img_dic['file_name'] + bboxs + "\n"
    labels.append(label)

ut.write_line(out_text, labels)


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NineDays66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值