【问题标题】:How to make a dataset similar to CIFAR10 with several images如何使用多张图像制作类似于 CIFAR10 的数据集
【发布时间】:2016-06-26 09:56:59
【问题描述】:

我尝试制作一个类似于 CIFAR10 的数据集。我找到了这个教程: How to create dataset similar to cifar-10

我已经可以使用 1 张图片制作数据集,但是当我尝试使用多张图片时出现此错误:

tensorflow.python.framework.errors.InvalidArgumentError: Indices are not valid: not lexicographically sorted or containing repeats.

谁能帮我解决这个问题?

这是我的代码:

from PIL import Image
import numpy as np

out =np.empty([20,7501])
    for j in xrange(0, 10):
        im = Image.open('%d_receipt.jpg' % j)
        im = (np.array(im))
        r = im[:,:,0].flatten()
        g = im[:,:,1].flatten()
        b = im[:,:,2].flatten()
        label = [0]
        out[j] = np.array(list(label) + list(r) + list(g) + list(b),np.uint8)  


    for i in xrange(0, 10):
        im = Image.open('%d_news.jpg' % i)
        im = (np.array(im))
        r = im[:,:,0].flatten()
        g = im[:,:,1].flatten()
        b = im[:,:,2].flatten()
        label = [1]
        j = i + 10
        out[j] = np.array(list(label) + list(r) + list(g) + list(b),np.uint8)


out.tofile("data_batch.bin")

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    我是这样做的:

    import numpy as np
    import scipy.io 
    
    mat = scipy.io.loadmat('train_32x32.mat')
    data = mat['X']
    label = mat['y']
    
    R_data = data[:,:,0,:]
    G_data = data[:,:,1,:]
    B_data = data[:,:,2,:]
    
    R_data = np.transpose(R_data, (2,0,1))
    G_data = np.transpose(G_data, (2,0,1))
    B_data = np.transpose(B_data, (2,0,1))
    
    R_data = np.reshape(R_data,(73257,32*32))
    G_data = np.reshape(G_data,(73257,32*32))
    B_data = np.reshape(B_data,(73257,32*32))
    
    outdata = np.concatenate((label,R_data,G_data,B_data), axis = 1)
    step = 10000
    for i in range(1,6):
        temp = outdata[i*step:(i+1)*step,:]
        temp.tofile('SVHN_train_data_batch%d.bin' % i)
        print('save data %d' % i)
    

    那么,直接放到Cifar10 tensorflow例子的train code中就好了。

    【讨论】:

    • 我可能听起来很愚蠢,但你能说出你是如何获得“train_32x32.mat”文件的吗?这些是我们要训练的数据集的提取特征吗?
    【解决方案2】:

    我也尝试按照您在问题中发布的教程进行操作,但是我无法使其正常工作,因此我制定了自己的解决方案。可以在我的github上找到:https://github.com/jdeepee/machine_learning/tree/master

    代码已注释,因此应该很容易理解。我应该注意到它遍历了一个包含多个包含图像的文件夹的主目录。

    【讨论】:

      【解决方案3】:

      下面的 sn-p 是我为使 CIFAR-10 适应 GTSRB 所做的。更多细节在这里。 https://github.com/hashkanna/traffic-signs/blob/master/Traffic_Signs_Recognition_binFiles.ipynb

      out = {}
      
      for i in range(5):
          bin_val = (i%5) + 1
          #im = Image.open(X_train[i])
          #im = np.array(im)
          im = X_train[i]
          r = im[:,:,0].flatten()
          g = im[:,:,1].flatten()
          b = im[:,:,2].flatten()
          label = [y_train[i]]
          out[bin_val] = np.array(list(label) + list(r) + list(g) + list(b),np.uint8)
      
      for i in range(5,len(X_train)):
          bin_val = (i%5) + 1
          #im = Image.open(X_train[i])
          #im = np.array(im)
          im = X_train[i]
          r = im[:,:,0].flatten()
          g = im[:,:,1].flatten()
          b = im[:,:,2].flatten()
          label = [y_train[i]]
          new_array = np.array(list(label) + list(r) + list(g) + list(b),np.uint8)
          out[bin_val] = np.append(out[bin_val], new_array, 0)
      
      for bin_val in range(1,6):
          out[bin_val].tofile("/Users/kanna/Downloads/data_batch_%s.bin"%bin_val)
      

      【讨论】:

        猜你喜欢
        • 2013-09-05
        • 1970-01-01
        • 1970-01-01
        • 2013-11-02
        • 1970-01-01
        • 1970-01-01
        • 2012-01-17
        • 1970-01-01
        • 2017-07-30
        相关资源
        最近更新 更多