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

AI助手帮你轻松做好Imagenet数据集重命名与复制

AI助手帮你轻松做好Imagenet数据集重命名与复制

任务需求

我们对Imagenet数据集进行了水下的退化处理,保存的数据集所有图片的深度图,格式为.npy。但是命名存在一些问题,现有格式为:n02009912_1916.JPEG.npy,需要更改为n02009912_1916.npy,因此尝试用ChatGPT对数据集进行批量处理

要求点

  1. 文件夹形式为一个数据集result,路径为/home/lihuanyu/code/03AdaBins/result/,有train,test和val三个文件夹,每个文件夹又有若干的类别子文件夹,子文件夹是每一个类别的文件,文件的命名格式为如下所示:n02009912_1916.JPEG.npy
  2. 我们需要将所有的文件去掉.JPEG去掉。
  3. 最后将遍历的所有文件按照输入存储形式重新存入/home/lihuanyu/code/03AdaBins/result2中,result2下也是有train,test和val三个文件夹,每个文件夹又有若干的类别子文件夹,子文件夹是每一个类别的文件。
  4. 以python语言形式呈现。
  5. 注意我们是将原文件复制移动到新的文件夹,只是更改名字。
  6. 需要打印处理流程:处理到那张图片和处理完成的标志。

代码实现

这段代码实现了对原始文件夹下所有图片进行重命名并复制到新的文件夹中的功能,并且能够打印出每张图片的处理进度。

首先,外层的for循环遍历了三个模式(train、test、val),对应着三个文件夹。然后,通过os.path.join()函数将模式和根路径拼接得到该模式下的图片路径img_mode_path和新文件夹路径processed_mode_path,用于后续的操作。接着,内层的for循环遍历了该模式下所有类别的文件夹,并通过os.path.join()函数将类别名和图片路径拼接得到该类别下的图片路径img_class_path和新文件夹路径processed_class_path,同时判断新文件夹是否存在,如果不存在则创建。最后,for循环内部又嵌套了一个for循环,并通过os.listdir()函数遍历该类别下的所有图片文件,并通过os.path.join()函数将图片名和图片路径拼接得到该图片的绝对路径img_path。接着,判断该图片名是否包含.JPEG,如果是,则通过str.replace()函数将.JPEG去掉得到新的图片名new_img_name,再通过os.path.join()函数将新的图片名和新的文件夹路径拼接得到新的图片路径new_img_path,最后通过shutil.copy()函数将原图片复制到新的文件夹中,并更改文件名为去掉.JPEG的新文件名new_img_name,并打印出相应的处理进度。如果该图片名不包含.JPEG,则直接跳过,不进行任何操作。

每处理完一类别下所有图片,就会打印出“Finished processing all images in 类别路径”这样的提示语,表示该类别下所有图片处理完成。当处理完一个模式下的所有类别时,就会打印出“Processed all images in 模式 mode”这样的提示语,表示该模式下所有图片处理完成。最后,当处理完所有三个模式下的所有图片时,就会打印出“All done!”这样的提示语,表示整个程序运行完毕。

import os  
import shutil  
  
# 原始数据集路径  
img_data_root = "/home/lihuanyu/code/03AdaBins/result/"  
  
# 更改后的文件夹路径  
img_processed_root = "/home/lihuanyu/code/03AdaBins/result2/"  
  
# 遍历原始数据集所有图片  
for mode in ['train', 'test', 'val']:  
    img_mode_path = os.path.join(img_data_root, mode)  
    processed_mode_path = os.path.join(img_processed_root, mode)  
    for class_name in os.listdir(img_mode_path):  
        # 每个类别的文件路径  
        img_class_path = os.path.join(img_mode_path, class_name)  
        processed_class_path = os.path.join(processed_mode_path, class_name)  
        # 如果新文件夹不存在则创建  
        if not os.path.exists(processed_class_path):  
            os.makedirs(processed_class_path)  
        # 遍历该类别下所有的图片  
        for img_name in os.listdir(img_class_path):  
            # 图片的绝对路径  
            img_path = os.path.join(img_class_path, img_name)  
            # 如果图片名中包含.JPEG,则重命名为去掉.JPEG的文件名  
            if ".JPEG" in img_name:  
                new_img_name = img_name.replace(".JPEG", "")  
                new_img_path = os.path.join(processed_class_path, new_img_name)  
                shutil.copy(img_path, new_img_path)  
                print("Copying image {} and renaming to {}...".format(img_path, new_img_path))  
            # 如果图片名中包含.npy,则直接复制到新文件夹中  
            else:  
                pass  
        print("Finished processing all images in {}!".format(processed_class_path))  
    print("Processed all images in {} mode!".format(mode))  
print("All done!")

结果呈现

在这里插入图片描述


http://www.kler.cn/a/9429.html

相关文章:

  • [ Linux 命令基础 3 ] Linux 命令详解-文件和目录管理命令
  • 力扣每日一题 3258. 统计满足 K 约束的子字符串数量 I
  • Lodash的常用方法整理
  • SpringBoot整合Freemarker(三)
  • 移远通信亮相骁龙AI PC生态科技日,以领先的5G及Wi-Fi产品革新PC用户体验
  • JavaScript 正则表达式详解
  • 本明杰富兰克林自律十三条
  • 【NLP入门教程】三、词性标注
  • KNN、SVM、MLP、K-means分类实验
  • chapter-4-数据库语句
  • 一般形式的S曲线公式推导
  • 项目的总结
  • OpenCV基础之边缘检测与轮廓描绘
  • VScode 自动格式化配置
  • 【启动图片与控制器大小的关系 Objective-C语言】
  • Vite构建Vue3项目
  • PHP请求商品详情类API接口( 获得淘宝商品详情, 获得淘宝商品详情高级版,获得淘宝商品评论, 获得淘宝商品快递费用
  • 存量市场之下,电商之战深入腹地且逻辑未变
  • 针对近日ChatGPT账号大批量封禁的理性分析
  • 前端测试指南:Vue3 测试工具介绍与使用
  • mysql date/datetime/timestamp and timezone
  • 模拟Redisson获取锁 释放锁 锁续命
  • 软件测试今天你被内卷了吗?
  • 【LeetCode每日一题: 516. 最长回文子序列 | 暴力递归=>记忆化搜索=>动态规划 | 区间dp 】
  • 【华为OD机试】1035 - 判断两个IP是否属于同一子网
  • OpenText Content Server 客户案例——全球最大的商业炸药和创新爆破系统供应商Orica