我正在看这个Tensorflow教程.
在教程中,图像被神奇地读取如下:
mnist = learn.datasets.load_dataset("mnist")
train_data = mnist.train.images
Run Code Online (Sandbox Code Playgroud)
我的图片放在两个目录中:
../input/test/
../input/train/
Run Code Online (Sandbox Code Playgroud)
他们都有一个*.jpg
结局.
那么如何将它们读入我的程序呢?
我不认为我可以使用,learn.datasets.load_dataset
因为这似乎采用了专门的数据集结构,而我只有图像的文件夹.
mnist.train.images基本上是一个numpy形状的数组[55000,784].其中,55000是图像数,784是每个图像中的像素数(每个图像是28x28)
如果要运行此确切代码,则需要从数据中创建类似的numpy数组.因此,您需要迭代所有图像,将图像读取为numpy数组,将其展平并创建大小为[num_examples,image_size]的矩阵
以下代码段应该执行此操作:
import os
import cv2
import numpy as np
def load_data(img_dir):
return np.array([cv2.imread(os.path.join(img_dir, img)).flatten() for img in os.listdir(img_dir) if img.endswith(".jpg")])
Run Code Online (Sandbox Code Playgroud)
一个更全面的代码来启用调试:
import os
list_of_imgs = []
img_dir = "../input/train/"
for img in os.listdir("."):
img = os.path.join(img_dir, img)
if not img.endswith(".jpg"):
continue
a = cv2.imread(img)
if a is None:
print "Unable to read image", img
continue
list_of_imgs.append(a.flatten())
train_data = np.array(list_of_imgs)
Run Code Online (Sandbox Code Playgroud)
注意:如果您的图像不是28x28x1(黑白图像),则需要更改神经网络架构(在cnn_model_fn中定义).本教程中的体系结构是一种玩具架构,仅适用于像MNIST这样的简单图像.Alexnet可能是开始RGB图像的好地方.
归档时间: |
|
查看次数: |
7905 次 |
最近记录: |