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,一经查实,立即删除!

相关文章

Angular和React有哪些区别?

Angular和React都是流行的前端JavaScript框架&#xff0c;但它们有一些关键的区别&#xff1a; 1、语言&#xff1a; Angular&#xff1a; 使用TypeScript&#xff0c;这是一种强类型的超集&#xff0c;提供了更多的工具和功能&#xff0c;如静态类型检查和更好的代码编辑器支…

uniapp的touchstart与click

移动端的执行顺序&#xff1a;touchstart->touchmove->touchend->click 需求&#xff1a;点击消息查看详情&#xff0c;长按消息执行删除操作 点击事件正常触发&#xff0c;触摸事件正常触发&#xff0c;不会互相影响 问题&#xff1a;再执行删除操作的时候会连带点…

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 前言 版本控制是现…

小秋SLAM入门实战opencv所有文章汇总

【OpenCV】图像的形态学操作&#xff5c;腐蚀&#xff5c;膨胀&#xff5c;Canny边缘检测 【OpenCV】图像旋转 平移 仿射变换 透视变换 【OpenCV】图像多通道混合、缩放 【OpenCV】图像上画线、文字、椭圆、矩形框 【OpenCV】图像批量重命名 【OpenCV】图像的像素直方图 图像特…

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

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

Process finished with exit code -1073741515 (0xC0000135)

出现“Process finished with exit code -1073741515 (0xC0000135)”这样的错误通常意味着你的Python程序在运行时遇到了一个异常&#xff0c;导致程序异常终止。这个错误代码是一个Windows错误代码&#xff0c;表示程序在运行时遇到了一个无法恢复的错误&#xff0c;需要被关闭…

[每周一更]-(第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…

go语言面试一逃逸分析

一、逃逸分析 go语言中也会存在c语言的内存泄漏和指针逃逸&#xff0c;所以go语言采用了逃逸分析来解决这种危险情况。 内存泄漏&#xff1a;如果使用C语言中的malloc动态分配内存&#xff0c;但却使用后忘记释放该内存&#xff0c;那么该内存就会发生泄漏&#xff0c;即原内…

docker -v 和docker --device 有什么区别

1.docker -v 和docker --device的区别 区别在于docker -v是用来挂载宿主机文件系统的目录或文件到容器中&#xff0c;而docker --device是用来添加设备到容器中。 以docker -v /dev/ttyS0:/dev/ttyS0 和docker --device/dev/ttyS0:/dev/ttyS0的区别为例。 这两个命令都是用来将…

直方图与均衡化

直方图 统计图像中相同像素点的数量。 使用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…