COCO数据集的介绍和使用

这篇具有很好参考价值的文章主要介绍了COCO数据集的介绍和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        这篇文章是我研究生阶段入学期间学习所记,主要供自己使用,结合了论文原作和源码,中间借鉴的一些b站的视频以及他人博客的解释,会在文章末尾贴出链接。

目录

COCO数据集的介绍

COCO数据集标注格式

pycocotools的安装和coco api的简单介绍

pycocotools的安装

coco api的简单介绍

pycocotools简单使用实例


COCO数据集的介绍

        COCO数据集是微软公司出资标注的数据集,主要用于目标检测、分割和图像描述。根据官网的介绍,它主要有以下的几种特性:

  • Object Segmentation:目标分割
  • Recognition in Context:图像情景识别
  • Superpixel stuff segmentation:超像素分割
  • 330K images(>200K labeled):有330K张图片,其中超过200K张是标注过的
  • 1.5 million object instances:150万个对象实例
  • 80 object categories:80个目标类别
  • 91 stuff categories:91个对象类别
  • 5 captions per image:每张图片有5个描述
  • 250K people with keypotins:有25万人的图片进行了关键点标注

        前几个特性都是很好理解也是属于比较热门的几个研究方向,主要的疑惑点是在 80 object categories 和 91 stuff categories ,接下来进行解释:

  • 对于所谓的“stuff categories”,论文中的描述是where “stuff” categories include materials and objects with no clear boundaries (sky, street, grass),即标注了91类没有明确边界的对象(诸如天空,街道,草地)。
  • 其次注意80 object categories和91 stuff categories的区别,论文中用一段文字来描述了它们的区别,简单来说就是80类是91类的一个子集,去掉了一些难以分类和容易混淆的类别,一般来说我们都会使用这个80分类。

80类别包含:

person(人)  
bicycle(自行车)  car(汽车)  motorbike(摩托车)  aeroplane(飞机)  bus(公共汽车)  train(火车) truck(卡车)  boat(船)  
traffic light(信号灯)  fire hydrant(消防栓)  stop sign(停车标志)  parking meter(停车计费器) bench(长凳)  
bird(鸟)  cat(猫)  dog(狗)  horse(马)  sheep(羊)  cow(牛)  elephant(大象)  bear(熊)  zebra(斑马) giraffe(长颈鹿)  
backpack(背包)  umbrella(雨伞)  handbag(手提包)  tie(领带)  suitcase(手提箱)  
frisbee(飞盘)  skis(滑雪板双脚)  snowboard(滑雪板)  sports ball(运动球)  kite(风筝) baseball bat(棒球棒)  baseball glove(棒球手套)  skateboard(滑板)  surfboard(冲浪板)  tennis racket(网球拍)  
bottle(瓶子)  wine glass(高脚杯)  cup(茶杯)  fork(叉子)  knife(刀)
spoon(勺子)  bowl(碗)  
banana(香蕉)  apple(苹果)  sandwich(三明治)  orange(橘子)  broccoli(西兰花)  carrot(胡萝卜)  hot dog(热狗)  pizza(披萨)  donut(甜甜圈)  cake(蛋糕)
chair(椅子)  sofa(沙发)  pottedplant(盆栽植物)  bed(床)  diningtable(餐桌)  toilet(厕所) tvmonitor(电视机)  
laptop(笔记本)  mouse(鼠标)  remote(遥控器)  keyboard(键盘)  cell phone(电话)  
microwave(微波炉)  oven(烤箱)  toaster(烤面包器)  sink(水槽)  refrigerator(冰箱)
book(书)  clock(闹钟)  vase(花瓶)  scissors(剪刀)  teddy bear(泰迪熊)  hair drier(吹风机)  toothbrush(牙刷)

COCO数据集的介绍和使用


COCO数据集标注格式

        首先从coco官网下载数据集,本文以coco2017为例,下载得到train,val以及annotations,创建一个coco2017目录:

├── coco2017: 数据集根目录
     ├── train2017: 所有训练图像文件夹(118287张)
     ├── val2017: 所有验证图像文件夹(5000张)
     └── annotations: 对应标注文件夹
               ├── instances_train2017.json: 对应目标检测、分割任务的训练集标注文件
               ├── instances_val2017.json: 对应目标检测、分割任务的验证集标注文件
               ├── captions_train2017.json: 对应图像描述的训练集标注文件
               ├── captions_val2017.json: 对应图像描述的验证集标注文件
               ├── person_keypoints_train2017.json: 对应人体关键点检测的训练集标注文件
               └── person_keypoints_val2017.json: 对应人体关键点检测的验证集标注文件夹
          

         其中annotation中,我仅关注instances_train2017.json和instances_val2017.json两个用于目标检测的标注文件。

        接下来我来分析标注文件信息中对我有用的信息,使用json库来查看标注文件,输入以下程序:

import json
file_path = './instances_val2017.json'
json_info = json.load(open(file_path,'r'))
print(json_info["info"])

        然后在第四行前插入断点,进行调试,在变量表可以看到以下信息:

COCO数据集的介绍和使用

        “info”字段和“licenses”字段完全没有用处,不予解释。

        我主要来关注"images"字段:点开images字段,其中包含所有图片的信息,如下图所示

COCO数据集的介绍和使用

         以点开第一个"0000"为例,如下图,里面的主要信息是"file_name",表示图片的文件名;“coco_url”,表示可以下载到这张图片的url地址;“height”和“weight”表示图片的高和宽;而剩下的信息对我都没什么作用,便不在此赘述。

COCO数据集的介绍和使用

         接下来来看“annotation”字段,展开"annotation"字段可以看到以下类似“images”字段的信息:

COCO数据集的介绍和使用

        我仍以展开00000为例, 其中“segmentation”字段表示分割图像的坐标点信息;“area”字段表示图像的面积;“iscrowd”字段表示图像中标注的对象是否有重叠;“image_id”字段表示图片的id;“bbox”字段全程是bounding box,表示锚框信息,要注意此处的锚框信息,前两个数值表示的是目标锚框左上角的坐标信息,而后两个数值分别表示宽高;“category_id”字段表示这张图片的类别(在91类目标中的索引);其他信息不作赘述。

COCO数据集的介绍和使用

         最后一个字段就是“categories”,这个字段长80,即代表了八十个类别,点开后里面的信息包含这个类别的名字,所属的类别(比如自行车,汽车属于交通工具),不在此过多赘述,可以看下图:

COCO数据集的介绍和使用

        至此,coco数据集的标注信息基本介绍完毕。


pycocotools的安装和coco api的简单介绍

pycocotools的安装

        我是在windows环境下,在Anaconda prompt上进行pycocotools的安装,输入以下命令:

pip install pycocotools-windows

coco api的简单介绍

  初始化coco实例:

from pycocotools.coco import COCO
val_annotation_file = './instances_val2017.json'
coco = COCO(annotation_file = val_annotation_file)

其中coco变量如下图所示:COCO数据集的介绍和使用

 我们右键选择COCO,“go to”到“Implementation”可以看到COCO类中有以下函数:COCO数据集的介绍和使用

         COCO.getAnnIds(self, imgIds=[], catIds=[], areaRng=[], iscrowd=None),主要参数是imgIds,传入图片的id,返回这个图像的所有标注信息的index列表。详细的参数如下图所示:

COCO数据集的介绍和使用

        而getAnnIds通常会和loadAnns配合使用,COCO.loadAnns(self, ids=[]),传入annotation index信息,会返回对应标注信息index的标注详细信息。详细的参数列表如下图所示:

COCO数据集的介绍和使用

         注意返回的字典含有一系列信息,其中bbox字段是锚框信息,分别是x,y,w,h,前两者是左上角坐标位置,后两者是锚框宽高,详细形式如下图所示:

COCO数据集的介绍和使用

         COCO.loadImgs(self, ids=[]),传入图片的id,会返回对应id的图片的详细信息,如下图所示:COCO数据集的介绍和使用

pycocotools简单使用实例

        

import os
from pycocotools.coco import COCO
from PIL import Image, ImageDraw
import matplotlib.pyplot as plt

val_annotation_file = "./annotations/instances_val2017.json"
val_img_file = './val2017'

coco = COCO(annotation_file=val_annotation_file)
coco_classes = dict([(v["id"], v["name"]) for k, v in coco.cats.items()])

idx = list(sorted(coco.imgs.keys()))
img_id = idx[0] #排序后最小的图片id为139 ,即img_id=139

ann_idx = coco.getAnnIds(imgIds=img_id)
objects = coco.loadAnns(ann_idx)
#获取图片
##获取图片路径名
path = coco.loadImgs(img_id)[0]["file_name"]
##读取139号图片
img = Image.open(os.path.join(val_img_file, path)).convert('RGB')
#在图片上绘制矩形框
draw = ImageDraw.Draw(img)
##一个图片可能会含有多个锚框,对每一个都进行描绘
for object in objects:
    x,y,w,h = object["bbox"]
    x1,y1,x2,y2 = x, y, int(x+w), int(y+h)
    draw.rectangle((x1, y1, x2, y2))
    draw.text((x1, y1), coco_classes[object["category_id"]])
##使用matplotlib绘制
plt.imshow(img)
plt.show()

 最后得到结果如图所示:

COCO数据集的介绍和使用


MS COCO数据集介绍以及pycocotools简单使用

 COCO数据集论文下载地址文章来源地址https://www.toymoban.com/news/detail-402616.html

到了这里,关于COCO数据集的介绍和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能学习07--pytorch20--目标检测:COCO数据集介绍+pycocotools简单使用

    如:天空 coco包含pascal voc 的所有类别,并且对每个类别的标注目标个数也比pascal voc的多。 一般使用coco数据集预训练好的权重来迁移学习。 如果仅仅针对目标检测object80类而言,有些图片并没有标注信息,或者有错误标注信息。所以在实际的训练过程中,需要对这些数据进行

    2024年02月12日
    浏览(64)
  • COCO数据集介绍

    以下内容均来自COCO官方 以及Microsoft COCO: Common Objects in Context COCO数据集是一个可用于图像检测(image detection),语义分割(semantic segmentation)和图像标题生成(image captioning)的大规模数据集。它有超过330K张图像(其中220K张是有标注的图像),包含150万个目标,80个目标类别

    2024年02月06日
    浏览(51)
  • 【C语言进阶篇】看完这篇结构体文章,我向数据结构又进了一大步!(结构体进阶详解)

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,结构体的基本使用和常见错误在上一篇详细讲解过了,不知道大家都学会了没有。    ⛳️ 今天给大家来个硬菜,教点高

    2024年02月15日
    浏览(48)
  • 2023 研究生数学建模竞赛(B题)DFT类矩阵的整数分解逼近|建模秘籍&文章代码思路大全

    问题1:降低硬件复杂度 在约束1下,优化DFT矩阵的分解,以最小化误差(RMSE)并减少乘法器的数量。 问题2:限制元素实部和虚部取值范围 在约束2下,优化DFT矩阵的分解,以最小化误差并考虑元素实部和虚部的取值范围。 问题3:同时限制稀疏性和取值范围 在同时满足约束

    2024年02月08日
    浏览(114)
  • 使用筛选后的coco数据集json文件,复制对应coco数据集图像

    有时候,我们需要对已经有的数据集进行数据划分,划分后的coco数据集需要寻找对应的图片,可以使用下面的程序脚本。 首先,导入三个必要的模块:json、os 和 shutil。json 模块用于读取 JSON 文件,os 模块用于处理文件路径,shutil 模块用于执行文件复制操作。 接下来,定义

    2024年02月01日
    浏览(35)
  • VOC/YOLO/COCO数据集格式转换及LabelImg/Labelme/精灵标注助手Colabeler标注工具介绍

    数据集格式:VOC(xml)、YOLO(txt)、COCO(json) 本文主要对 Label格式 ,以及 LabelImg、Labelme、精灵标注助手Colabeler 这常用的三种数据标注软件进行介绍。 LabelImg是目标检测数据标注工具,可以标注标注两种格式: VOC标签格式,标注的标签存储在xml文件 YOLO标签格式,标注的标签存储在

    2023年04月22日
    浏览(89)
  • MMDetection3d对KITT数据集的训练与评估介绍

    如有错误,恳请指出。 在之后的时间内,可能会学习与点云相关的知识,进一步学习基于点云的3D目标检测。然后,为了快速入门这个领域,想使用mmdetection3d开源算法库来尝试训练一些经典的3d目标检测模型,比如:SECOND,PointPillars,3D-SSD等等。之后重点是详细介绍KITTI数据

    2024年02月02日
    浏览(41)
  • 使用albumentations对coco进行数据增强

    目前几乎所有描述最先进的图像识别模型的论文都使用了基本的增强技术 深度神经网络需要大量的训练数据来获得良好的结果,并防止过度拟合,然而要获得足够的训练样本往往非常困难,多种原因可能使得收集足够的数据非常困难,甚至不可能。 为了制作一个训练数据集

    2024年02月03日
    浏览(40)
  • 【机器学习】sklearn数据集的使用,数据集的获取和划分

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 json_decode() 可以对JSON字符串 「解码」 ,并转换为PHP变量。 语法 参数 $json

    2024年02月10日
    浏览(37)
  • ubuntu深度学习使用TensorFlow卷积神经网络——图片数据集的制作以及制作好的数据集的使用

    首先我事先准备好五分类的图片放在对应的文件夹,图片资源在我的gitee文件夹中链接如下: 文件管理: 用于存各种数据 https://gitee.com/xiaoxiaotai/file-management.git  里面有imgs目录和npy目录,imgs就是存放5分类的图片的目录,里面有桂花、枫叶、五味子、银杏、竹叶5种植物,npy目

    2024年02月05日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包