用自己的数据集制作类似于Cifar-10格式的数据集

                                                     前言:

    Cifar-10数据集的制作是基于python2.7来写的,以下是修改后的基于python3的版本的Code。

 

1.数据集制作代码:

from PIL import Image
import os
import numpy as np
import pickle

data = {}
list1 = []
list2 = []
list3 = []

def img_tra():
    for k in range(0,num):
        currentpath = folder + '/' + imglist[k]
        im = Image.open(currentpath)

        x_s = 32
        y_s = 32

        out = im.resize((x_s,y_s),Image.ANTIALIAS)
        out.save(folder_ad + '/' + str(imglist[k]))

def seplabel(fname):
    filestr = fname.split('.')[0]
    label = int(filestr.split('_')[0])
    return label

def mkcf():
    global data
    global list1
    global list2
    global list3

    for k in range(0,num):
        currentpath = folder_ad + '/' + imglist[k]
        im = Image.open(currentpath)

        with open(binpath,'a') as f:
            for i in range(0,32):
                for j in range(0,32):
                    c1 = im.getpixel((i,j))
                    list1.append(c1[0])

            for i in range(0,32):
                for j in range(0,32):
                    c1 = im.getpixel((i,j))
                    list1.append(c1[1])

            for i in range(0,32):
                for j in range(0,32):
                    c1 = im.getpixel((i,j))
                    list1.append(c1[2])

        list2.append(list1)
        list1 = []
        f.close()
        print('image' + str(k+1) + 'saved.')
        list3.append(imglist[k].encode('utf-8'))

    arr2 = np.array(list2,dtype=np.uint8)
    data['batch_label'.encode('utf-8')] = 'testing batch 1 of 1'.encode('utf-8')
    data.setdefault('labels'.encode('utf-8'),label)
    data.setdefault('data'.encode('utf-8'),arr2)
    data.setdefault('filenames'.encode('utf-8'),list3)

    output = open(binpath,'wb')
    pickle.dump(data,output)
    output.close()

folder = "C:/Users/tianr/Desktop/breastImg/benign"
folder_ad = 'C:/Users/tianr/Desktop/breastImg/test_rs'
imglist =os.listdir(folder)
num = len(imglist)
img_tra()
label = []
for i in range( 0,num):
    label.append(seplabel(imglist[i]))
#print(label)
binpath = 'C:/Users/tianr/Desktop/breastImg/data_batch_1'
#print(binpath)

mkcf()

2.运行上述代码,生成文件如下所示:

用自己的数据集制作类似于Cifar-10格式的数据集_第1张图片

3.生成的data_batch_1文件包含的内容:

用自己的数据集制作类似于Cifar-10格式的数据集_第2张图片

4.cifar数据的data_batch_1文件包含的内容:

用自己的数据集制作类似于Cifar-10格式的数据集_第3张图片

5.数据格式一致,数据集制作完成。

你可能感兴趣的:(深度学习)