缩小COCO数据集

在运行YOLOS模型的过程中,需要使用到COCO2017这个数据集,但从实验运行来看,其所需时间无疑是相当漫长,预计可能需要近几十天才能完成,因此便考虑缩小COCO数据集大小,即尽可能在遵循其分布的情况下,将数据集中的图片数量缩小。博主这里将数据集缩小了16倍。

下面是缩小代码:

# coding:utf8
import json
import time
import shutil
import os
from collections import defaultdict
import json
from pathlib import Pathclass COCO:def __init__(self, annotation_file=None, origin_img_dir=""):"""Constructor of Microsoft COCO helper class for reading and visualizing annotations.:param annotation_file (str): location of annotation file:param image_folder (str): location to the folder that hosts images.:return:"""# load datasetself.origin_dir = origin_img_dirself.dataset, self.anns, self.cats, self.imgs = dict(), dict(), dict(), dict()  # imgToAnns 一个图片对应多个注解(mask) 一个类别对应多个图片self.imgToAnns, self.catToImgs = defaultdict(list), defaultdict(list)if not annotation_file == None:print('loading annotations into memory...')tic = time.time()dataset = json.load(open(annotation_file, 'r'))assert type(dataset) == dict, 'annotation file format {} not supported'.format(type(dataset))print('Done (t={:0.2f}s)'.format(time.time() - tic))self.dataset = datasetself.createIndex()def createIndex(self):# create index    给图片->注解,类别->图片建立索引print('creating index...')anns, cats, imgs = {}, {}, {}imgToAnns, catToImgs = defaultdict(list), defaultdict(list)if 'annotations' in self.dataset:for ann in self.dataset['annotations']:imgToAnns[ann['image_id']].append(ann)anns[ann['id']] = annif 'images' in self.dataset:for img in self.dataset['images']:imgs[img['id']] = imgif 'categories' in self.dataset:for cat in self.dataset['categories']:cats[cat['id']] = catif 'annotations' in self.dataset and 'categories' in self.dataset:for ann in self.dataset['annotations']:catToImgs[ann['category_id']].append(ann['image_id'])print('index created!')# create class membersself.anns = annsself.imgToAnns = imgToAnnsself.catToImgs = catToImgsself.imgs = imgsself.cats = catsdef build(self, tarDir=None, tarFile='./new.json', N=1000):load_json = {'images': [], 'annotations': [], 'categories': [], 'type': 'instances', "info": {"description": "This is stable 1.0 version of the 2014 MS COCO dataset.", "url": "http:\/\/mscoco.org", "version": "1.0", "year": 2014, "contributor": "Microsoft COCO group", "date_created": "2015-01-27 09:11:52.357475"}, "licenses": [{"url": "http:\/\/creativecommons.org\/licenses\/by-nc-sa\/2.0\/", "id": 1, "name": "Attribution-NonCommercial-ShareAlike License"}, {"url": "http:\/\/creativecommons.org\/licenses\/by-nc\/2.0\/", "id": 2, "name": "Attribution-NonCommercial License"}, {"url": "http:\/\/creativecommons.org\/licenses\/by-nc-nd\/2.0\/","id": 3, "name": "Attribution-NonCommercial-NoDerivs License"}, {"url": "http:\/\/creativecommons.org\/licenses\/by\/2.0\/", "id": 4, "name": "Attribution License"}, {"url": "http:\/\/creativecommons.org\/licenses\/by-sa\/2.0\/", "id": 5, "name": "Attribution-ShareAlike License"}, {"url": "http:\/\/creativecommons.org\/licenses\/by-nd\/2.0\/", "id": 6, "name": "Attribution-NoDerivs License"}, {"url": "http:\/\/flickr.com\/commons\/usage\/", "id": 7, "name": "No known copyright restrictions"}, {"url": "http:\/\/www.usa.gov\/copyright.shtml", "id": 8, "name": "United States Government Work"}]}if not Path(tarDir).exists():Path(tarDir).mkdir()for i in self.imgs:if(N == 0):breaktic = time.time()img = self.imgs[i]load_json['images'].append(img)fname = os.path.join(tarDir, img['file_name'])anns = self.imgToAnns[img['id']]for ann in anns:load_json['annotations'].append(ann)if not os.path.exists(fname):shutil.copy(self.origin_dir+'/'+img['file_name'], tarDir)print('copy {}/{} images (t={:0.1f}s)'.format(i, N, time.time() - tic))N -= 1for i in self.cats:load_json['categories'].append(self.cats[i])with open(tarFile, 'w+') as f:json.dump(load_json, f, indent=4)coco = COCO('/data/programs/yolos/coco/annotations/instances_train2017.json',origin_img_dir='/data/programs/yolos/coco/train2017')               # 完整的coco数据集的图片和标注的路径
coco.build('/data/datasets/mincoco/train2017', '/data/datasets/mincoco/instances_train2017.json', 7392)  # 保存图片路径coco = COCO('/data/programs/yolos/coco/annotations/instances_val2017.json',origin_img_dir='/data/programs/yolos/coco/val2017')                 # 完整的coco数据集的图片和标注的路径
coco.build('/data/datasets/mincoco/val2017', '/data/datasets/mincoco/instances_val2017.json', 312)       # 保存图片路径# 在2017年数据集中,训练集118287张,验证5000张,测试集40670张.
# 118287/16 = 7392 5000/16 = 312

完成后的图像与标注文件:

在这里插入图片描述
随后我们就可以使用该数据集进行我们的训练操作了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1410904.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

导游讲解口才技巧心得体会总结(3篇)

导游讲解口才技巧心得体会总结(3篇) **篇:提升表达力,传递独特魅力 在导游工作中,口才技巧的重要性不言而喻。通过不断的实践和反思,我深刻体会到提升表达力对于导游工作的重要性。一个清晰、生动、有趣的…

【c++】继承学习(一):继承机制与基类派生类转换

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好,本篇文章我们来学习继承部分 目录 1.继承的概念和定义继承的定义继承基类成员的访问方式变化 2.基类和派生类对象赋值转换3.继承中的作用域 1.继承的概念和定义 …

OSPF实验系列---3.综合实验

OSPF的综合实验 实验拓扑及要求如下 实验分析 1.R4为ISP,进行IP配置,区域0为公网区域,配置IP地址 2.做MGRE,R3为中心站点,形成Hub-Spoke 3.子网划分 4.私网互通,NAT转换 5.做特殊区域,修改hel…

【C++】STL简介

🔥个人主页: Forcible Bug Maker 🔥专栏: C 目录 前言什么是STL?STL的历史STL的版本STL六大组件STL的优缺点STL的优点:STL的缺点: 如何学习STL结语 前言 本篇博客主要内容:STL简介。…

01.本地工作目录、暂存区、本地仓库三者的工作关系

1.持续集成 1.持续集成CI 让产品可以快速迭代,同时还能保持高质量。 简化工作 2.持续交付 交付 3.持续部署 部署 4.持续集成实现的思路 gitjenkins 5.版本控制系统 1.版本控制系统概述2.Git基本概述3.Git基本命令 2.本地工作目录、暂存区、本地仓库三者的工作关系…

AD如何从外部导入外框或修改外框大小

一、从外部导入外框 1、从cad中导出dxf文件,从AD中导入导出的文件 2、可参考如下参数设置 3、导入确认后,选择外边框线(选择一条边的线然后按Tab键可快速选择) 4、到设计-板子形状中选择“按照选择对象定义” 5、板子外形已经出来…

数字电路-5路呼叫显示电路和8路抢答器电路

本内容涉及两个电路,分别为5路呼叫显示电路和8路抢答器电路,包含Multisim仿真原文件,为掌握FPGA做个铺垫。紫色文字是超链接,点击自动跳转至相关博文。持续更新,原创不易! 目录: 一、5路呼叫显…

前端工程化05-初始前端工程化Node基本介绍安装配置基础知识

6、初始前端工程化 6.1、工程化概述 虽然前几篇我的目录标题写的前端工程化,但是那些东西并不属于前端工程化的内容,更倾向于是js、jq当中的东西,下面我们将接触真正的前端工程化。 前端工程化开发其实现在是离不开一个东西的,…

观察者模式实战:解密最热门的设计模式之一

文章目录 前言一、什么是观察者模式二、Java实现观察者模式2.1 观察者接口2.2 具体观察者2.3 基础发布者2.4 具体发布者2.5 消息发送 三、Spring实现观察者模式3.1 定义事件类3.2 具体观察者3.3 具体发布者3.4 消息发送 总结 前言 随着系统的复杂度变高,我们就会采…

文件与IO基础常识知识

在这里,只介绍理论知识,不介绍代码。 目录 1.IO 1.1.字面概念 1.2.输入输出模型 2.文件 2.1.文件目录 2.2.文件路径 2.3.文件分类 1.IO 为了我们接下来学习的文件IO,所以我们先来认识什么是IO。 1.1.字面概念 (1&#x…

本地基于知识库的大模型的使用教程

本地基于知识库的大模型的使用教程 启动 双击 大模型启动.bat文件,内容如下: cmd /k "cd /d G:\Anaconda3\Scripts && activate.bat && cd /d D:\docdb_llm && conda activate python3.11 && python startup.py…

MFC 列表控件删除实例(源码下载)

1、本程序基于前期我的博客文章《MFC下拉菜单打钩图标存取实例(源码下载) 》 2、程序功能选中列表控件某一项,删除按钮由禁止变为可用,点击删除按钮,选中的项将删除。 3、首先在主界面添加一个删除参数按钮。 4、在myDlg.cpp 文件…

STM32的TIM输入捕获和PWMI详解

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. IC输入捕获 2. 频率测量 3. 主模式、从模式、触发源选择 4. 输入捕获基本结构 5. PWMI模式 6. 代码示例 6.1 PWM.c 6.2 PWM.h 6.3 IC.c 6.4 IC.h 6.5 完整工程文件 输出比较可以看下面这篇…

python报错SyntaxError

如果报这个错, 在你的相应的demo.py文件首行输入下面的,可以多试一下,之后就好了。 这个解决方法也是参考其他大佬的做法,不知道为什么python中#是注释,这个也会起作用。 然后就神奇的发现问题解决了。发现下面的代码…

window系统安装MySQL

MySQL的安装和配置 根据不同的系统平台,MySQL由不同安装方式和安装包。 官方下载对应的安装包 官网:www.mysql.com 下载地址:MySQL :: Download MySQL Community Server (Archived Versions) window系统 一、安装包(Windows…

进位计数制

目录 前言 最古老的计数方法 十进制数 推广:r 进制计数法 任意进制->十进制 二进制<->八进制,十六进制 十进制->任意进制 真值和机器数 总结: 前言 本篇文章我们正式进入第二章:数据的表示和运算,通过第一章的学习我们知道了现代计算机的结构 那数据如何…

华为OD机试 - 会议室占用时间段(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

✔ ★Java项目——设计一个消息队列(五)【虚拟主机设计】

虚拟主机设计 创建 VirtualHost实现构造⽅法和 getter创建交换机删除交换机创建队列删除队列创建绑定删除绑定发布消息 ★路由规则1) 实现 route ⽅法2) 实现 checkRoutingKeyValid3) 实现 checkBindingKeyValid4) 实现 routeTopic5) 匹配规则测试⽤例6) 测试 Router 订阅消息1…

动态规划-子序列问题1

文章目录 1. 最长递增子序列&#xff08;300&#xff09;2. 摆动序列&#xff08;376&#xff09;3. 最长递增子序列的个数&#xff08;673&#xff09;4. 最长数对链&#xff08;646&#xff09; 1. 最长递增子序列&#xff08;300&#xff09; 题目描述&#xff1a; 状态表…

38.基础乐理-其余调号说明

目前只写了自然大调&#xff0c;还有其它的调式没有写&#xff0c;大调中还有 和声大调 与 旋律大调&#xff0c;除了大调&#xff0c;还有小调式、五声调式、中古调式等还有很多很多&#xff0c;这些东西是需要对于调号、拍号&#xff0c;对于五线谱、对于音程和弦都有一定程度…