《南溪的目标检测学习笔记》——COCO数据集的学习笔记
1 COCO数据集
COCO数据集下载链接:COCO_download
1.1 数据概览
数据集大小
train: 118287张
train+val: 123287张
val: 5000张
目标数量
Val集目标数: 36781 (整个val集包含的实例数量)
1.2 文件结构说明
train2017
: 训练集文件夹。
val2017
: 验证集文件夹。
1.2.1 文件结构树
Images
├── 2017 Val Images [annotations_trainval2017.zip]
│ ├── annotations
│ ├── instances_val2017.json
├── 2017 Testing Image info [image_info_test2017.zip] [1MB]
│ ├── image_info_test2017.json
1.3 标注格式说明
X坐标范围:[0,640][0,640][0,640]
说明:
坐标是从0开始
COCO在官方网站的说明中说到:
… In addition, an enclosing bounding box is provided for each object (box coordinates are measured from the top left image corner and are 0-indexed). …
1.4 数据集异常值
“包含width或height为0的目标框”
COCO数据集中包含width或height为0的目标框,在train集中这样的bbox有两个;
2 COCO的评价指标——mAP
请参考我的博文《南溪的目标检测学习笔记》——目标检测的评价指标(mAP)
3 Cocoapi使用
在使用cocoapi
之前,首先需要进行安装,
cocoapi
的Github链接:cocodataset/cocoapi
cocoapi
安装请参考:cocoapi#readme
Ubuntu上官方安装出现错误&
请使用如下命令进行安装:
pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
Win10安装cocoapi
cocoapi
官方代码不支持Win10平台,这里我们使用CSDN社区提供的解决方案进行安装,请参考:《Windows10安装COCOAPI》
3.1 mAP验证基本流程
annType = ['segm', 'bbox', 'keypoints']
annType = annType[1]
"""设置标注类型为bbox"""
print("[cocoapi]:", "loading data...")
# initialize COCO ground truth api
data_dir = ".../.../COCO"
"""Local root of COCO"""
ann_file = f'{data_dir}/annotations/instances_val2017.json'
cocoGt = COCO(ann_file)
# Get the image ids
coco_keys = list(sorted(cocoGt.imgs.keys()))
print("len(coco_keys):", len(coco_keys))
3.2 API函数说明
pycocotools.coco.COCO.loadRes()
: Load result file and return a result api object.
参数说明:
resFile
: 结果文件。(不接受Path
对象)
3.3 调试笔记
3.2.1 错误“TypeError: type <class ‘numpy.float64‘> cannot be safely interpreted as an integer”
请参考博文《【Python Solution】TypeError: type <class ‘numpy.float64‘> cannot be safely interpreted as an integer》
根据以上博文中的信息和错误提示可以知道,这里是由于cocoapi
中np.linspace的使用问题导致的,其代码为
self.iouThrs = np.linspace(.5, 0.95, np.round((0.95 - .5) / .05) + 1, endpoint=True)
num = np.round((0.95 - .5) / .05) + 1
numpy
中要求np.linspace
的num
参数(采样个数)为整数,
3 EDA
3.1 COCO数据集存在width或者height小于10像素的目标
在对COCO数据集进行探索性数据分析之后,我们知道COCO数据集中是存在很小的目标的,例如“width或者height小于10像素的目标”,
这里我们可以看看一个示例图像,
3.2 COCO中存在目标个数为0的图像——img_id–250对应的图片
COCO数据集会存在GT目标个数为0的图片,例如:img_id–250对应的图片;
3.3 COCO数据集不存在“图像稀疏”的问题
我们经过eda数据集后发现
可以看到COCO中图像最大的尺寸为(640,640),平均尺寸为(577,484),可以看到在W和H两个维度上,平均尺寸都超过了最大尺寸的一半(也就是320像素),所以COCO不存在“图像稀疏”的问题;
《南溪的目标检测学习笔记》——COCO数据集的学习笔记相关推荐
- tensorflow精进之路(二十四)——Object Detection API目标检测(中)(COCO数据集训练的模型—ssd_mobilenet_v1_coco模型)
1.概述 上一讲简单的讲了目标检测的原理以及Tensorflow Object Detection API的安装,这一节继续讲Tensorflow Object Detection API怎么用. 2 ...
- 《南溪的目标检测学习笔记》——目标检测模型的设计笔记
1 南溪学习的目标检测模型--DETR 南溪最赞赏的目标检测模型是DETR, 论文名称:End-to-End Object Detection with Transformers 1.2 decode ...
- 《南溪的目标检测学习笔记》——夏侯南溪的CNN调参笔记,加油
1 致谢 感谢赵老师的教导! 感谢张老师的指导! 2 调参目标 在COCO数据集上获得mAP>=10.0的模型,现在PaddleDetection上的Anchor-Free模型[TTFNet]的 ...
- 《南溪的目标检测学习笔记》——后处理方法的学习笔记
1 前言 后处理方法是很重要的,我在学习训练COCO数据集时深有体会,这里用笔记记录一下后处理的相关知识- 2 南溪使用的的后处理方法 南溪使用后处理操作流程: 阈值过滤(低阈值去框,提速nms)→\ ...
- 《南溪的目标检测学习笔记》——模型预处理的学习笔记
1 介绍 在目标检测任务中,模型预处理分为两个步骤: 图像预处理:基于图像处理算法 数值预处理:基于机器学习理论 关于图像预处理,请参考<南溪的目标检测学习笔记>--图像预处理的学习笔记 ...
- 《南溪的目标检测学习笔记》的笔记目录
1 前言 这是<南溪的目标检测学习笔记>的目录~ 2 学习目标检测的思路--"总纲" <南溪的目标检测学习笔记>--目标检测的学习笔记 我在这篇文章中介绍了 ...
- 目标检测算法(传统基于深度学习的)
目标检测算法 最近在学目标检测各类算法,主要分为传统的目标检测方法和基于深度学习的目标检测算法,这里记录了一些基本的算法介绍.下图是目标检测算法的发展历程 传统目标检测方法 分三部分:区域选择–> ...
- Cascade R-CNN升级!目标检测制霸COCO,实例分割超越Mask R-CNN
点击我爱计算机视觉标星,更快获取CVML新技术 前天,arxiv上新出一篇论文<Cascade R-CNN: High Quality Object Detection and Instance ...
- 夏侯南溪搭建目标检测模型——文件结构设计篇
1 前言 此文章是夏侯南溪搭建目标检测模型--文件夹结构设计篇- 2 文件夹命名 使用小写字母命名,单词之间用短线"-"进行连接,例如: plane-detection 3 项目文 ...
最新文章
- Python数据类型和分支循环
- Linux 多应用程序docker自动部署脚本
- 深入理解 Java 虚拟机 学习笔记
- 柠檬网络电视_睡觉时旁边放柠檬,真能促进长高提升记忆力?权威解答来了
- python例题代码_python26个练习题及代码-789
- linux 驱动读写文件,Linux下读写寄存器
- 计算机专业跨考学科英语难吗,跨考学科英语,过来人走过的弯路
- 做个轻松省力的父母的几个原则
- 小A是支枪,子弹未打光---之手 枪篇
- 用 JS 给图片加文字水印或图片水印
- 肥姐沈殿霞离世追悼会时间待定 为女儿留下上亿遗产
- 上海泛微面经(从Java开发到项目实施岗)
- NOIP模拟19/07/22
- uint8_t图像数据类型介绍
- WordPress调用自带的友情链接功能_只在首页显示
- 2021-08-25 新手创建bt面板并创建网站
- JAVA学习之路:不走弯路,就是捷径(一)
- iOS storyboard 用法详解
- 软件测试(白盒测试与黑盒测试)
- 一名85后老程序员的真心话