Iamge2012下载解压后发现训练集有对应1000类及文件,而验证集只有50000张凌乱的图片,听说能用.sh文件自动分类但我也没有找到这个文件,并且.sh是Linux的指令,我的windows是不行滴,索性手写一个分类脚本,别的博主给对应的标签文件大部分过期了,别担心,我带着文件来啦。
复制放在github里的mkdir.txt标签信息,粘贴在新建的一个mkdir.txt
。
代码:(因为路径都用绝对路径,python脚本路径随意,注意代码中只用改变两个注释处的路径即可)
import os
files_name = []
# 这里是打开mkdir.txt的路径
for line in open(r"E:\ILSVRC2012\done\mkdir.txt", "r"):
files_name.append(line[9:18])
# print(files_name[0],files_name[-1])
# print(len(files_name))
for each in files_name:
# 这里是打开要放一千个文件夹的路径
os.makedirs("E://ILSVRC2012//done//after_categories//{}".format(each))
print("make dir done")
对应的标签文件我放在categories.txt里了,点击Download自取
内容有五千行,每行一张图片的Linux移动指令
代码:(python脚本的位置随意,代码中也只用改三个注释处路径的内容即可)
import sys
# import cv2
import matplotlib.pyplot as plt
import re,os
from PIL import Image
import numpy as np
lines = []
# 这个是放categories.txt的路径
for each in open(r"D:\Users\CaiJiyuan\Desktop\categories.txt", "r"):
lines.append((each[3:31],each[32:41]))
# print(len(lines))
for i,item in enumerate(lines):
if i%100==0:
print(i,'done')
#这个是获取原始验证集ILSVRC2012_img_val中每个图像的路径
image = Image.open('E://ILSVRC2012//done//ILSVRC2012_img_val//{}'.format(item[0]))
#这个是上面的代码里放一千个空文件夹的路径
path = 'E://ILSVRC2012//done//after_categories//{}'.format(item[1])
image.save(os.path.join(path, item[0]))
image.close()
验证集里每个文件夹中有五十张图,并且文件夹与训练集一一对应: