AI知识分享AI知识分享
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Transformer
  • Pytorch
  • HuggingFace
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • 概念
  • 意图识别
  • 工具
  • 蒸馏

    • 蒸馏 - 概述
    • 蒸馏 - 模型蒸馏
    • 蒸馏 - 模型压缩的常用方法
    • 蒸馏 - 总结
  • RAG

    • RAG - 基础
    • RAG - 进阶
    • RAG - 应用
  • 目标检测

    • 目标检测 - 概述
    • 目标检测 - VOC数据集
    • 目标检测 - COCO数据集
    • 目标检测 - 标注自己的数据集
    • 目标检测 - yolov5
  • MCP

    • MCP - 基础
    • MCP - 架构

目标检测 - COCO数据集

COCO(Common Objects in Context)数据集 是计算机视觉领域最具影响力的基准数据集之一,广泛应用于目标检测、实例分割、图像描述生成等任务。其以场景复杂、标注丰富、数据量大著称,已成为学术研究和工业落地的黄金标准。以下是关于COCO数据集的详细解析:

基本信息

  • 全称:Microsoft Common Objects in Context
  • 发布年份:2014年(持续更新,常用版本为COCO2017)。
  • 数据规模:
    • 训练集:118,287张图像
    • 验证集:5,000张图像
    • 测试集:40,670张图像(无公开标注)
  • 物体类别:80个常见类别(如人、车、动物、日常用品等)。
  • 标注类型:目标检测框、实例分割掩膜、关键点检测、图像描述(Caption)。
  • 官网:COCO Dataset

核心任务支持

COCO数据集支持以下五大任务,涵盖大部分计算机视觉研究方向:

  1. 目标检测(Object Detection):标注边界框和类别标签。
  2. 实例分割(Instance Segmentation):为每个物体实例提供像素级分割掩膜。
  3. 关键点检测(Keypoint Detection):标注人体关键点(17个关键点,如肘部、膝盖)。
  4. 全景分割(Panoptic Segmentation):统一标注可数物体(如人、车)和不可数背景(如天空、草地)。
  5. 图像描述生成(Image Captioning):每张图像提供5条人工编写的文本描述。

数据集特点

标注丰富性

  • 密集标注:平均每张图像包含7.7个目标实例。
  • 复杂场景:图像包含多个物体,且存在遮挡、小目标和多样背景。
  • 多任务支持:一份数据同时支持检测、分割、关键点等任务。

类别覆盖

涵盖80类物体,分为10个超类:

动物:人、鸟、猫、狗、马、羊、牛、大象、熊、斑马、长颈鹿  
交通工具:自行车、汽车、摩托车、飞机、公交车、火车、卡车、船  
日常物品:背包、雨伞、手提包、领带、行李箱、杯子、叉子、刀、勺子、碗  
家具:椅子、沙发、盆栽、床、餐桌、厕所、电视、笔记本电脑、鼠标、遥控器、冰箱  
(完整列表见官网)

数据集目录结构

COCO数据集通常按以下结构组织:

coco/
├── annotations/                 # 所有标注文件(JSON格式)
│   ├── instances_train2017.json
│   ├── instances_val2017.json
│   ├── person_keypoints_train2017.json
│   └── captions_train2017.json  # 其他任务标注文件...
├── train2017/                   # 训练集图像
├── val2017/                     # 验证集图像
└── test2017/                    # 测试集图像(无标注)

标注文件解析(以目标检测为例)

COCO标注文件为JSON格式,包含以下关键字段:

{
  "images": [{"id": 1, "file_name": "000000001.jpg", "width": 640, "height": 480}, ...],
  "annotations": [
    {
      "id": 1,
      "image_id": 1,             // 对应图像ID
      "category_id": 18,          // 类别ID(对应categories中的id)
      "bbox": [x, y, width, height],  // 边界框坐标(左上角x,y + 宽高)
      "area": 10345.2,            // 区域面积(用于评估小目标)
      "iscrowd": 0                // 是否为一组物体(如人群标记为1)
    },
    ...
  ],
  "categories": [{"id": 1, "name": "person"}, {"id": 2, "name": "bicycle"}, ...]
}

评估指标

目标检测/实例分割

  • mAP(Mean Average Precision):
    • IoU阈值:通常使用0.5:0.95(从0.5到0.95,步长0.05,共10个阈值)。
    • 计算方式:对每个类别计算AP(平均精度),再取80个类别的平均值。
    • 区分尺度:报告小(area<32²)、中(32²<area<96²)、大(area>96²)目标的AP。

关键点检测

  • AP@OKS(Average Precision based on Object Keypoint Similarity):
    • 通过关键点相似度(OKS)衡量预测与真实关键点的匹配程度。

如何使用COCO数据集

步骤1:下载数据集

  • 官网下载:从COCO官网获取图像和标注文件。
  • 命令行工具(推荐):
    # 下载2017训练集图像与标注
    wget http://images.cocodataset.org/zips/train2017.zip
    wget http://images.cocodataset.org/annotations/annotations_trainval2017.zip
    

步骤2:使用COCO API

COCO提供官方Python API(pycocotools)用于数据加载和评估:

from pycocotools.coco import COCO

# 加载标注文件
annFile = 'annotations/instances_val2017.json'
coco = COCO(annFile)

# 获取某类别的所有图像ID(例如“猫”)
catIds = coco.getCatIds(catNms=['cat'])
imgIds = coco.getImgIds(catIds=catIds)

# 加载并显示图像
img = coco.loadImgs(imgIds[0])[0]
I = io.imread(f'val2017/{img["file_name"]}')
plt.imshow(I)

步骤3:模型训练与评估

  • 目标检测示例(PyTorch):
    from torchvision.models.detection import fasterrcnn_resnet50_fpn
    
    model = fasterrcnn_resnet50_fpn(pretrained=True)  # 加载预训练模型
    # 自定义数据加载器(需将COCO标注转换为模型输入格式)
    
最近更新: 2025/4/20 16:10
Contributors: klc407073648
Prev
目标检测 - VOC数据集
Next
目标检测 - 标注自己的数据集