如何使用COCO数据集,注意事项

CoCo2017数据集使用(简单介绍) 本人使用训练图片用在目标跟踪上作为数据集扩展,因此只查看了train的json文件。 目录绪论标注文件:instances_train2017.jsoninfo:licenses:image:categories:annotations:代码 绪论 COCO的全称是Common Objects in Context,是微软团队提供的一个可以用来进行图像识别的数据集。MS COCO数据集中的图像分为训练、验证和测试集。论文 、数据集官方网址 CoCo2017数据集包括train(118287张)、val(50 阅读详情

COCO数据集可用来训练目标检测,分类,实例分割等。

下面简单说下如何使用这个数据集,
数据集下载可用如下的代码进行,以2017为例。

# Download the image data.
cd ./images
echo "Downloading MSCOCO train images ..."
curl -LO http://images.cocodataset.org/zips/train2017.zip
echo "Downloading MSCOCO val images ..."
curl -LO http://images.cocodataset.org/zips/val2017.zip

cd ../
if [ ! -d annotations ]
  then
    mkdir -p ./annotations
fi

# Download the annotation data.
cd ./annotations
echo "Downloading MSCOCO train/val annotations ..."
curl -LO http://images.cocodataset.org/annotations/annotations_trainval2017.zip
echo "Finished downloading. Now extracting ..."

# Unzip data
echo "Extracting train images ..."
unzip -qqjd ../images ../images/train2017.zip
echo "Extracting val images ..."
unzip -qqjd ../images ../images/val2017.zip
echo "Extracting annotations ..."
unzip -qqd .. ./annotations_trainval2017.zip

会得到这2个文件夹

在这里插入图片描述
annotation文件夹下有各种json文件,记下它们的路径,后面要用到。

下面说下数据集处理的主要流程,主要用COCO API来提取数据,这个API是conda自带的,不需要另外安装
用的时候import就行了

from pycocotools.coco import COCO

刚才说了annotation文件夹下有json文件,假设这个json文件的路径为ann_path(包括json)
把这个路径传给COCO API

self.coco_api = COCO(ann_path)

然后你就能用这个coco_api提取各种数据,
比如提取类别转为label

self.cat_ids = sorted(self.coco_api.getCatIds())
self.cat2label = {cat_id: i for i, cat_id in enumerate(self.cat_ids)}

提取类别的名称

self.cats = self.coco_api.loadCats(self.cat_ids)
self.class_names = [cat["name"] for cat in self.cats]

提取img_id, 每个id对应一个img文件名,还能根据这个img_id提取对应的annotation,
把img_id对应的信息全部放到img_info里面

self.img_ids = sorted(self.coco_api.imgs.keys()) #这个是全部图片的img_id,需要的时候根据idx提取一个
img_info = self.coco_api.loadImgs(self.img_ids)

所以后面能用img_info干什么呢。
从pytorch的__getitem__函数说起吧,
getitem函数会传入一个idx, 提取这个idx对应的图片和annotation.

我们可以根据上面得到的全部图片的img_id, 也就是self.img_ids, 得到idx对应的img_id
再根据这个img_id得到这个图片对应的annotation

img_id = self.img_ids[idx]
ann_ids = self.coco_api.getAnnIds([img_id])
anns = self.coco_api.loadAnns(ann_ids)

得到图片的文件名,于是可以读取图片

file_name = self.coco_api.loadImgs(img_id)[0]['file_name']
if file_name.startswith('COCO'):
    file_name = file_name.split('_')[-1]

path = osp.join(self.root, file_name)
assert osp.exists(path), 'Image path does not exist: {}'.format(path)

img = cv2.imread(path)

下面说如何获得目标框,类别和分割mask
一个图片可能对应多个目标框,所以一个img_id提取出的anns里面可能有多个annotation,
可以用一个循环把它们读出来

for ann in anns:
    if ann.get("ignore", False):
        continue
    x1, y1, w, h = ann["bbox"]  #目标框是(x,y,w,h)形式
    if ann["area"] <= 0 or w < 1 or h < 1:
        continue
    if ann["category_id"] not in self.cat_ids:
        continue
    bbox = [x1, y1, x1 + w, y1 + h]  #有需要的话转为(x1,y1,x2,y2)形式
    
    gt_bboxes.append(bbox)
    gt_labels.append(self.cat2label[ann["category_id"]])
    
    gt_masks.append(self.coco_api.annToMask(ann).reshape(-1))  #提取分割mask
    
    gt_keypoints.append(ann["keypoints"])  #提取特征点

需要注意的是一个图片里面可能没有目标框,也就是annotation为[ ],
这种情况就不要把它当作训练图片了,需要重新采样,
所以需要这样一个流程

    def __getitem__(self, idx):
        
        while True:
              data = self.get_train_data(idx) #annotation为空时要返回None
              if data is None:
                  idx = self.get_another_id()
                  continue
              return data

    def get_another_id(self):
        return np.random.random_integers(0, len(self.data_info) - 1)

在预处理中,如果对图片进行各种变换,不要忘了同时要对目标框,分割mask做同样的变换。

示例:

原图
在这里插入图片描述

对图像做翻转,scale,crop变换后

在这里插入图片描述

那么对mask, 目标框也要做同样的变换。

在这里插入图片描述

还有一种情况,annotation不为空,数据是有的,
但是,
在各种预处理变换后,目标没了,这个情况也是要重新采样的。

示例:
在这里插入图片描述
它的目标比较小,在左上角的地方,很容易就没了,
比如做如下的预处理变换,

在这里插入图片描述

那怎么判断目标是不是没了呢,
一般来说,目标框经过变换后,会出现x1=x2, 或者y1=y2的情况,
也就是说这个box的w或者h为0

在这里插入图片描述
只需要把w和h很小的box滤掉即可,
滤掉后如果为空,就返回None, 让getitem函数重新采样。

w = meta_data["gt_bboxes"][:, 2] - meta_data["gt_bboxes"][:, 0]
h = meta_data["gt_bboxes"][:, 3] - meta_data["gt_bboxes"][:, 1]

keep = (w > self.discard_box_width) * (h > self.discard_box_height)
meta_data["gt_masks"] = torch.FloatTensor(meta_data["gt_masks"][keep])
meta_data["gt_bboxes"] = meta_data["gt_bboxes"][keep]
meta_data["gt_labels"] = meta_data["gt_labels"][keep]

if meta["gt_bboxes"].size == 0:
    return None 
将Labelme标注的数据做成COCO格式的数据集(实例分割的数据集) 将Labelme标注的数据做成COCO格式的数据集(实例分割):3种格式 阅读详情

相关推荐

mmdetection框架下使用yolov3训练Seaships数据集

之前复现的yolov3算法采用的是传统的coco数据集,这里我需要在新的数据集上跑,也就是船舶检测方向的SeaShips数据集,这里给出教程。

qq_52889317的博客 1651

COCO数据集的介绍和使用

这篇文章是我研究生阶段入学期间学习所记,主要供自己使用,结合了论文原作,中间借鉴的一些b站的视频以及他人博客的解释,会在文章末尾贴出链接。 目录 COCO数据集的介绍 COCO数据集标注格式 COCO数据集的介绍 COCO数据集是微软公司出资标注的数据集,主要用于目标检测、分割和图像描述。根据官网的介绍,它主要有以下的几种特性: Object Segmentation:目标分割 Recognition in Context:图像情景识别 Superpixe...

Tiao_12的博客 3万+

使用Python对COCO数据集进行操作

我们使用了基于区域的CNN算法(Faster R-CNN)和DeepLabv3+模型作为目标检测算法和分割模型,并展示了如何在这些模型上运行COCO数据集中的图像。在此示例中,我们首先加载预训练的Faster R-CNN模型,然后替换模型的分类器以适应COCO数据集的类别数。然后,我们遍历数据集中的所有图像,并将它们转换为张量,然后在模型上运行它们。其中,dataDir为COCO数据集的根目录,dataType为数据集的类型(train/val/test),annFile为数据集的注释文件路径。

TechBurst的博客 763

如何正确使用COCO数据集

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 简介COCO数据集,意为“Common Objects In Context”,是一组具有挑战性的...

小白学视觉 4708

COCO数据集 Python:使用Python处理COCO数据集的完整指南

COCO(Common Objects in Context)数据集是一个广泛使用的计算机视觉数据集,用于目标检测、图像分割和关键点检测等任务。在本文中,我们将介绍如何使用Python来处理COCO数据集,并提供相应的源代码供参考。首先,我们需要获取COCO数据集的图像和标注文件。你可以从COCO官方网站下载数据集,或者使用第三方库进行下载。通过上述示例,你可以开始使用Python处理COCO数据集。当然,根据具体的任务需求,你可以进行更多的操作和扩展。现在,我们可以开始对COCO数据集进行各种操作了。

TechWhiz的博客 773

Ubuntu22环境下Xinference与RAGFLOW集成:构建高效rerank模型服务【实战指南】

本文详细介绍了在Ubuntu22.04系统上,通过部署Xinference模型推理服务来加载bge-reranker-base等rerank模型,并将其与RAGFLOW框架集成的完整实战指南。该方案实现了模型服务的解耦与灵活管理,有效提升RAG系统的检索精度与答案相关性,并提供了从环境配置、服务启动、网络连接到性能调优及常见问题排查的全流程解决方案。

pluto的博客 501

YOLO12开源合规指南:COCO数据集许可与商用注意事项

本文介绍了如何在星图GPU平台上自动化部署YOLO12 实时目标检测模型 V1.0镜像,实现本地化、合规化的目标检测能力。该镜像开箱即用,支持COCO 80类通用物体识别,典型应用于智能安防监控、工业质检等需实时分析图像/视频流的场景,全程离线运行,保障数据安全与商用合规。

weixin_35516624的博客 315

金属粘结剂喷射3D打印技术:工艺流程与后处理关键

金属粘结剂喷射(Binder Jetting)是一种创新的增材制造技术,通过逐层喷射粘合剂将金属粉末粘结成型,再经过脱脂和烧结等后处理工序获得最终零件。这项技术的核心优势在于无需支撑结构、可实现批量生产,并且材料利用率高。在3D打印领域,金属BJ技术特别适合中小尺寸、结构复杂且表面质量要求高的零件生产。其工艺流程包括前期数据处理、打印生胚阶段、拆包与清粉,以及关键的渗透、脱脂和烧结后处理环节。后处理工艺的控制直接决定了零件的机械性能和尺寸精度,其中烧结工艺尤为关键,需要精确控制温度曲线和气氛环境。金属BJ打

weixin_35751194的博客 86

coco2017单目标数据集

coco2017单目标数据集 【下载地址】coco2017单目标数据集分享 本仓库提供了COCO(Common Objects in Context)2017数据集的一个定制版本,专注于单一类别的对象检测任务。针对研究人员、开发者以及对特定目标物体感兴趣的学习者,这个精简版的数据集极大地减少了不必要的数据处理步骤,特别适...

gitblog_06668的博客 812

MATLAB安装

Matlab 2016a 安装包及破解教程百度云分享链接: 链接:https://pan.baidu.com/s/1i6BgD8p       密码:17gg   Matlab安装教程: 1、下载文件,得到R2016a_win64.part1.rar、R2016a_win64.part2.rar两部分安装文件和Matlab 2016a Win64 Crack破解文件。 2、解压安装文件(解...

qq_36734094的博客 17万+

基于YOLOv8的表面裂痕等缺陷检测:深度学习与UI界面的实践

本文详细介绍了如何使用YOLOv8进行表面裂痕等缺陷检测,并结合图形用户界面展示检测结果。通过YOLOv8的强大能力,我们可以实现高效、准确的表面缺陷检测,提升工业产品的质量控制水平。未来,随着深度学习技术和数据集的不断发展,表面缺陷检测的精度和速度将不断提升,应用领域也将进一步拓展。希望本文的实践能够为深度学习在工业检测领域的应用提供一些启示。

YOLO 551

【Python三方库】COCO数据集工具包之pycocotools库的简介、安装、使用方法、示例代码、注意事项等详细攻略

pycocotools 是处理 COCO 数据集的强大工具,提供了便捷的 API 来加载、处理和评估数据。无论是用于对象检测、实例分割还是关键点检测,pycocotools 都能助你一臂之力。通过以上的介绍和使用示例,希望你能更好地理解和应用 pycocotools 库,为你的计算机视觉项目增光添彩。

科技改变人类,技术成就未来 1137

华为 MetaERP · 本体论驱动的 PTP 全流程智能建模方案

华为MetaERP通过“本体+事件+图谱+Agent”四位一体架构,将传统ERP从“记录系统”升级为“智能执行系统”。基于OWL本体实现业务语义精准表达,融合LLM与元数据多租能力,构建可推理、可治理的PTP全流程智能模型,解决AI理解业务逻辑难题,实现三单匹配自动化、关账效率提升30%、成本降低50%,推动企业数字化迈向可信智能新范式。

金牌架构师 182

【免费下载】 COCO 2017 数据集 YOLO 格式标签文件

COCO 2017 数据集 YOLO 格式标签文件 【下载地址】COCO2017数据集YOLO格式标签文件 本仓库提供 COCO 2017 数据集的 YOLO 格式标签文件,包括 `train2017.txt` 和 `val2017.txt`。这些文件是从 COCO 2017 数据集中提取并转换为 YOLO 格式的标签文...

gitblog_09787的博客 1182

YOLOv8+BiFPN双向特征金字塔:多尺度目标检测精度提升28%的实战教程

双向特征金字塔网络(BiFPN)是一种强化多尺度特征融合支持“自顶向下+自底向上”的双向特征流动,同时保留不同尺度的细节信息;引入加权融合机制,自动学习不同特征的重要性权重;裁剪冗余节点,在轻量化的同时提升融合效率。

m0_64661770的博客 493

〔重庆理工大学〕计算机网络实验指导书【实验九 直连路由,静态路由,默认路由配置】

本实验指导书介绍了直连路由、静态路由和默认路由的配置方法。主要内容包括:1)路由器基础知识,包括直连路由、静态路由和动态路由三种路由生成方式;2)路由度量值与匹配顺序,解释了不同路由类型的优先级;3)实验任务分为三个部分:直连路由的查看分析、静态路由的配置以及默认路由的配置,详细说明了配置步骤和命令。实验要求通过模拟器搭建网络环境,完成路由配置使PC间能够互通。实验旨在帮助学生掌握不同路由类型的工作原理和配置方法,适用于简单的网络环境。

Pretty Boy Fox的博客 1058

【免费下载】 COCO128 数据集下载

COCO128 数据集下载 【下载地址】COCO128数据集下载 `coco128.zip` 是一个包含 COCO 数据集中前 128 张图片的数据集。这个数据集规模较小,非常适合用于初学者进行模型训练和调试。特别适合使用 YOLOv5 进行目标检测任务的训练 ...

gitblog_09727的博客 1564

1、机器学习在环境科学中的应用与经典数据分析基础

本文介绍了机器学习在环境科学中的广泛应用,包括卫星遥感、气候预测、空气质量预报等领域,并系统回顾了经典数据分析的基本概念,如期望、方差、协方差和相关性及其显著性检验。同时,文章阐述了贝叶斯定理、判别函数与分类、聚类分析等方法的原理与应用,强调了经典统计方法与机器学习技术的互补关系。最后展望了未来环境科学中数据分析的发展方向,强调多学科融合与方法创新的重要性。

stone的博客 145

labelme标注文件转换为coco数据集(不能用你来砍我)

labelme标注文件转换为coco数据集(不能用你来砍我) coco数据集的样式 coco数据集里的文件夹是这样的: 一共有四个文件夹。 1.test里面就放测试图片 2.train里面放每张图片及其对应的json文件 3.val验证集的格式和train一样,不过他们的数据不重叠。 4.annotations里面存放两个json文件,如下图所示 这两个文件可以理解为对训练集和验证集的数据汇总。 方法 1.生成四个文件夹,先把test,train,val整理成我刚才说的那样。 2.把labelme2

sailinnia的博客 5775

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

使用自己人脸数据集制作成COCO格式数据集

背景 因为最近查看的最新的检测算法(2018-2019),使用的数据集大都是VOC或者COCO数据集。还有的算法只使用COCO格式的数据集。因为VOC数据集格式容易实现,只需要每张图片和相应的.xml文件就行了。而COCO数据集中的.json文件,则比较复杂。下面介绍COCO数据集相关内容,使用自己人脸数据集制作COCO格式的数据集的代码实现和此过程中应该注意的问题。 准备 .jpg文件 .x...

nodototao的博客 4013

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

yolo格式数据集转换到coco格式

将YOLO格式数据集转换为COCO格式需要处理图像、标注文件以及生成COCO格式的JSON文件。以下Python代码实现,考虑了各种可能的因素,包括图像尺寸、类别映射、标注框的归一化处理等。

weixin_40280870的博客 3085

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【免费下载】 MS COCO 2014 数据集下载

MS COCO 2014 数据集下载 【下载地址】MSCOCO2014数据集下载分享 COCO 数据集(全称为 Common Objects in Context)是目前最常用于图像检测定位的数据集之一。它不仅包含了图像的类别和位置信息,还提供了对图像的语义文本描述。COCO 数据集在图像识别、分割和字幕生成等领域具有广...

gitblog_06602的博客 2347

【亲测免费】 coco数据集panoptic_val2017 下载仓库

coco数据集panoptic_val2017 下载仓库 【下载地址】coco数据集panoptic_val2017下载仓库 本仓库提供了一个资源文件的下载,该资源文件为COCO数据集中的`panoptic_val2017`部分数据集。COCO(Common Objects in Context)数据集是一个广泛使用的大...

gitblog_09709的博客 930

【免费下载】 MS COCO2017数据集下载仓库

MS COCO2017数据集下载仓库 【下载地址】MSCOCO2017数据集下载仓库分享 本仓库提供MS COCO2017数据集的下载资源。COCO数据集(全称为Common Objects in Context)是目前最常用于图像检测定位的数据集之一。它不仅包含了图像的类别和位置信息,还提供了图像的语义文本描述,使其成...

gitblog_06693的博客 1238

【亲测免费】 COCO2017数据集提取特定类

COCO2017数据集提取特定类 【下载地址】COCO2017数据集提取特定类分享 本资源文件提供了从COCO2017数据集中提取特定类别的工具和方法。COCO2017数据集是一个广泛使用的计算机视觉数据集,包含了多种标注类型,如目标检测、关键点检测、素材分割等。通过本资源文件,用户可以轻松地提取出自己感兴趣的特定类别数...

gitblog_06587的博客 316

coco数据集

coco2017 COCO_2017_train = COCO_2014_train + valminusminival COCO_2017_val = minival 注意这里coco_2017_train是两个数据集,所以用2017的时候可能会用到数据集合并的操作。但是如果事先已经合并了,就不用在代码里合并了 ...

lt1103725556的博客 625
上一篇: leetcode 1523. Count Odd Numbers in an Interval Range(区间范围内奇数的个数)
下一篇: leetcode 989. Add to Array-Form of Integer(数组形式的整数求和)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

蓝羽飞鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值