最新可行 ImageNet2012的验证集val数据分为1000类 及对应txt标签文件

Iamge2012下载解压后发现训练集有对应1000类及文件,而验证集只有50000张凌乱的图片,听说能用.sh文件自动分类但我也没有找到这个文件,并且.sh是Linux的指令,我的windows是不行滴,索性手写一个分类脚本,别的博主给对应的标签文件大部分过期了,别担心,我带着文件来啦。

1.创建1000个对应训练集空文件夹

复制放在github里的mkdir.txt标签信息,粘贴在新建的一个mkdir.txt
最新可行 ImageNet2012的验证集val数据分为1000类 及对应txt标签文件_第1张图片
代码:(因为路径都用绝对路径,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")

完成后就得到了一千个对应训练集的空文件夹
最新可行 ImageNet2012的验证集val数据分为1000类 及对应txt标签文件_第2张图片

2.把五千张验证图分别放入文件夹

对应的标签文件我放在categories.txt里了,点击Download自取
最新可行 ImageNet2012的验证集val数据分为1000类 及对应txt标签文件_第3张图片
内容有五千行,每行一张图片的Linux移动指令
最新可行 ImageNet2012的验证集val数据分为1000类 及对应txt标签文件_第4张图片
代码:(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()

大概40分钟以后慢慢跑完了
最新可行 ImageNet2012的验证集val数据分为1000类 及对应txt标签文件_第5张图片

验证集里每个文件夹中有五十张图,并且文件夹与训练集一一对应:

最新可行 ImageNet2012的验证集val数据分为1000类 及对应txt标签文件_第6张图片

你可能感兴趣的:(python,开发语言)