ILSVRC2012数据集处理

ILSVRC2012数据集处理

  • 解压图像
  • 处理标签和图像

解压图像

先解压

tar -xvf ILSVRC2012_img_train.tar 

在这里插入图片描述

解压之后其实还是1000个tar压缩包(对应1000个类别),需要再次解压,解压脚本unzip.sh如下(PS:可能需要自己改一下目录 dir ):
(这里也可以用解压软件一键解压)
批量解压脚本

dir=./train 
for x in `ls $dir/*tar` do     filename=`basename $x .tar`     mkdir $dir/$filename     tar -xvf $x -C $dir/$filename 
done 
rm *.tar

执行 sh 脚本

chmod 777 unzip.sh
./ unzip.sh

报错:./unzip.sh: line 3: syntax error near unexpected token filename=basename $x .tar`’

直接使用指令ls *.tar | xargs -n1 tar xvf

将当前文件夹下的tar解压linux批量解压方法

或者:

python批量解压zip文件

import os
import shutil
import zipfile# 首先引入需要的工具包
# shutil为后期移动文件所需,可以忽略此项 
# 路径改这里!
#parent_path = r'输入路径,会解压该路径下的所有zip压缩文件'
parent_path = r'E:\py\python3.7\test\test99\zip' 
# 文件类型选择
# 可以自行更改压缩文件类型,需要引入其它工具包,如tarfile等
# 这里是因为在自己的windows上,zip比较常见,其他类型请自行更改
file_flag = '.zip'   #修改需解压的格式 例如:.rar
# 删除已解压的zip文件
# 不建议初次使用,在确定程序无误后可以添加使用
def del_old_zip(file_path):os.remove(file_path)  
# 解压
def decompress(file_path, root):# 开始# zipfile打开zip文件z = zipfile.ZipFile(f'{file_path}', 'r') # 解压z.extractall(path=f"{root}")    # path为解压路径,解包后位于该路径下 # 判断是否需要重复解包for names in z.namelist():if names.endswith(file_flag):z.close()return 1 # 结束z.close() return 0# 因为我在使用过程中发现有些zip解包后会混在一起
# 在平时大家手动解压时可能也会遇到提示是否覆盖的问题
# 下面的两个函数解决这一问题 
# 开始要先创建一个大文件夹  与压缩包名字相同
# 避免后期混乱和麻烦
def start_dir_make(root, dirname):os.chdir(root)os.mkdir(dirname)return os.path.join(root, dirname) 
# 去除多余文件夹
def rem_dir_extra(root, father_dir_name):# 递归要注意信息的正常处理  搞不好上一个调用已经改变了东西  而下面的调用还是使用之前的数据 try: # 判断文件夹重名  开始for item in os.listdir(os.path.join(root, father_dir_name)): # 第一步判断是不是一个文件夹,如果不是则跳过本次循环if not os.path.isdir(os.path.join(root, father_dir_name, item)):continue # 判断是否要脱掉一层目录结构# 文件夹名字要相同,且子目录中只有单独的一个文件夹if item == father_dir_name and len(os.listdir(os.path.join(root, father_dir_name))) == 1: # 改变工作目录os.chdir(root)                 # 将无用文件夹重命名,因为直接移动会有重名错误os.rename(father_dir_name, father_dir_name + '-old')                 # 移动文件后删除空文件夹shutil.move(os.path.join(root, father_dir_name + '-old', item), os.path.join(root))os.rmdir(os.path.join(root, father_dir_name + '-old')) # 将去掉一层目录结构后的文件夹继续作为父本递归处理下去# 这里要注意,上面已经发生过数据的改动,所以下面递归传参一定要正确!rem_dir_extra(root, item) else: # 处理那些不满足上面条件的文件夹rem_dir_extra(os.path.join(root, father_dir_name), item) except Exception as e: # 打印错误信息print("清除文件夹出错" + str(e)) 
# 入口
if __name__ == '__main__': flag = 1 while flag: #  循环遍历文件夹for root, dirs, files in os.walk(parent_path): # 读取文件名for name in files:if name.endswith(file_flag): # 创建文件夹new_ws = start_dir_make(root, name.replace(file_flag, '')) # zip文件地址zip_path = os.path.join(root, name) # 解压flag = decompress(zip_path, new_ws) # 删除解压后的文件# 有点危险# 但不删除又可能会重复运行# 一定要备份或先测试,不然可能会凉,自己选择修改del_old_zip(zip_path) # 去掉多余的文件结构rem_dir_extra(root, name.replace(file_flag, '')) print(f'{root}\\{name}'.join(['文件:', '\n解压完成\n']))# 由于解压可能解了好几次 所以可能会有已经解压好的父级目录重名无法处理 这里要再处理一次rem_dir_extra(os.path.split(parent_path)[0], os.path.split(parent_path)[1])  print("解压完成啦,记得检查有没有zip格式之外的呀!\n\n其他格式需要自己改一下了")

查看文件夹下文件数量

ls -l|grep "^-" |wc -l

统计文件名中包含某个名称(n15075141_)的文件的文件总数

find -name "n15075141_*" | wc -l

在这里插入图片描述


这里我使用这官方提供的脚本文件

#!/bin/bash
#
# script to extract ImageNet dataset
# ILSVRC2012_img_train.tar (about 138 GB)
# ILSVRC2012_img_val.tar (about 6.3 GB)
# make sure ILSVRC2012_img_train.tar & ILSVRC2012_img_val.tar in your current directory
#
#  Adapted from:
#  https://github.com/facebook/fb.resnet.torch/blob/master/INSTALL.md
#  https://gist.github.com/BIGBALLON/8a71d225eff18d88e469e6ea9b39cef4
# 
#  imagenet/train/
#  ├── n01440764
#  │   ├── n01440764_10026.JPEG
#  │   ├── n01440764_10027.JPEG
#  │   ├── ......
#  ├── ......
#  imagenet/val/
#  ├── n01440764
#  │   ├── ILSVRC2012_val_00000293.JPEG
#  │   ├── ILSVRC2012_val_00002138.JPEG
#  │   ├── ......
#  ├── ......
#
#
# Make imagnet directory
#
mkdir imagenet
#
# Extract the training data:
#
# Create train directory; move .tar file; change directory
mkdir imagenet/train && mv ILSVRC2012_img_train.tar imagenet/train/ && cd imagenet/train
# Extract training set; remove compressed file
tar -xvf ILSVRC2012_img_train.tar && rm -f ILSVRC2012_img_train.tar
#
# At this stage imagenet/train will contain 1000 compressed .tar files, one for each category
#
# For each .tar file: 
#   1. create directory with same name as .tar file
#   2. extract and copy contents of .tar file into directory
#   3. remove .tar file
find . -name "*.tar" | while read NAME ; do mkdir -p "${NAME%.tar}"; tar -xvf "${NAME}" -C "${NAME%.tar}"; rm -f "${NAME}"; done
#
# This results in a training directory like so:
#
#  imagenet/train/
#  ├── n01440764
#  │   ├── n01440764_10026.JPEG
#  │   ├── n01440764_10027.JPEG
#  │   ├── ......
#  ├── ......
#
# Change back to original directory
cd ../..
#
# Extract the validation data and move images to subfolders:
#
# Create validation directory; move .tar file; change directory; extract validation .tar; remove compressed file
mkdir imagenet/val && mv ILSVRC2012_img_val.tar imagenet/val/ && cd imagenet/val && tar -xvf ILSVRC2012_img_val.tar && rm -f ILSVRC2012_img_val.tar
# get script from soumith and run; this script creates all class directories and moves images into corresponding directories
wget -qO- https://raw.githubusercontent.com/soumith/imagenetloader.torch/master/valprep.sh | bash
#
# This results in a validation directory like so:
#
#  imagenet/val/
#  ├── n01440764
#  │   ├── ILSVRC2012_val_00000293.JPEG
#  │   ├── ILSVRC2012_val_00002138.JPEG
#  │   ├── ......
#  ├── ......
#
#
# Check total files after extract
#
#  $ find train/ -name "*.JPEG" | wc -l
#  1281167
#  $ find val/ -name "*.JPEG" | wc -l
#  50000
#

参考文章

具体类别如下1000类信息

处理标签和图像

因为标签很少,图像较多,只有部分图像有标签对应,所以需要删除多余的图像。

数据集目录结构如下

数据集介绍
数据集介绍

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

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

相关文章

智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.教与学算法4.实验参数设定5.算法结果6.参考文献7.…

8.vue3项目(八):平台属性管理页面的增删改查

目录​​​​​​​ 一、平台属性管理静态搭建 二、封装接口以及入参出参 三、页面刚加载一级分类的收集与展示</

深度学习【二】

1.运行时错误 1.1 ModuleNotFoundError: No module named ‘torch_scatter’ 参考 https://blog.csdn.net/weixin_42421914/article/details/132875571 pip install --no-index torch-scatter -f https://pytorch-geometric.com/whl/torch-1.13.1%2Bcpu.html

Day49:647. 回文子串、516.最长回文子序列

文章目录 647. 回文子串思路代码实现 516.最长回文子序列思路代码实现 647. 回文子串 题目链接 思路 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 布尔类型的dp[i][j]&#xff1a;表示区间范围[i,j] &#xff08;注意是左闭右闭&#xff09;的子串是否是回文…

亚马逊策略:通过影响者营销改造您的亚马逊商店

亚马逊卖家面临着从人群中脱颖而出的持续挑战 - 如果您是那些寻求变革性方法来接触目标受众、建立信任并将您的销售推向新高度的卖家之一&#xff0c;那么影响力营销就是您的答案。 您可能遇到过令人难以置信的成功故事&#xff0c;产品一夜之间流行起来&#xff0c;仅仅是因为…

java数据转换为stream的方法

要将数据转换为Java中的Stream&#xff0c;有几种常见的方法&#xff0c;具体取决于数据类型和数据来源。 集合&#xff08;Collection&#xff09;&#xff1a;集合对象&#xff0c;比如List、Set或者数组&#xff0c;可以使用stream()方法将其转换为Stream。 List<Strin…

集群 CPU 利用率均值达 45% ,揭秘小红书规模化混部技术实践

根据 Gartner 预测数据显示&#xff1a;2024 年全球 IT 支出预计将达到 5.1 万亿美元&#xff0c;比 2023 年增长 8 %。然而&#xff0c;该机构的另一项调查数据显示&#xff1a;全球数据中心服务器平均 CPU 利用率普遍低于 20%&#xff0c;存在巨大的资源浪费。据测算&#xf…

“全球金牌课程”1 月 13-14 日 · CSM 认证在线面授周末班【模块化教学】CST 导师亲授

课堂互动练习 CSM 认证在线培训&#xff08;周末班&#xff09; 2024 年 1 月 13-14 日 Zoom 在线面授&#xff0c;全国招生 讲师: Jim Wang 王军 10 年以上 CSM/CSPO 认证课程教学交付经验&#xff0c; 5 年以上 A-CSM/CSP-SM 认证课程教学交付经验&#xff0c; 国际 Scr…

AI 绘画 | Stable Diffusion 人物 换背景|换服装

前言 想要给固定人物换背景或者换服装,需要用到一个Stable Diffusion扩展插件,就是sd-webui-segment-anything。 sd-webui-segment-anything 不仅可以做到抠图的效果,也能实现之多蒙版的效果。什么是蒙版 图片蒙版是一种用于调节图像修改程度以及进行局部调整的工具。它通常…

面试必问的排序算法

欢迎大家到我的博客浏览。排序算法 | YinKais Blog 介绍 在面试中被问到排序算法&#xff0c;发现不能很好的描述出来&#xff0c;于是写一篇文章总结一下。常见的排序算法有 冒泡排序、插入排序、快速排序、归并排序、堆排序等。下面一一介绍。 1、冒泡排序 O(n^2) 算法思想…

村村通工程(Prim算法)/最小生成树Prim算法【数据结构】

村村通工程&#xff08;Prim算法&#xff09; 题目描述 "村村通"是国家一个系统工程&#xff0c;其包涵有&#xff1a;公路、电力、生活和饮用水、电话网、有线电视网、互联网等等。 村村通公路工程&#xff0c;是国家为构建和谐社会&#xff0c;支持新农村建设的…

Linux sed命令

目录 一. 去除单个指定文本的换行符二. 去除多个指定文本的换行符三. 抽取出指定数据3.1 分别抽取SPLREQUEST和SPLEND的数据3.2 通过join命令将文件合并3.3 抽取出指定的数据3.4 去除换行符&#xff0c;整合数据为一行 一. 去除单个指定文本的换行符 &#x1f449; info.txt …

CSS新手入门笔记整理:CSS字体样式

字体类型&#xff1a;font-family 语法 font-family&#xff1a;字体1,字体2,...,字体n; font-family可以指定多种字体。使用多个字体时&#xff0c;将按从左到右的顺序排列&#xff0c;并且以英文逗号&#xff08;,&#xff09;隔开。如果我们不定义font-family&#xff0c…

Apache Airflow (十四) :Airflow分布式集群搭建及测试

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…

虚拟化场景时间管理

在云主机环境涉及到时间处理&#xff0c;虚拟机vmexit&#xff0c;内部时间中断模拟处理&#xff0c;电路板通常有一些定时操作设备&#xff0c;hyperson里如何实现&#xff0c;怎么保证时间可靠&#xff1f; 代码&#xff1a;qemu-5.0 1、qemu时钟&#xff08;time.h&#xff…

【C++】探索C++模板编程

文章目录 什么是C模板&#xff1f;模板的基本语法类型模板参数模板函数的示例类模板的示例总结 C模板是一种强大的编程工具&#xff0c;它可以实现泛型编程&#xff0c;使代码更加灵活和可重用。本篇博客将介绍C模板的基本语法、类型模板参数和模板函数的使用&#xff0c;并通过…

MaaS/PaaS/SaaS

生成式AI时代的AI Infra—从DevOps->MLOps->LLMOps - 知乎距离上次讲LLM相关的内容已经过去2个月了 LLM as Controller—无限拓展LLM的能力边界&#xff0c;本文想要从AI Infra的角度出发&#xff0c;从更宏观的角度看Generative AI对AI Infra生态产生的变化&#xff0c;…

Web前端开发技术:图像与多媒体文件

在现代的Web开发中&#xff0c;图像和多媒体文件在各种网站和应用程序中扮演着至关重要的角色。它们不仅能提供更丰富的内容&#xff0c;还能大大提高应用程序的吸引力和用户体验。本文将深入介绍一些关键的Web前端开发技术&#xff0c;这些技术将有助于开发者在处理图像和多媒…

前馈式神经网络与反馈式神经网络的区别,联系,各自的应用范围和场景!!!

文章目录 前言一、前馈式神经网络是什么&#xff1f;二、前馈式神经网络包括&#xff1a;三、反馈式神经网络是什么&#xff1f;四、反馈式神经网络包括&#xff1a;总结 前言 前馈式神经网络和反馈式神经网络是两种主要的神经网络架构&#xff0c;它们在网络结构和应用场景上…

Python---引用变量与可变、非可变类型

引用变量 在大多数编程语言中&#xff0c;值的传递通常可以分为两种形式“ 值 传递 与 引用 传递”&#xff0c;但是在Python中变量的传递基本上都是引用传递。 变量在内存底层的存储形式 a 10 第一步&#xff1a;首先在计算机内存中创建一个数值10&#xff08;占用一块…