GPT编程(1)八分类图像数据集转换为二分类

一个核心问题就是要将这八类数据图片全部重命名,尝试了一步到位

有一个图像数据集,有八个类别'amusement','anger','awe','contentment','disgust',' excitement', 'fear','sadness'的图片,每张图片被命名为“类别+数字”。采用遍历的方式,按顺序阅读每一张图片,将其中‘amusement','anger','awe','contentment’四个类别文件夹的图片重新命名为“positive+n”,这里的n是阅读到的次序,每一张图片都有单独的次序号,并单独放在一个文件夹中;将,'disgust',' excitement', 'fear','sadness'四个类别文件夹的图片重新命名为“negetive+n”,这里的n是阅读到的次序,每一张图片都有单独的次序号,并单独放在文件夹中。用python来实现这个功能,并打印一个进度条来显示进度。

但是读取每一个类别都会重置positive序号,导致出错。所以分为了两步:(1)将八类数据图片放在两个文件夹中,先不改名称;(2)用上面的方法,给所有图片改名称 

1)将八类数据图片放在两个文件夹中,先不改名称;

有一个data文件夹中有八个存放图片的类别文件夹,分别是'amusement','anger','awe','contentment','disgust',' excitement', 'fear','sad',读取这些文件夹中的图片,将'amusement','anger','awe','contentment'这四个文件夹中的图片放进”positive“文件夹中,将'disgust',' excitement', 'fear','sadness'并将文件中的图片这四个文件夹中的图片放进”negetive“文件夹中。用python实现这个功能,并打印一个进度条来显示进度。

import os
from tqdm import tqdm# 定义输入文件夹和输出文件夹的路径
input_folder = 'your_dataset_folder'
output_folder_positive = 'positive_images'
output_folder_negative = 'negative_images'# 创建输出文件夹
os.makedirs(output_folder_positive, exist_ok=True)
os.makedirs(output_folder_negative, exist_ok=True)# 定义类别列表
positive_categories = ['amusement', 'anger', 'awe', 'contentment']
negative_categories = ['disgust', 'excitement', 'fear', 'sadness']# 遍历每个类别文件夹
for category in positive_categories + negative_categories:category_folder = os.path.join(input_folder, category)# 确保类别文件夹存在if os.path.exists(category_folder):# 使用tqdm显示进度条for i, filename in enumerate(tqdm(os.listdir(category_folder), desc=f"Processing {category}")):file_path = os.path.join(category_folder, filename)# 确保是文件而不是文件夹if os.path.isfile(file_path):# 确定输出路径和新文件名if category in positive_categories:output_path = os.path.join(output_folder_positive, f"positive_{i+1}.jpg")else:output_path = os.path.join(output_folder_negative, f"negative_{i+1}.jpg")# 复制文件到新文件夹并重新命名os.rename(file_path, output_path)print("处理完成。")

(2)用上面的方法,给所有图片改名称 

有一个data文件夹中有八个存放图片的类别文件夹,分别是'amusement','anger','awe','contentment','disgust',' excitement', 'fear','sad',读取这些文件夹中的图片,将'amusement','anger','awe','contentment'这四个文件夹中的图片放进”positive“文件夹中,将'disgust',' excitement', 'fear','sadness'并将文件中的图片这四个文件夹中的图片放进”negetive“文件夹中。用python实现这个功能,并打印一个进度条来显示进度。

import os
from tqdm import tqdm
import shutil# 定义输入文件夹和输出文件夹的路径
input_folder = 'data'
output_folder_positive = 'positive'
output_folder_negative = 'negative'# 创建输出文件夹
os.makedirs(output_folder_positive, exist_ok=True)
os.makedirs(output_folder_negative, exist_ok=True)# 定义类别列表
positive_categories = ['amusement', 'anger', 'awe', 'contentment']
negative_categories = ['disgust', 'excitement', 'fear', 'sad']# 遍历每个类别文件夹
for category in positive_categories + negative_categories:category_folder = os.path.join(input_folder, category)# 确保类别文件夹存在if os.path.exists(category_folder):# 使用tqdm显示进度条for filename in tqdm(os.listdir(category_folder), desc=f"Processing {category}"):file_path = os.path.join(category_folder, filename)# 确保是文件而不是文件夹if os.path.isfile(file_path):# 确定输出路径和新文件名if category in positive_categories:output_path = os.path.join(output_folder_positive, filename)else:output_path = os.path.join(output_folder_negative, filename)# 复制文件到新文件夹shutil.copy(file_path, output_path)print("处理完成。")

(3)把上述二分类数据集按照80:15:5划分为训练集,测试集,验证集

有一个图像数据集,有两个类别文件夹'positive',‘negative’,按照80:15:5划分为训练集,测试集,验证集,分别放在“train”,"test","val"文件夹中,在每个文件夹中的从“positive”获得的图片放在'positive'文件夹中,从“negative”获得的图片放在'negative'文件夹中,举例文件夹’train‘的下一级是文件夹“positive”和文件夹“negative”。用python来实现这个功能,并打印一个进度条来显示进度。

import os
import random
from shutil import copyfile
from tqdm import tqdmdef split_and_copy_images(input_folder, output_folder, split_ratios=(0.8, 0.15, 0.05), seed=42):random.seed(seed)# 创建输出文件夹for split in ['train', 'test', 'val']:split_path = os.path.join(output_folder, split)os.makedirs(os.path.join(split_path, 'positive'), exist_ok=True)os.makedirs(os.path.join(split_path, 'negative'), exist_ok=True)# 遍历每个类别的文件夹for category in ['positive', 'negative']:category_path = os.path.join(input_folder, category)image_files = os.listdir(category_path)random.shuffle(image_files)# 划分数据集total_files = len(image_files)train_count = int(total_files * split_ratios[0])test_count = int(total_files * split_ratios[1])# 复制文件到相应的文件夹for i, filename in enumerate(tqdm(image_files, desc=f"Processing {category}")):src_path = os.path.join(category_path, filename)if i < train_count:dst_path = os.path.join(output_folder, 'train', category, f'{category}_{i + 1}.jpg')elif i < train_count + test_count:dst_path = os.path.join(output_folder, 'test', category, f'{category}_{i + 1}.jpg')else:dst_path = os.path.join(output_folder, 'val', category, f'{category}_{i + 1}.jpg')copyfile(src_path, dst_path)# 输入文件夹和输出文件夹路径
input_folder = 'path/to/dataset'
output_folder = 'path/to/split_dataset'# 划分数据集并显示进度条
split_and_copy_images(input_folder, output_folder)
print("数据集划分完成。")

总结,如果思路清晰,有些脚本用ChatGPT来写还是非常方便的。

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

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

相关文章

Go语言学习第二天

Go语言数组详解 var 数组变量名 [元素数量]Type 数组变量名&#xff1a;数组声明及使用时的变量名。 元素数量&#xff1a;数组的元素数量&#xff0c;可以是一个表达式&#xff0c;但最终通过编译期计算的结果必须是整型数值&#xff0c;元素数量不能含有到运行时才能确认大小…

阿里云2核2G3M服务器放几个网站?

阿里云2核2g3m服务器可以放几个网站&#xff1f;12个网站&#xff0c;阿里云服务器网的2核2G服务器上安装了12个网站&#xff0c;甚至还可以更多&#xff0c;具体放几个网站取决于网站的访客数量&#xff0c;像阿里云服务器网aliyunfuwuqi.com小编的网站日访问量都很少&#xf…

java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ 可定制化

工程项目管理软件是现代项目管理中不可或缺的工具&#xff0c;它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件&#xff0c;该软件采用先进的Vue、Uniapp、Layui等技术框架&#xff0c;涵盖了项目策划决策、规划设计、施工建设到竣工交付…

springboot整合hadoop遇错

错误一&#xff1a; Caused by: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. 解决&#xff1a; 下载&#xff1a;https://github.com/steveloughran/winutils 选择一个版本 例如&#xff1a;3.0.0 &#xff0c;将里面的hadoop.dll文件复制…

在IntelliJ IDEA中精通Git配置与使用:全面指南

目录 1 前言2 idea中使用git的准备2.1 在 IntelliJ IDEA 中配置 Git2.2 配置 Git 忽略文件 3 在IntelliJ IDEA中使用Git的基本步骤3.1 项目导入到 Git3.2 查看与切换版本信息 4 在 IntelliJ IDEA 中使用分支4.1 创建分支4.2 无冲突合并4.3 冲突合并 5 结语 1 前言 版本控制是现…

Linux(ubuntu)下git / github/gitee使用

先附上git命令 linuxchenxiao:~$ cd Templates/ 先进入一个目录&#xff0c;也可mkdir新建一个目录&#xff1a;用于接下来初始化为git可以管理的仓库 这个目录就是所说的工作目录&#xff0c;指当前正在进行开发的项目的本地目录。 linuxchenxiao:~/Templates$ git init 已…

[每周一更]-(第79期):Apache代理的配置

反向代理逻辑类似Nginx&#xff0c;以下具体展示属于apache的配置和参数说明 局部代理配置方式&#xff1a; # 配置包含https的需要打开 SSLProxyEngine on ProxyPass /api/small https://api.web.com/version1/small/ ProxyPassReverse /api/small https://api.web.com/versio…

直方图与均衡化

直方图 统计图像中相同像素点的数量。 使用cv2.calcHist(images, channels, mask, histSize, ranges)函数 images&#xff1a;原图像图像格式为uint8或float32&#xff0c;当传入函数时应用[]括起来&#xff0c;例如[img]。 channels&#xff1a;同样用中括号括起来&#xff…

如何确保云中高可用?聊聊F5分布式云DNS负载均衡

在当今以应用为中心的动态化市场中&#xff0c;企业面临着越来越大的压力&#xff0c;不仅需要提供客户所期望的信息、服务和体验&#xff0c;而且要做到快速、可靠和安全。DNS是网络基础设施的重要组成部分&#xff0c;拥有一个可用的、智能的、安全和可扩展的DNS基础设施是至…

工程(十六)——自己数据集跑Fast_livo

一、基础环境 Ubuntu20.04 ROS noetic PCL 1.8 Eigen 3.3.4 Sophus git clone https://github.com/strasdat/Sophus.git cd Sophus git checkout a621ff mkdir build && cd build && cmake .. make sudo make install 下面两个直接把包下载下来一起编译…

2023-12-29 服务器开发-Centos部署LNMP环境

摘要: 2023-12-29 服务器开发-Centos部署LNMP环境 centos7.2搭建LNMP具体步骤 1.配置防火墙 CentOS 7.0以上的系统默认使用的是firewall作为防火墙&#xff0c; 关闭firewall&#xff1a; systemctl stop firewalld.service #停止firewall systemctl disable fire…

Windows上ModbusTCP模拟Master与Slave工具的使用

场景 Modbus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用&#xff1a; Modebus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用_modbus poll激活-CSDN博客 数据对接协议为Modbus TCP,本地开发需要使…

C语言编程入门 – 编写第一个Hello, world程序

C语言编程入门 – 编写第一个Hello, world程序 C Programming Entry - Write the first application called “Hello, world!” By JacksonML C语言编程很容易&#xff01; 本文开始&#xff0c;将带领你走过C语言编程之旅&#xff0c;通过实例使你对她颇感兴趣&#xff0c;一…

GLTF编辑器实现逼真的石门模型

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在凹凸贴图中&#xff0c;每个像素点都包含了一个法线向量&#xff0…

楼宇对讲门铃选型分析

目前很多的高层住宅都使用了对讲门铃了&#xff0c;在频繁使用中&#xff0c;门铃会出现的越来越多种类&#xff0c;下面我就简单的介绍会有用到的几款芯片. 语音通话芯片&#xff1a;D34018,D34118,D5020,D31101; D34018 单片电话机通话电路&#xff0c;合并了必 需的放大器…

Nature | 大型语言模型(LLM)能够发现和产生新知识吗?

大型语言模型&#xff08;LLM&#xff09;是基于大量数据进行预训练的超大型深度学习模型。底层转换器是一组神经网络&#xff0c;这些神经网络由具有自注意力功能的编码器和解码器组成。编码器和解码器从一系列文本中提取含义&#xff0c;并理解其中的单词和短语之间的关系。通…

GPT-3: Language Models are Few-Shot Learners

GPT-3 论文 数据集 CommonCrawl&#xff1a;文章通过高质量参考语料库对CommonCrawl数据集进行了过滤&#xff0c;并通过模糊去重对文档进行去重&#xff0c;且增加了高质量参考语料库以增加文本的多样性。WebText&#xff1a;文章采用了类似GPT-2中的WebText文档收集清洗方…

BUG-由浏览器缩放引起PC端显示手机端视图

文章目录 来源解决 来源 启动Vue项目&#xff0c;用浏览器打开显示手机端视图&#xff0c;从vscode直接ctrl链接打开正常显示。 检查-未开启仿真&#xff0c;但仍显示错误。 解决 浏览器缩放问题。 修改为100%

javascript实现数据双向绑定

ES5中的双向绑定 ES5中的对象属性类型有两种&#xff1a;分别是数据属性和访问器属性 一&#xff0c;数据属性 数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有4个描述其行为的特性 1&#xff0c;configurable:表示能否通过delete删除属性而重新定义…

【机器学习前置知识】Beta分布

Beta分布与二项分布的关系 Beta分布与二项分布密切相关,由二项分布扩展而来,它是用来描述一个连续型随机变量出现的概率的概率密度分布,表示为 X X X~ B e t a ( a , b ) Beta(a,b) Beta(a,b) , a 、 b a、b a、b 是形状参数。Beta分布本质上也是一个概率密度函数,只是这…