You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
#coding=utf-8
|
|
from keras.models import Sequential
|
|
from keras.layers import Dense, Dropout, Activation, Flatten
|
|
from keras.layers import Conv2D, MaxPool2D
|
|
from keras.optimizers import SGD
|
|
from keras import backend as K
|
|
|
|
K.set_image_dim_ordering('tf')
|
|
|
|
|
|
import cv2
|
|
import numpy as np
|
|
|
|
|
|
plateType = [u"蓝牌",u"单层黄牌",u"新能源车牌",u"白色",u"黑色-港澳"]
|
|
def Getmodel_tensorflow(nb_classes):
|
|
# nb_classes = len(charset)
|
|
|
|
img_rows, img_cols = 9, 34
|
|
# number of convolutional filters to use
|
|
nb_filters = 32
|
|
# size of pooling area for max pooling
|
|
nb_pool = 2
|
|
# convolution kernel size
|
|
nb_conv = 3
|
|
|
|
# x = np.load('x.npy')
|
|
# y = np_utils.to_categorical(range(3062)*45*5*2, nb_classes)
|
|
# weight = ((type_class - np.arange(type_class)) / type_class + 1) ** 3
|
|
# weight = dict(zip(range(3063), weight / weight.mean())) # 调整权重,高频字优先
|
|
|
|
model = Sequential()
|
|
model.add(Conv2D(16, (5, 5),input_shape=(img_rows, img_cols,3)))
|
|
model.add(Activation('relu'))
|
|
model.add(MaxPool2D(pool_size=(nb_pool, nb_pool)))
|
|
model.add(Flatten())
|
|
model.add(Dense(64))
|
|
model.add(Activation('relu'))
|
|
model.add(Dropout(0.5))
|
|
model.add(Dense(nb_classes))
|
|
model.add(Activation('softmax'))
|
|
model.compile(loss='categorical_crossentropy',
|
|
optimizer='adam',
|
|
metrics=['accuracy'])
|
|
return model
|
|
|
|
model = Getmodel_tensorflow(5)
|
|
model.load_weights("./model/plate_type.h5")
|
|
model.save("./model/plate_type.h5")
|
|
def SimplePredict(image):
|
|
image = cv2.resize(image, (34, 9))
|
|
image = image.astype(np.float) / 255
|
|
res = np.array(model.predict(np.array([image]))[0])
|
|
return res.argmax()
|
|
|
|
|