如何给自己的数据集keras image_ocr
问题描述:
我知道keras image_ocr模型。它采用图像产生的图像,但是,我面临着一些困难,因为我想给我自己的数据集模型的training.vi如何给自己的数据集keras image_ocr
回购链接是:https://github.com/fchollet/keras/blob/master/examples/image_ocr.py
我已经创建数组: x和y。我的图像路径及其相应的gt是在一个csv文件中。
x被给定作为图像的尺寸: [nb_samples,W,H,C]
y被给定它是一个字符串标签中,GT。
这里是我使用的代码预处理:
for i in range(0,len(read_file)):
path = read_file['path'][i]
label = read_file['gt'][i]
path = path.strip('\n')
img = cv2.imread(path,0)
#Re-sizing the images
#height = 64, width = 128
#res_img = cv2.resize(img, (128,64))
#cv2.imwrite(i,res_img)
h,w = img.shape
x.append(img)
y.append(label)
size = img.size
"""
print "Height: ", h #Height
print "Width: ", w #Width
print "Channel: ", C#Channel
print "Size: ", size
print "\n"
"""
print "H: ", h
print "W: ", w
print "S: ", size
x = np.array(x).astype(np.float32)
y = np.array(y)
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.3,random_state=42)
x_train = np.array(x_train).astype(np.float32)
y_train = np.array(y_train)
x_train = np.array(x_train)
x_test = np.array(x_test)
y_test = np.array(y_test)
print "Printing the shapes. \n"
print "X_train shape: ", x_train.shape
print "Y_train shape: ", y_train.shape
print "X_test shape: ", x_test.shape
print "Y_test shape: ", y_test.shape
print "\n"
其次是在keras image_ocr代码。总的代码是在这里: https://gist.github.com/kjanjua26/b46388bbde9ded5cf1f077a9f0dedc4f
的错误,当我运行是这样的:
`Traceback (most recent call last):
File "preprocess.py", line 323, in <module>
train(run_name, 0, 20, w)
File "preprocess.py", line 314, in train
model.fit(next_train(x_train), y_train, batch_size=7, epochs=20, verbose=1, validation_split=0.1, shuffle=True, initial_epoch=0)
File "/home/kamranjanjua/anaconda2/lib/python2.7/site- packages/keras/engine/training.py", line 1358, in fit
batch_size=batch_size)
File "/home/kamranjanjua/anaconda2/lib/python2.7/site-packages/keras/engine/training.py", line 1234, in _standardize_user_data
exception_prefix='input')
File "/home/kamranjanjua/anaconda2/lib/python2.7/site-packages/keras/engine/training.py", line 100, in _standardize_input_data
'Found: ' + str(data)[:200] + '...')
TypeError: Error when checking model input: data should be a Numpy array, or list/dict of Numpy arrays. Found: <generator object next_train at 0x7f8752671640>...`
任何帮助,将不胜感激。
答
如果您仔细查看代码,您将能够看到该模型需要一个字典作为其输入。
inputs = {'the_input': X_data,'the_labels': labels, 'input_length': input_length,'label_length': label_length,'source_str': source_str}
outputs = {'ctc': np.zeros([size])} # dummy data for dummy loss function
对于输入: 1)X_data是训练实例 2)标签是相应的训练示例的标签 3)label_length是标签的长度 4)Input_Length是您输入的长度 5 )源字符串是它不是强制性的,它只是用于解码
输出是
现在在你的代码,你只产生X_train,y_train为CTC损失功能的虚拟数据,但OTH呃输入丢失。您需要根据模型的预期输入和输出准备数据集。