三分钟掌握COCO数据集核心:用生活化比喻理解JSON结构
第一次打开COCO数据集的JSON文件时,那种扑面而来的复杂结构很容易让人望而生畏——层层嵌套的字典、密密麻麻的字段、看似无关的信息混杂在一起。但就像学习任何新技能一样,抓住核心才能快速突破。本文将用最直观的比喻和精简的代码示例,带你在三分钟内建立起对COCO数据集结构的清晰认知。
想象你正在整理一本相册。相册里有照片(images),每张照片上可能有你做的标记(annotations),而这些标记都属于某些特定类型(categories)。这就是COCO数据集最核心的三个字段:images、annotations和categories。其他如info、licenses等字段,就像相册的版权页和前言,对实际训练模型没有直接影响,初学者完全可以暂时忽略。
1. images字段:你的数字相册库
images字段包含了数据集中的所有图像信息,就像一个装满了照片的相册。每个图像都有一些基本属性:
python复制{
"id": 1, # 照片的唯一编号
"file_name": "000001.jpg", # 照片文件名
"width": 640, # 照片宽度(像素)
"height": 480, # 照片高度(像素)
# 以下字段可暂时忽略
"license": 1,
"coco_url": "http://...",
"date_captured": "2022-01-01"
}
关键点:在实际使用时,我们最关心的是id、file_name、width和height这四个字段。特别是id,它是连接images和annotations的桥梁。
用Python快速提取所有图像基本信息:
python复制import json
with open('coco_annotations.json') as f:
data = json.load(f)
for img in data['images'][:3]: # 查看前3张图像信息
print(f"ID:{img['id']} 文件名:{img['file_name']} 尺寸:{img['width']}x{img['height'
