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

1、MS COCO数据集简介

在这里插入图片描述
在这里插入图片描述

2、MS COCO数据集目录结构

在这里插入图片描述

├── 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: 对应人体关键点检测的验证集标注文件夹
     		  

3、 MS COCO标注文件格式

3.1 使用Python的json库查看

在这里插入图片描述

import json

json_path = "/data/coco2017/annotations/instances_val2017.json"
json_labels = json.load(open(json_path, "r"))
print(json_labels["info"])

在这里插入图片描述
在这里插入图片描述

3.2 使用官方cocoAPI查看

安装:

# ubuntu
pip install pycocotools  
# Windows
pip install pycocotools-windows

读取每张图片的bbox信息
下面是使用pycocotools读取图像以及对应bbox信息的简单示例:

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

json_path = "/data/coco2017/annotations/instances_val2017.json"
img_path = "/data/coco2017/val2017"

# load coco data
coco = COCO(annotation_file=json_path)

# get all image index info
ids = list(sorted(coco.imgs.keys()))
print("number of images: {}".format(len(ids)))

# get all coco class labels
coco_classes = dict([(v["id"], v["name"]) for k, v in coco.cats.items()])

# 遍历前三张图像
for img_id in ids[:3]:
    # 获取对应图像id的所有annotations idx信息
    ann_ids = coco.getAnnIds(imgIds=img_id)

    # 根据annotations idx信息获取所有标注信息
    targets = coco.loadAnns(ann_ids)

    # get image file name
    path = coco.loadImgs(img_id)[0]['file_name']

    # read image
    img = Image.open(os.path.join(img_path, path)).convert('RGB')
    draw = ImageDraw.Draw(img)
    # draw box to image
    for target in targets:
        x, y, w, h = target["bbox"]
        x1, y1, x2, y2 = x, y, int(x + w), int(y + h)
        draw.rectangle((x1, y1, x2, y2))
        draw.text((x1, y1)
### 关于 MS COCO 数据集的下载与使用 #### 数据集简介 MS COCO (Microsoft Common Objects in Context) 是一个广泛应用于计算机视觉领域的高质量数据集,涵盖了对象检测、分割、关键点检测以及图像字幕生成等多个任务。其特点在于不仅提供了丰富的标注信息(如边界框、像素级掩码),还包括了详细的语义描述[^2]。 #### 下载地址 对于不同版本的 MS COCO 数据集,可以根据需求选择对应的年份版本进行下载: - **MS COCO 2014**: 提供训练集、验证集和测试集的图片及其标注文件。可以通过官方提供的链接获取完整的数据集资源。 - **MS COCO 2017**: 更新后的版本,优化了部分结构并增加了新的功能支持。同样包含多个子集划分,并附带详细的 JSON 文件作为标注说明[^4]。 具体下载页面如下: - 官方网站: [http://cocodataset.org/#download](http://cocodataset.org/#download) - 镜像站点或其他第三方托管平台也可能提供便捷的访问方式。 #### 使用方法概述 为了高效利用此数据集开展研究工作或者工程项目开发活动,在实际操作过程中需要注意以下几个方面事项: ##### 准备环境 确保安装好必要的依赖库来处理这些大规模的数据集合体。例如 `pycocotools` 工具包能够帮助解析JSON格式标签文档并与原始图像关联起来形成统一管理框架体系[^3]: ```bash pip install pycocotools ``` ##### 加载数据样本实例演示代码片段 下面给出了一段简单的Python脚本用来展示如何加载一张来自COCO train2017中的照片连同它的目标实体标记信息一起呈现出来: ```python from pycocotools.coco import COCO import matplotlib.pyplot as plt import cv2 # 初始化COCO API 对象 dataDir='path_to_coco_dataset' dataType='train2017' # 或者 'val2017',取决于你想查看哪个分区的内容 annFile='{}/annotations/instances_{}.json'.format(dataDir,dataType) coco=COCO(annFile) # 获取随机ID编号的一张图片记录条目详情 imgIds = coco.getImgIds() imgId = imgIds[np.random.randint(len(imgIds))] imgInfo = coco.loadImgs(ids=imgId)[0] # 显示原图 I=cv2.imread('{}/{}/{}'.format(dataDir, dataType,imgInfo['file_name'])) plt.figure(figsize=(8,6)) plt.imshow(I[:,:,::-1]); plt.axis('off') # 绘制边框及分类名称 catIds=coco.getCatIds(catNms=['person','bicycle']) anns_ids = coco.getAnnIds(imgIds=imgId, catIds=catIds, iscrowd=None) anns = coco.loadAnns(anns_ids) for ann in anns: bbox=np.array(ann["bbox"],dtype=int) x,y,w,h=bbox[:4] cv2.rectangle(I,(x,y),(x+w,y+h),(0,255,0),thickness=2) text="{}:{:.2f}".format(coco.cats[ann['category_id']]['name'],ann['score']) if 'score' in ann else "" cv2.putText(I,text,(x,y-10),fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=.5,color=(0,255,0)) plt.figure(figsize=(8,6)); plt.imshow(I[:,:,::-1]); plt.axis('off') ``` 上述程序展示了基本的功能模块调用流程,包括但不限于读取指定目录下的annotation json文件创建对应API接口;选取特定类别的物体筛选条件过滤符合条件的目标列表项;最后通过opencv绘制矩形区域轮廓线条表示各个感兴趣区的位置范围等等。 #### 注意要点 当涉及到深度学习模型训练阶段时,则可能还需要额外准备预处理步骤比如裁剪缩放变换增强等手段提升泛化能力效果表现良好情况下再投入正式生产环境中运行评估性能指标情况是否满足预期标准要求即可完成整个闭环周期内的全部环节衔接顺畅无误为止结束本次讨论主题内容总结完毕谢谢大家聆听! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值