【数据集处理工具】根据COCO数据集的json标注文件实现训练与图像的文件划分

news2024/11/13 13:11:45

根据COCO数据集的json标注文件实现训练与图像的文件划分

    • 一、适用场景:
    • 二、COCO数据集简介:
    • 三、场景细化:
    • 四、代码优势:
    • 五、代码

在这里插入图片描述

一、适用场景:

适用于一个常见的计算机视觉项目应用场景,特别是当涉及到使用标注过的图像数据集时。具体而言,这段代码主要用于从一个大型的、未分类的图像存储库中,依据标注文件(COCO JSON格式)来筛选并整理出特定子集的图像文件。

二、COCO数据集简介:

COCO(Common Objects in Context)数据集是一种广泛使用的图像数据集,它不仅包含了丰富的图像资源,还提供了详尽的标注信息,包括物体检测、分割、关键点定位等。COCO JSON文件是一种结构化的数据格式,用于存储关于图像的元数据和标注细节,例如图像ID、文件名、图像尺寸以及各种标注信息。

三、场景细化:

当你在进行深度学习模型训练、测试或验证时,可能需要从原始图像库中提取出符合特定条件的图像,以便构建定制化的数据子集。这时,上述代码就显得尤为重要。它通过解析COCO JSON文件中的images部分,获取每张图像的文件名,然后从原始图像目录中找到对应文件,并将其复制到目标目录下,从而实现了图像数据的自动整理和分类。

四、代码优势:

这个代码过程极大地简化了数据预处理工作,使得研究人员和开发者能够更高效地准备训练数据,避免了手动查找和移动文件的繁琐步骤。同时,这样的自动化处理也减少了人为错误,确保了数据集的一致性和完整性,对后续的机器学习模型训练具有重要的支撑作用。

总之,这段代码是数据科学和机器学习项目中数据管理环节的一个实用工具,有助于加速研究和开发流程,提高数据处理效率。

五、代码

import json
import os
import shutil

def copy_images_from_coco_json(json_path, images_dir, target_dir):
    # 确保目标目录存在
    if not os.path.exists(target_dir):
        os.makedirs(target_dir)

    try:
        # 读取COCO JSON文件
        with open(json_path, 'r') as f:
            coco_data = json.load(f)
    except Exception as e:
        print(f"Error reading JSON file: {e}")
        return

    # 遍历所有图片
    for image_info in coco_data['images']:
        image_file_name = image_info['file_name']
        source_image_path = os.path.join(images_dir, image_file_name)
        target_image_path = os.path.join(target_dir, image_file_name)

        try:
            # 检查目标文件是否已存在
            if os.path.exists(target_image_path):
                print(f"File {image_file_name} already exists in {target_dir}. Skipping.")
            else:
                # 复制图片到目标目录
                shutil.copy(source_image_path, target_image_path)
                print(f"Image {image_file_name} copied to {target_dir}")
        except FileNotFoundError:
            print(f"Source image {image_file_name} not found.")
        except Exception as e:
            print(f"Error copying image {image_file_name}: {e}")

# 使用函数
# data/coco1/annotations/
json_path = './coco1/annotations/instances_val2017.json'
images_dir = './coco1/images'
target_dir = './coco1/target/val2017'

copy_images_from_coco_json(json_path, images_dir, target_dir)

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

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

相关文章

python数据可视化(6)——绘制散点图

课程学习来源:b站up:【蚂蚁学python】 【课程链接:【【数据可视化】Python数据图表可视化入门到实战】】 【课程资料链接:【链接】】 Python绘制散点图查看BMI与保险费的关系 散点图: 用两组数据构成多个坐标点,考察…

PXE、Kickstart和cobbler

一.系统装机 1.1 三种引导方式 启动操作系统 1.硬盘 2.光驱(u盘) 3.网络启动 pxe 1.2 系统安装过程 1.加载boot loader: Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设 备、建立内存空间的映射图,从而将系统的软硬…

详解曼达拉升级:如何用网络拓扑结构扩容BSV区块链

​​发表时间:2024年5月24日 BSV曼达拉升级是对BSV基础设施的战略性重塑,意在显著增强其性能,运行效率和可扩容。该概念于2018年提出,其战略落地将使BSV区块链顺利过渡,从现有的基于单一集成功能组件的网络拓扑结构&am…

使用Elasticsearch Python SDK 查询Easysearch

随着数据分析需求的不断增长,能够高效地查询和分析大数据集变得越来越重要。Elasticsearch作为一种强大的分布式搜索和分析引擎,被广泛应用于各种场景。Easyearch 支持原生 Elasticsearch 的 DSL 查询语法,确保原业务代码无需调整即可无缝迁移…

【数据结构与算法 经典例题】判断二叉树是否对称

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法 经典例题》C语言 期待您的关注 目录 一、问题描述 二、解题思路 三、C语言实现代码 一、问题描述 给你一个二…

MySQL NaviCat 安装及配置教程(Windows)【安装】

文章目录 一、 MySQL 下载1. 官网下载2. 其它渠道 二、 MySQL 安装三、 MySQL 验证及配置四、 NaviCat 下载1. 官网下载2. 其它渠道 五、 NaviCat 安装六、 NaviCat 激活 软件 / 环境安装及配置目录 一、 MySQL 下载 1. 官网下载 安装地址:https://www.mysql.com/…

Python | Leetcode Python题解之第237题删除链表中的节点

题目: 题解: class Solution:def deleteNode(self, node):node.val node.next.valnode.next node.next.next

OrangePi Aipro Ai计算测试

开发板配置 http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-AIpro.html CPU4核64位处理器 AI处理器GPU集成图形处理器AI算力8-12TOPS算力内存LPDDR4X:8GB/16GB(可选),速率:3200…

让AI语言模型自由飞翔:LangChain框架的奇妙世界

今天,我将为大家揭开一项令人激动的技术——LangChain。想象一下,如果能将人工智能的强大能力与我们日常使用的数据和工具无缝连接,那将开启怎样崭新且无限的可能! LangChain,一个专为大型语言模型设计的框架&#xf…

Linux FFmpeg安装教程

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Windows安装Pycharm及汉化教程

在安装好了Python之后呢,我们需要更方便的进行编写代码,使用Python自带的IDLE和命令行是不太友好的。 那么有没有一款免费好用的写代码工具呢?答案是有的! PyCharm 是由 JetBrains 打造的一款 Python IDE,提供代码分析…

【Django】网上蛋糕项目商城-注册,登录,修改用户信息,退出功能

概念 通过以上多篇文章的讲解,对该项目的功能已经实现了很多,本文将对该项目的用户注册,登录,修改用户信息,以及退出等功能的实现。 注册功能实现 点击head.html头部页面的注册按钮,触发超链接跳转至use…

K8s集群初始化遇到的问题

kubectl describe pod coredns-545d6fc579-s9g5s -n kube-system 找到原因1:CoreDNS Pod 处于 Pending 状态的原因是集群中的节点都带有 node.kubernetes.io/not-ready 污点 journalctl -u kubelet -f 14:57:59.178592 3553 remote_image.go:114] "PullIma…

火车行驶动态特效404单页源码

源码介绍 火车行驶动态特效404单页源码,白云飘飘,小火车带着not page found行驶远方,适合做网站错误页,将下面的代码放到空白的html文件里面,鼠标双击即可查看效果,或者上传到服务器,设置好重定向即可 效果预览 完整代码 <!DOCTYPE html> <html><head…

【ROS2】高级:实现自定义内存分配器

目标&#xff1a;本教程将展示在编写 ROS 2 C 代码时如何使用自定义内存分配器。 教程级别&#xff1a;高级 时间&#xff1a;20 分钟 目录 背景 编写分配器编写一个示例主程序将分配器传递到进程内管道测试和验证代码 TLSF 分配器 本教程将教您如何为发布者和订阅者集成自定义…

【个人笔记】685. 冗余连接 II 的解释(并查集)

一棵树有n个点和n条边&#xff0c;返回一条能删除的边&#xff0c;使得剩下的图是有 n 个节点的有根树。 解释&#xff1a; 注意不冗余的有根树的特性&#xff01;**根节点入度为0&#xff0c;其余结点只有一个入度&#xff01;**所以冗余的两种情况如下&#xff1a; &#xff…

jmeter持续学习之---控制器

IF控制器 下面这种写法jmeter不推荐有性能的问题 jmeter推荐勾选上的这种写法 使用"Interpret Condition as Variable Expression"工具的性能要好一些 循环控制器 ForEach控制器 与用户定义的变量或者正则表达式提取器配合使用,循环读取。用户定义的变量或者正则…

彻底改变时尚:使用 GAN 实现 AI 的未来

彻底改变时尚&#xff1a;使用 GAN 实现 AI 的未来 一、介绍 想象一下&#xff0c;在这个世界里&#xff0c;时装设计师永远不会用完新想法&#xff0c;我们穿的每一件衣服都是一件艺术品。听起来很有趣&#xff0c;对吧&#xff1f;好吧&#xff0c;我们可以在通用对抗网络 &a…

路网双线合并单线——ArcGISpro 解决方法

路网双线合并成单线是一个在地图制作、交通规划以及GIS分析中常见的需求。双线路网定义&#xff1a;具有不同流向、不同平面结构的道路。此外&#xff0c;车道数较多的道路&#xff08;例如&#xff0c;双黄实线车道数大于4的道路&#xff09;也可以视为双线路网&#xff0c;本…

C++相关概念和易错语法(22)(final、纯虚函数、继承多态难点)

1.final final在继承和多态中都可以使用&#xff0c;在继承中是指不想将自己被继承&#xff0c;在多态中是指不想该函数被重写&#xff0c;比较简单&#xff0c;下面是一些使用例子。 2.纯虚函数 当我们需要抽象一个类的时候&#xff0c;我们就需要用到纯虚函数。所谓抽象的类…