資源簡介
文件中包含使用kears實現的字符識別,其中字符圖片有從0-9,A-Z,以及各個地區的漢字字符在ann文件下面,模型對各個字符的識別的準確率達到98%以上
代碼片段和文件信息
#!/usr/bin/env?python
#?coding:?utf-8
import?skimage.io
import?skimage.color
import?skimage.transform
import?numpy?as?np
import?os
import?random
import?keras
from?keras.models?import?Sequential
from?keras.layers?import?Dense?Dropout?Flatten
from?keras.layers?import?Conv2D?MaxPooling2D
from?keras?import?backend?as?K
DATASET_DIR?=?‘../dataset/carplate‘
classes?=?os.listdir(DATASET_DIR?+?“/ann/“)
data?=?[]
for?cls?in?classes:
????files?=?os.listdir(DATASET_DIR?+?“/ann/“+cls)
????for?f?in?files:
????????img?=?skimage.io.imread(DATASET_DIR?+?“/ann/“+cls+“/“+f)
????????img?=?skimage.color.rgb2gray(img)
????????data.append({
????????????‘x‘:?img
????????????‘y‘:?cls
????????})
random.shuffle(data)
X?=?[d[‘x‘]?for?d?in?data]
y?=?[d[‘y‘]?for?d?in?data]
ys?=?list(np.unique(y))
y?=?[ys.index(v)?for?v?in?y]
x_train?=?np.array(X[:int(len(X)*0.8)])
y_train?=?np.array(y[:int(len(X)*0.8)])
x_test?=?np.array(X[int(len(X)*0.8):])
y_test?=?np.array(y[int(len(X)*0.8):])
batch_size?=?128
num_classes?=?len(classes)
epochs?=?30
#?input?image?dimensions
img_rows?img_cols?=?20?20
def?extend_channel(data):
????if?K.image_data_format()?==?‘channels_first‘:
????????data?=?data.reshape(data.shape[0]?1?img_rows?img_cols)
????else:
????????data?=?data.reshape(data.shape[0]?img_rows?img_cols?1)
????????
????return?data
x_train?=?extend_channel(x_train)
x_test?=?extend_channel(x_test)
input_shape?=?x_train.shape[1:]
x_train?=?x_train.astype(‘float32‘)
x_test?=?x_test.astype(‘float32‘)
x_train?/=?255
x_test?/=?255
print(‘x_train?shape:‘?x_train.shape)
print(x_train.shape[0]?‘train?samples‘)
print(x_test.shape[0]?‘test?samples‘)
y_train2?=?keras.utils.to_categorical(y_train?num_classes)
y_test2?=?keras.utils.to_categorical(y_test?num_classes)
model?=?Sequential()
model.add(Conv2D(32?kernel_size=(3?3)
?????????????????activation=‘relu‘
?????????????????input_shape=input_shape))
model.add(Conv2D(64?(3?3)?activation=‘relu‘))
model.add(MaxPooling2D(pool_size=(2?2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128?activation=‘relu‘))
model.add(Dropout(0.5))
model.add(Dense(num_classes?activation=‘softmax‘))
model.compile(loss=keras.losses.categorical_crossentropy
??????????????optimizer=keras.optimizers.Adadelta()
??????????????metrics=[‘accuracy‘])
model.fit(x_train?y_train2
??????????batch_size=batch_size
??????????epochs=epochs
??????????verbose=1
??????????validation_data=(x_test?y_test2))
score?=?model.evaluate(x_test?y_test2?verbose=0)
print(‘Test?loss:‘?score[0])
print(‘Test?accuracy:‘?score[1])
model.save_weights(‘char_cnn.h5‘)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????665??2014-08-23?14:44??dataset\carplate\ann\0\101-1.jpg
?????文件????????674??2014-08-23?14:44??dataset\carplate\ann\0\105-5.jpg
?????文件????????641??2014-08-23?14:44??dataset\carplate\ann\0\106-5.jpg
?????文件????????642??2014-08-23?14:44??dataset\carplate\ann\0\110-6.jpg
?????文件????????646??2014-08-23?14:44??dataset\carplate\ann\0\110-7.jpg
?????文件????????712??2014-08-23?14:44??dataset\carplate\ann\0\111-4.jpg
?????文件????????639??2014-08-23?14:44??dataset\carplate\ann\0\113-1.jpg
?????文件????????669??2014-08-23?14:44??dataset\carplate\ann\0\114-2.jpg
?????文件????????666??2014-08-23?14:44??dataset\carplate\ann\0\12-1.jpg
?????文件????????683??2014-08-23?14:44??dataset\carplate\ann\0\124-3.jpg
?????文件????????674??2014-08-23?14:44??dataset\carplate\ann\0\126-3.jpg
?????文件????????674??2014-08-23?14:44??dataset\carplate\ann\0\127-2.jpg
?????文件????????657??2014-08-23?14:44??dataset\carplate\ann\0\129-3.jpg
?????文件????????716??2014-08-23?14:44??dataset\carplate\ann\0\131-5.jpg
?????文件????????716??2014-08-23?14:44??dataset\carplate\ann\0\132-5.jpg
?????文件????????657??2014-08-23?14:44??dataset\carplate\ann\0\134-3.jpg
?????文件????????673??2014-08-23?14:44??dataset\carplate\ann\0\135-3.jpg
?????文件????????629??2014-08-23?14:44??dataset\carplate\ann\0\139-5.jpg
?????文件????????671??2014-08-23?14:44??dataset\carplate\ann\0\139-6.jpg
?????文件????????659??2014-08-23?14:44??dataset\carplate\ann\0\140-3.jpg
?????文件????????683??2014-08-23?14:44??dataset\carplate\ann\0\146-4.jpg
?????文件????????673??2014-08-23?14:44??dataset\carplate\ann\0\15-3.jpg
?????文件????????728??2014-08-23?14:44??dataset\carplate\ann\0\15-5.jpg
?????文件????????644??2014-08-23?14:44??dataset\carplate\ann\0\156-3.jpg
?????文件????????697??2014-08-23?14:44??dataset\carplate\ann\0\157-0.jpg
?????文件????????701??2014-08-23?14:44??dataset\carplate\ann\0\162-0.jpg
?????文件????????656??2014-08-23?14:44??dataset\carplate\ann\0\169-3.jpg
?????文件????????657??2014-08-23?14:44??dataset\carplate\ann\0\17-3.jpg
?????文件????????651??2014-08-23?14:44??dataset\carplate\ann\0\174-2.jpg
?????文件????????668??2014-08-23?14:44??dataset\carplate\ann\0\177-1.jpg
............此處省略16193個文件信息
評論
共有 條評論