coco json 改名字 划分验证集

目录

coco json 改名字 花粉征集 独立文件版

划分训练集,验证集 包括json(汇总版)


coco json 改名字 花粉征集 独立文件版

import json
import os
import random
import shutilimport numpy as npclass MyEncoder(json.JSONEncoder):def default(self, obj):if isinstance(obj, np.integer):return int(obj)elif isinstance(obj, np.floating):return float(obj)elif isinstance(obj, np.ndarray):return obj.tolist()else:return super(MyEncoder, self).default(obj)def to_val(dir_a,target_dir,copy_mode=2):# dir_a=r'F:\data\jupiter\det_no\wujian_det'os.makedirs(target_dir, exist_ok=True)img_files = ['%s/%s' % (i[0], j) for i in os.walk(dir_a) for j in i[-1] if j.endswith(('jpg', 'png', 'jpeg'))]random.shuffle(img_files)length = len(img_files)part1 = int(length * 1 / 9)list1 = img_files[:part1]for index, img_file in enumerate(list1):json_path = img_file.replace('.jpg', '.json')if os.path.exists(json_path):if copy_mode == 1:shutil.copy(json_path, target_dir)if copy_mode == 2:shutil.move(json_path, target_dir)if copy_mode == 1:shutil.copy(img_file, target_dir)if copy_mode == 2:shutil.move(img_file, target_dir)def rename_json(dir_ar):file_list = ['%s/%s' % (i[0].replace("\\", "/"), j) for i in os.walk(dir_ar) for j in i[-1] ifj.endswith(('json', 'apng'))]for lb_file in file_list:annotation = json.load(open(lb_file, "r", encoding="utf-8"))shapes = annotation['shapes']for shape in shapes:if shape["label"]=="aa":shape["label"]="dao"print(lb_file)json.dump(annotation, open(lb_file, 'w'), indent=4, cls=MyEncoder)  # indent=4 更加美观显示if __name__ == '__main__':dir_ar=r'F:\data\qijun\video_dao\dai\00_det'target_dir=r'F:\data\qijun\video_dao\dai\00_det_val'# rename_json(dir_ar)to_val(dir_ar, target_dir,copy_mode=2)

划分训练集,验证集 包括json(汇总版)

import json
import os
import random
import shutilimport cv2from skimage.metrics import structural_similarity as ssimdef split_step_3():dir_a=r'F:\data\jupiter\det_no\wujian_det\train'dir_a=r'F:\data\jupiter\det_no\wujian_det'img_files = ['%s/%s' % (i[0], j) for i in os.walk(dir_a) for j in i[-1] if j.endswith(('jpg', 'png', 'jpeg'))]random.shuffle(img_files)total = 8 + 2 + 5  # 总比例length = len(img_files)part1 = int(length * 8 / total)part2 = int(length * 2 / total)list2 = img_files[part1:part1 + part2]list3 = img_files[part1 + part2:]gropus=[list2,list3]print(len(list2),len(list3))targets=[r'F:\data\jupiter\det_no\wujian_det\val',r'F:\data\jupiter\det_no\wujian_det\test']copy_mode=1for index, group in enumerate(gropus):target_dir = targets[index]os.makedirs(target_dir, exist_ok=True)print(index, target_dir)for img_file in group:json_path = img_file.replace('.jpg', '.json')if os.path.exists(json_path):if copy_mode == 1:shutil.copy(json_path, target_dir)if copy_mode == 2:shutil.move(json_path, target_dir)if copy_mode == 1:shutil.copy(img_file, target_dir)if copy_mode == 2:shutil.move(img_file, target_dir)def to_val():# dir_a=r'F:\data\jupiter\det_no\wujian_det'img_files = ['%s/%s' % (i[0], j) for i in os.walk(dir_a) for j in i[-1] if j.endswith(('jpg', 'png', 'jpeg'))]random.shuffle(img_files)length = len(img_files)part1 = int(length * 1 / 10)list1 = img_files[:part1]# target_dir=r'F:\data\jupiter\det_no\wujian_det\val'os.makedirs(target_dir, exist_ok=True)copy_mode=2for index, img_file in enumerate(list1):json_path = img_file.replace('.jpg', '.json')if os.path.exists(json_path):if copy_mode == 1:shutil.copy(json_path, target_dir)if copy_mode == 2:shutil.move(json_path, target_dir)if copy_mode == 1:shutil.copy(img_file, target_dir)if copy_mode == 2:shutil.move(img_file, target_dir)def splist_check_data(json_paths):img_paths=[]for json_path in json_paths:with open(json_path,'r',encoding='utf-8') as f:data=json.load(f)tmp_paths = list(data.keys())img_paths.extend(tmp_paths)img_name_d={}for img_path in img_paths:base_name=os.path.basename(img_path)if base_name in img_name_d:img_name_d[base_name]=[img_path]else:if img_path in img_name_d[base_name]:print('img repeat',img_path)else:img_name_d[base_name].append(img_path)img_files = ['%s/%s' % (i[0], j) for i in os.walk(dir_a) for j in i[-1] if j.endswith(('jpg', 'png', 'jpeg'))]for img_path in img_files:img_name = os.path.basename(img_path)if img_name in img_name_d:img_paths = img_name_d[img_name]if len(img_paths)==2:img_t=cv2.imread(img_path)img_t = cv2.resize(img_t, (320, 180))for idnex, img_tmp in enumerate(img_paths):img_from =cv2.imread(img_tmp)img_from=cv2.resize(img_from,(320,180))v_ssim = ssim(img_from, img_t, win_size=5, channel_axis=2)if v_ssim > 0.9:shutil.copy2(img_tmp, img_path)print('ssim',idnex,img_tmp,img_path)breakelse:shutil.copy2(img_paths[0],img_path)else:print('errr',img_path)if __name__ == '__main__':dir_a = r'/data5/lbg/data/ice_hebing/data_det/aaa_2/'target_dir = r'/data5/lbg/data/ice_hebing/data_det/val/aaa_2/'json_paths=[r'/data5/lbg/project/detect/yolov5_wx_ice/det_check/train_JupiterCN_20230916_det_err.json',r'/data5/lbg/project/detect/yolov5_wx_ice/det_check/val_JupiterCN_20230916_det_err.json']# json_paths=[r'val_JupiterCN_20230916_det_err.json',r'val_JupiterCN_20230916_det_err.json']copy_mode = 2splist_check_data(json_paths)# to_val()

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

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

相关文章

粒子群算法PSO优化BP神经网络预测MATLAB代码实现(PSO-BP预测)

本文以MATLAB自带的脂肪数据集为例,数据集为EXCEL格式,接下来介绍粒子群算法优化BP神经网络预测的MATLAB代码步骤,主要流程包括1. 读取数据 2.划分训练集和测试集 3.归一化 4.确定BP神经网络的隐含层最优节点数量 5. 使用粒子群算法优化BP的神…

Docker 容器相关的常见面试问题及答案

Docker 容器相关的常见面试问题及答案 问题 1:什么是 Docker? 答案:Docker 是一个开源的平台,允许开发者自动化地部署应用程序在容器中。容器是轻量级、独立且打包的应用服务,可以在任何环境中运行,确保一…

强得离谱,AI音乐的 Stable Diffusion: MusicGen

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

python 数据清洗基础教程

使用Python进行处理数据集删减的步骤通常包括数据清洗、数据分析和数据采样。以下是一些基本的示例代码,展示了如何使用Python进行这些操作: 数据清洗: 删除重复项: import pandas as pd # 假设数据集是一个CSV文件 df pd.rea…

打造完美Mac多屏视界,BetterDisplay Pro一键掌控!

BetterDisplay Pro for Mac是一款专为Mac用户打造的显示器管理与优化软件,旨在为用户带来卓越的视觉体验和工作效率。它凭借强大的功能和简洁易用的界面,成为了Mac用户优化显示器设置的得力助手。 一、全方位管理与优化 BetterDisplay Pro for Mac支持…

探索Python的多媒体解决方案:ffmpy库

文章目录 探索Python的多媒体解决方案:ffmpy库一、背景:数字化时代的多媒体处理二、ffmpy:Python与ffmpeg的桥梁三、安装ffmpy:轻松几步四、ffmpy的五项基本功能1. 转换视频格式2. 调整视频质量3. 音频转换4. 视频截图5. 视频合并…

Python 设计模式(第2版) -- 第一部分(创建型模式)

Python 设计模式(第2版) 设计模式的主要特点如下所示: 它们是语言无关的,可以用多种语言实现。它们是动态的,随时会有新的模式引入。它们可以进行定制,因此对开发人员非常有用。 设计模式的优点如下所示: 它们可以…

java架构设计-COLA

参考:https://github.com/alibaba/COLA 架构 要素:组成架构的重要元素 结构:要素直接的关系 意义:定义良好的结构,治理应用复杂度,降低系统熵值,改善混乱状态 创建COLA应用: mvn …

Git的3个主要区域

一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。 下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。 Workspace:工作区 Index / Stage:暂存区 Reposito…

git pull的使用方法

git pull 是 Git 中的一个常用命令&#xff0c;它结合了 fetch 和 merge 两个操作&#xff0c;用于从远程仓库拉取最新的更改&#xff0c;并将其合并到本地仓库的当前分支中。这个命令可以帮助你保持本地代码与远程仓库同步。 ### 基本语法 bash git pull [options] [<rem…

你的企业真的适合做私域吗?

现在&#xff0c;都在提倡企业做私域&#xff0c;可是所有的企业都适合做私域吗&#xff1f;看看市场上成功的案例&#xff0c;显然&#xff0c;并不是所有企业都适合做私域&#xff0c;所以&#xff0c;做私域之前&#xff0c;企业也应该充分的分析&#xff0c;自己的优势是什…

spark常见问题

写文章只是为了学习总结或者工作内容备忘&#xff0c;不保证及时性和准确性&#xff0c;看到的权当个参考哈&#xff01; 1. 执行Broadcast大表时&#xff0c;等待超时异常&#xff08;awaitResult&#xff09; 现象&#xff1a;org.apache.spark.SparkException: Exception…

玩转OurBMC第八期:OpenBMC webui之通信交互

栏目介绍&#xff1a;“玩转OurBMC”是OurBMC社区开创的知识分享类栏目&#xff0c;主要聚焦于社区和BMC全栈技术相关基础知识的分享&#xff0c;全方位涵盖了从理论原理到实践操作的知识传递。OurBMC社区将通过“玩转OurBMC”栏目&#xff0c;帮助开发者们深入了解到社区文化、…

【网络】序列化和反序列化

一、序列化和反序列化 序列化和反序列化是计算机中用于数据存储和传输的重要概念。 1.序列化 &#xff08;Serialization&#xff09; 是将数据结构或对象转换成一种可存储或可传输格式的过程。在序列化后&#xff0c;数据可以被写入文件、发送到网络或存储在数据库中&…

UITableView之显示单组数据Demo

需求 UITableView实现显示单组数据。尝试设置不同行高度不同。 效果&#xff1a; 数据展示 实现 与之前分组显示数据的区别在于懒加载的数据模型不同。 &#xff08;1&#xff09;声明数据模型类 类的属性一定要和plist中数据的字段保持一致 interface CZhero : NSObject /…

go 语言爬虫库goQuery 的详细使用(知乎日报详情页解析示例)

上一篇《uniapp小程序开发 | 从零实现一款影视类app 》实现了影视小程序的前端和后台接口&#xff0c;虽然包含了大多数小程序应有的知识&#xff0c;但基本还只是涉及网络接口和vue页面的设计。这里介绍下零一个有趣的练手项目&#xff0c;知乎日报。涉及详情页面的html解析&a…

CDA二级(Level II)数据分析师——考试内容梳理四

定额抽样不属于概率抽样 、类型抽样就是分群抽样&#xff1b; 在假设检验中&#xff0c;两类错误的概率相加后不等于1&#xff0c; 在样本量增大的条件下&#xff0c;两类错误的概率可以同时减小&#xff0c; 通常控制第一类错误的概率 &#xff1b;&#xff08;去真&#xff…

线性稳压器LDO的基础知识

一、什么是线性稳压器? 线性稳压器的工作原理是&#xff1a;采用一个压控电流源以强制在稳压器输出端上产生一个固定电压。控制电路连续监视&#xff08;检测&#xff09;输出电压&#xff0c;并调节电流源&#xff08;根据负载的需求&#xff09;以把输出电压保持在期望的数值…

【Spine学习12】之 事件帧

1、新建事件帧&#xff1a; 2、选择第8s的攻击帧&#xff0c;点击第一步新建的attack事件帧前面的钥匙 这样每次动作到8s的时候会自动跳出事件帧提示 这个文字实际动画不会显示 事件是动画过程中所发生情况的触发器。 给程序员识别的

分享:2024年(第12届)“泰迪杯”数据挖掘挑战赛省级奖项获奖名单公示

本次竞赛有评选省奖的省份有广东省、广西壮族自治区、河北省、湖北省。各省奖项依据“泰迪杯”全国评审专家组统一评阅的最终成绩区分省份后从高到低依序按比例产生。 广东省 省级奖项获奖名单公示 奖项设置&#xff1a; 一等奖&#xff1a;约占该省份队伍总数的5%&#xff0…