深度学习(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文件夹下存放文件,没有任何子文件夹

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

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

相关文章

c语言学习,malloc()函数分析

1:malloc() 函数说明: 申请配置size大小内存空间 2:函数原型: void *malloc(size_t size) 3:函数参数: 参数size,为申请内存大小 4:返回值: 配置成功则返回指针&#…

Nginx实验

编译安装 Nginx 准备rhel9环境 下载安装包nginx-1.24.0(xftp)/复制下载链接 (nginx.org——>download) 解压 [rootnginx nginx-1.24.0]# tar zxf nginx-1.24.0.tar.gz [rootnginx nginx-1.24.0]#tar zxf nginx-1.24.0.tar.…

[掘金社区]自动签到脚本

直接上脚本 脚本临时写的,今天是运行的第一天,虽然报错编码,但是签到、抽奖都成功了。 下面是修改了之后的版本。 # -*- coding: utf-8 -*- import requests import logginglogging.basicConfig(levellogging.INFO)def check_sign_in_status(base_url,h…

Clobbering DOM attributes to bypass HTML filters

目录 寻找注入点 代码分析 payload构造 注入结果 寻找注入点 DOM破坏肯定是出现在js文件中,我们首先来看源码 /resources/labheader/js/labHeader.js这个源码没什么问题我们重点关注在下面两个源码上 /resources/js/loadCommentsWithHtmlJanitor.js这个源码中重…

STM32cubeMX配置Systick的bug

STM32cubeMX版本:6.11.0 现象 STM32cubeMX配置Systick的时钟,不管选择不分频 还是8分频。 生成的代码都是一样的,代码都是不分频。 即不管选择不分频还是8分频,Systick都是使用的系统时钟 函数调用 HAL_Init() → HAL_Init…

HarmonyOS开发案例:列表场景实例-TaskPool

介绍 本实例通过列表场景实例讲解,介绍在TaskPool线程中操作关系型数据库的方法,涵盖单条插入、批量插入、删除和查询操作。 效果图预览 使用说明 进入页面有insert(单条数据插入)、batch insert(批量数据插入)、query(查询操作)三个按钮,…

【安卓】播放多媒体文件

文章目录 播放音频播放视频 播放音频 在Android中播放音频文件一般是使用MediaPlayer类实现的,它对多种格式的音频文件提供了非常全面的控制方法,从而使播放音乐的工作变得十分简单。 MediaPlayer类中常用的控制方法。 常用方法名描述setDataSource()设…

使用html+css+js实现完整的登录注册页面

在这篇博客中,我们将讨论如何使用简单的 HTML 和 CSS 构建一个登录与注册页面。这个页面包含两个主要部分:登录界面和注册界面。我们还会展示如何通过 JavaScript 切换这两个部分的显示状态。 页面结构 我们将创建一个页面,其中包含两个主要…

CSS3-新特性

1.新增选择器 1.属性选择器 2.结构伪类选择器 3.伪元素选择器(重点) 4.CSS3 盒子模型 2.CSS3滤镜filter 3.CSS3 calc 函数 4.CSS3 过渡(重点)

95后医疗行业女性转型记:如何成功踏入人工智能项目管理领域

分享目录 一、自我介绍,给大家分享一下拿到offer的心情吧 二、在整个求职转型陪跑营里,你收获最大的三个点是什么? 三、求职转行过程中,你遇到了哪些困难?七芊老师和强哥是怎么帮助你的?你是怎么走过来的…

seata的使用(SpringBoot项目整合seata)

文章目录 1、解压 seata-server-1.7.1.zip2、启动 双击 seata-server.bat3、启动 seata 控制台用户界面4、所有分布式事务相关数据库要有undo-log5、项目引入seata依赖6、项目添加seata配置7、代码实现: 1、解压 seata-server-1.7.1.zip 2、启动 双击 seata-server.…

Polars简明基础教程十二:可视化(二)

设置绘图后端 我们可以使用 hv.extension 更改绘图后端。但是,我们不在此处运行此单元格,因为它会导致下面的 Matplotlib/Seaborn 图表无法渲染。 注释: hvPlot 利用 HoloViews 库来构建图表,并且可以使用多个后端进行渲染&…

微信小程序骨架屏

骨架屏是常用的一种优化方案,针对于页面还未加载完时给用户的一种反馈方式。如果自己要写骨架屏有点复杂因为页面的元素过多且不稳定,这边直接使用微信开发工具生成骨架屏。也不只有微信开发工具有像常用的抖音开发工具,字节开发工具都有对应…

使用MicroApp重构旧项目

前言 随着技术的飞速发展,我们公司内部一个基于“上古神器” jQuery PHP 构建的十年历史老项目已显力不从心,技术非常老旧且维护成本高昂,其实已经无数次想要重构,但是苦于历史遗留原因以及业务的稳定性而一直难以下手&#xff0…

Tomcat的核心文件讲解

参考视频&#xff1a;对应视频 server.xml中的以下部分可修改&#xff1a; 1.connector标签里的port可以修改。--修改端口号 Tomcat默认端口号&#xff1a;8080 <Connector connectionTimeout"20000" maxParameterCount"1000"port"8080" prot…

调研-音视频

音视频 基础概念主要内容音频基础概念音频量化过程音频压缩技术视频基础概念视频bug视频编码H264视频像素格式YUVRGB参考文献基础概念 ● 实时音视频应用环节 ○ 采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。 主要内容 音频 基础概念 三要素:音调(音频)、…

算法的学习笔记—链表中倒数第 K 个结点(牛客JZ22)

&#x1f600;前言 在编程过程中&#xff0c;链表是一种常见的数据结构&#xff0c;它能够高效地进行插入和删除操作。然而&#xff0c;遍历链表并找到特定节点是一个典型的挑战&#xff0c;尤其是当我们需要找到链表中倒数第 K 个节点时。本文将详细介绍如何使用双指针技术来解…

8.16 day bug

bug1 题目没看仔细 额外知识 在 Bash shell 中&#xff0c;! 符号用于历史扩展功能。当你在命令行中输入 ! 后跟一些文本时&#xff0c;Bash 会尝试从你的命令历史中查找与该文本相匹配的命令。这是一种快速重用之前执行过的命令的方法。 如何使用历史扩展 基本用法: !strin…

利用亚马逊云科技Bedrock和LangChain开发AI驱动数据分析平台

项目简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何在亚马逊云科技上SageMak…

一次现网redis CPU使用率异常定位

背景 618大促前&#xff0c;运维对系统做巡检时发现redis cpu利用率白天基本保持在72%左右&#xff0c;夜里也在60%以上。担心618流量比平时大&#xff0c;导致redis超负荷&#xff0c;因此找开发进行优化&#xff0c;降低redis的负载。 定位思路 其实资源使用率过高定位都…