当前位置: 首页 > news >正文

深度学习(YOLO、DETR) 十折交叉验证

二:交叉验证

在 K 折验证之前最常用的验证方法就是交叉验证,即把数据划分为训练集、验证集和测试集。一般的划分比例为 7:1:2。但如何合理的抽取样本就成为了使用交叉验证的难点,不同的抽取方法会导致截然不同的训练性能。同时由于验证机和训练集是不参与训练的,导致大量的数据无法应用于学习,所以显而易见的会导致训练的效果下降。

二:K 折交叉验证

将训练集数据划分为 K 部分,利用其中的 K-1 份做为训练,剩余的一份作为测试,最后取平均测试误差做为泛化误差。这样做的好处是,训练集的所有样本都必然会成为训练数据同时页必然有机会成为一次测试集。可以更好的利用训练集数据。

K 越大,平均误差被视为泛化误差这个结果就越可靠,但相应的所花费的时间也是线性增长的。

上图 中 划分测试、训练、验证的时候 平均分成10份   7份训练 1份验证 2份测试 。

按照顺序循环成一个圈  代码如下:

import os
import shutil
import numpy as np#文件地址
postfix = 'jpg'
imgpath = 'D:\\dataset\\images'
txtpath = 'D:\\dataset\\txt'# 创建存储交叉验证结果的基础目录
os.makedirs('cross_validation', exist_ok=True)# 获取文件列表并按文件名排序
listdir = np.array(sorted([i for i in os.listdir(txtpath) if i.endswith('.txt')], key=lambda x: int(x[:-4])))# 将文件列表等分为10份
folds = np.array_split(listdir, 10)# 进行10次交叉验证
for fold in range(10):# 初始化训练、验证、测试集索引train_indices = []val_indices = []test_indices = []# 训练集索引for i in range(7):index = (fold + i) % 10train_indices.extend(folds[index])# 验证集索引val_index = (fold + 7) % 10val_indices.extend(folds[val_index])# 测试集索引test_indices.extend(folds[(fold + 8) % 10])test_indices.extend(folds[(fold + 9) % 10])# 打印每次折的训练集、验证集和测试集的大小print(f'Fold {fold + 1}:')print(f'  Train set size: {len(train_indices)}')print(f'  Validation set size: {len(val_indices)}')print(f'  Test set size: {len(test_indices)}')# 为当前折创建目录fold_dir = f'cross_validation/fold_{fold + 1}'os.makedirs(f'{fold_dir}/images/train', exist_ok=True)os.makedirs(f'{fold_dir}/images/val', exist_ok=True)os.makedirs(f'{fold_dir}/images/test', exist_ok=True)os.makedirs(f'{fold_dir}/labels/train', exist_ok=True)os.makedirs(f'{fold_dir}/labels/val', exist_ok=True)os.makedirs(f'{fold_dir}/labels/test', exist_ok=True)# 将文件复制到当前折的训练、验证和测试目录中for i in train_indices:img_file = f'{imgpath}/{i[:-4]}.jpg'lbl_file = f'{txtpath}/{i}'shutil.copy(img_file, f'{fold_dir}/images/train/{i[:-4]}.jpg')shutil.copy(lbl_file, f'{fold_dir}/labels/train/{i}')for i in val_indices:img_file = f'{imgpath}/{i[:-4]}.jpg'lbl_file = f'{txtpath}/{i}'shutil.copy(img_file, f'{fold_dir}/images/val/{i[:-4]}.jpg')shutil.copy(lbl_file, f'{fold_dir}/labels/val/{i}')for i in test_indices:img_file = f'{imgpath}/{i[:-4]}.jpg'lbl_file = f'{txtpath}/{i}'shutil.copy(img_file, f'{fold_dir}/images/test/{i[:-4]}.jpg')shutil.copy(lbl_file, f'{fold_dir}/labels/test/{i}')

    images和txt文件夹下存放文件,没有任何子文件夹

相关文章:

深度学习(YOLO、DETR) 十折交叉验证

二:交叉验证 在 K 折验证之前最常用的验证方法就是交叉验证,即把数据划分为训练集、验证集和测试集。一般的划分比例为 7:1:2。但如何合理的抽取样本就成为了使用交叉验证的难点,不同的抽取方法会导致截然不同的训练性…...

基于php网上差旅费报销系统设计与实现

网上报销系统以LAMP(LinuxApacheMySQLPHP)作为平台,涉及到PHP语言、MySQL数据库、JavaScript语言、HTML语言。 2.1 PHP语言简介 PHP,一个嵌套的缩写名称,是英文 “超级文本预处理语言”(PHP: Hypertext Preprocessor)的缩写。P…...

微服务及安全

一、微服务的原理 1.什么是微服务架构 微服务架构区别于传统的单体软件架构,是一种为了适应当前互联网后台服务的「三高需求:高并发、高性能、高可用」而产生的的软件架构。 单体式应用程序 与微服务相对的另一个概念是传统的单体式应用程序( Monolithic application ),…...

图文详解ThreadLocal:原理、结构与内存泄漏解析

目录 一.什么是ThreadLocal 二.ThreadLocal的内部结构 三.ThreadLocal带来的内存泄露问题 ▐ key强引用 ▐ key弱引用 总结 一.什么是ThreadLocal 在Java中,ThreadLocal 类提供了一种方式,使得每个线程可以独立地持有自己的变量副本,而…...

基于java的综合小区管理系统论文.doc

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统综合小区管理系统信息管理难度大,容错率低&am…...

如何合理设置PostgreSQL的`max_connections`参数

合理设置PostgreSQL的max_connections参数对于数据库的稳定性和性能至关重要。这个设置值决定了允许同时连接到数据库的最大客户端数量。如果设置不当,可能导致资源浪费或系统过载。以下是设置max_connections时需要考虑的几个关键因素: 1. 评估系统硬件…...

Kubectl 常用命令汇总大全

kubectl 是 Kubernetes 自带的客户端,可以用它来直接操作 Kubernetes 集群。 从用户角度来说,kubectl 就是控制 Kubernetes 的驾驶舱,它允许你执行所有可能的 Kubernetes 操作;从技术角度来看,kubectl 就是 Kubernetes…...

【Linux】Linux环境基础开发工具使用之Linux调试器-gdb使用

目录 一、程序发布模式1.1 debug模式1.2 release模式 二、默认发布模式三、gdb的使用结尾 一、程序发布模式 程序的发布方式有两种,debug模式和release模式 1.1 debug模式 目的:主要用于开发和测试阶段,目的是让开发者能够更容易地调试和跟…...

clickhouse_driver

一、简介 clickhouse_driver是一个Python库,用于与ClickHouse数据库进行交互。ClickHouse是一个高性能的列式数据库管理系统(DBMS),它适用于实时分析(OLAP)场景。clickhouse_driver模块提供了与ClickHouse…...

BI分析实操案例分享:零售企业如何利用BI工具对销售数据进行分析?

在当下这个竞争激烈的零售市场,企业如何在波诡云谲的商场中站稳脚跟,实现销售目标的翻倍增长? 答案可能就藏在那些看似杂乱无章的数字里。 是的,你没有看错,答案正是那些我们日常接触的销售数据。它们就像是宝藏&…...

python : Requests请求库入门使用指南 + 简单爬取豆瓣影评

Requests 是一个用于发送 HTTP 请求的简单易用的 Python 库。它能够处理多种 HTTP 请求方法,如 GET、POST、PUT、DELETE 等,并简化了 HTTP 请求流程。对于想要进行网络爬虫或 API 调用的开发者来说,Requests 是一个非常有用的工具。在今天的博…...

宋红康JVM调优思维导图

文章目录 1. 概述2. JVM监控及诊断命令-命令行篇3. JVM监控及诊断工具-GUI篇4. JVM运行时参数5. 分析GC日志 课程地址 1. 概述 2. JVM监控及诊断命令-命令行篇 3. JVM监控及诊断工具-GUI篇 4. JVM运行时参数 5. 分析GC日志...

linux 网卡配置

linux网卡可以通过命令和配置文件配置,如果是桌面环境还可以通过图形化界面配置. 1.ifconfig(interfaces config)命令方式 通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性,ifconfig工具不仅可以被用来…...

IEEE |第五届机器学习与计算机应用国际学术会议(ICMLCA 2024)

第五届机器学习与计算机应用国际学术会议(ICMLCA 2024)定于2024年10月18-20日在中国杭州隆重举行。本届会议将主要关注机器学习和计算机应用面临的新的挑战问题和研究方向,着力反映国际机器学习和计算机应用相关技术研究的最新进展。 IEEE |第五届机器学习与计算机应…...

【网络安全】漏洞挖掘:IDOR实例

未经许可,不得转载。 文章目录 正文 正文 某提交系统,可以选择打印或下载passport。 点击Documents > Download后,应用程序将执行 HTTP GET 请求: /production/api/v1/attachment?id4550381&enamemId123888id为文件id&am…...

vue项目执行 cnpm install 报错证书过期的解决方案

拉下源码后执行依赖安装过程,报错 error Error: Certificate has expired,可以通过一下方发解决:npm config set strict-ssl false 再执行 cnpm 命令即可正常拉依赖...

XGboost的安装与使用

安装xgboost: conda install py-xgboost下载demo的数据: https://github.com/dmlc/xgboost 安装graphviz conda install python-graphviz数据 在demo/data里面: 训练集是:agaricus.txt.train、测试集是:agaricus…...

【AI趋势9】开源普惠

关于开源的问题,可以参考我之前的文章: 再说开源软件-CSDN博客 【AI】马斯克说大模型要开源,我们缺的是源代码?(附一图看懂6大开源协议)_分开源和闭源,我们要的当然是开源,马斯克开源。-CSDN博客 一、开…...

【Spark集群部署系列一】Spark local模式介绍和搭建以及使用(内含Linux安装Anaconda)

简介 注意: 在部署spark集群前,请部署好Hadoop集群,jdk8【当然Hadoop集群需要运行在jdk上】,需要注意hadoop,spark的版本,考虑兼容问题。比如hadoop3.0以上的才兼容spark3.0以上的。 下面是Hadoop集群部署…...

泛微OA 常用数据库表

HrmDepartment 人力资源部门 HrmSubCompany 人力资源分部 HrmResource 员工信息表 HrmRoles 角色信息表 T_Condition 报表条件 T_ConditionDetail 报表条件详细值 T_DatacenterUser 基层用户信息 T_FadeBespeak 调查退订表 T_fieldItem 调查项目表输入项信息 T_fieldItemDetail…...

【限时解密】ElevenLabs未文档化的/v1/text-to-speech/{voice_id}/with-timing接口:获取逐词时间戳+音素级对齐数据(仅剩3个Beta白名单通道)

更多请点击: https://intelliparadigm.com 第一章:ElevenLabs英文语音生成的核心能力与技术定位 ElevenLabs 是当前业界领先的 AI 语音合成平台,其英文语音生成能力建立在自研的端到端神经声学模型(如 ElevenMultilingualV2&…...

MacOS光标增强工具:命令行驱动,实现自动化与个性化配置

1. 项目概述:当光标成为生产力工具如果你是一名长期在macOS上工作的开发者、设计师或者文字工作者,你肯定对系统自带的光标功能又爱又恨。爱的是它简洁流畅,恨的是它在某些高强度、多任务场景下显得力不从心。比如,当你需要在多个…...

开源机械臂技能化控制:从硬件驱动到应用集成的实践指南

1. 项目概述:从开源机械臂到技能控制台最近在机器人控制领域,一个名为esmatcm/openclaw-control-console-skill的项目引起了我的注意。乍一看,这像是一个围绕开源机械臂OpenClaw的控制台技能项目。作为一名长期混迹于硬件开源社区和机器人应用…...

企业信息采集神器:10分钟掌握天眼查企查查双平台爬虫

企业信息采集神器:10分钟掌握天眼查&企查查双平台爬虫 【免费下载链接】company-crawler 天眼查爬虫&企查查爬虫,指定关键字爬取公司信息 项目地址: https://gitcode.com/gh_mirrors/co/company-crawler 还在为获取企业信息而烦恼吗&…...

支持 SSML 标签,让配音精准控制语调与重音

🎯 支持 SSML 标签,让配音精准控制语调与重音在文字转语音(TTS)应用中,机械感的读音往往缺乏情感。 顶伯文字转语音工具全面支持 SSML(语音合成标记语言) 标签,让您通过简单标记精准…...

UI-TARS桌面版:用自然语言控制计算机的智能GUI助手

UI-TARS桌面版:用自然语言控制计算机的智能GUI助手 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desktop …...

告别循环中的Thread.sleep():从IDEA告警到高效定时任务的最佳实践

1. 为什么Thread.sleep()在循环中是个危险信号? 第一次在IDEA里看到"Call to Thread.sleep() in a loop, probably busy-waiting"这个黄色警告时,我和大多数开发者一样不以为然——毕竟这个写法在教科书和早期项目中太常见了。直到有次我们的A…...

ModelScope架构深度解析:大规模AI模型服务化实战指南

ModelScope架构深度解析:大规模AI模型服务化实战指南 【免费下载链接】modelscope ModelScope: bring the notion of Model-as-a-Service to life. 项目地址: https://gitcode.com/GitHub_Trending/mo/modelscope ModelScope作为阿里巴巴开源的模型即服务平台…...

Win11 VMware 报错“未能启动虚拟机”?深入解析 Hyper-V 与注册表冲突的修复指南

1. 为什么Win11下VMware会报错"未能启动虚拟机"? 最近帮朋友调试Win11上的VMware Workstation时,遇到了经典的"未能启动虚拟机"错误。这个报错背后其实是Windows 11的虚拟化安全机制与第三方虚拟化软件的兼容性问题。微软在Windows …...

HPM5361EVK开发板深度体验:480MHz RISC-V MCU实战开发与性能评测

1. 项目概述:从开箱到点亮,一个真实的HPM5361EVK上手体验上次聊了HPM5361EVK开发板的开箱和硬件初印象,很多朋友后台留言,催更实际的上手体验和性能测试。确实,一块开发板好不好,光看参数和做工是远远不够的…...