基于深度学习和opencv的甲骨文识别系统 |
您所在的位置:网站首页 › 学好甲骨文的甲骨文 › 基于深度学习和opencv的甲骨文识别系统 |
最近做了一个甲骨文识别项目,在此分享一下。 文末附有源码。 视频展示: 基于opencv和深度学习的甲骨文识别 运行界面: 识别结果: 训练网络模型: from tensorflow.keras.layers import Conv2D,MaxPooling2D,Input,Flatten,Dense,Dropout from tensorflow.keras import Model from tensorflow.keras.callbacks import (EarlyStopping, ReduceLROnPlateau, TensorBoard,ModelCheckpoint) from get_data import generate,bb,vv def mode(shape=(96,96,3)): inputs=Input(shape=shape) x=Conv2D(filters=6,kernel_size=5,strides=(1,1),padding='same',activation='relu')(inputs) x=MaxPooling2D(pool_size=(2,2),strides=(2,2),padding='same')(x) x=Conv2D(filters=16,kernel_size=3,strides=(1,1),padding='same',activation='relu')(x) x = MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding='same')(x) x=Flatten()(x) x=Dense(1000,activation='relu')(x) x=Dropout(rate=0.5)(x) x=Dense(500,activation='relu')(x) y = Dense(1185, activation='softmax')(x) model=Model(inputs,y) return model modell=mode() modell.summary() if __name__ == '__main__': modell.compile( loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'] ) log_dir = 'logs/' logging = TensorBoard(log_dir=log_dir) checkpoint = ModelCheckpoint(log_dir + 'ep{epoch:03d}-loss{loss:.3f}-val_loss{val_loss:.3f}.h5', monitor='val_loss', save_weights_only=True, save_best_only=False, period=1) reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=3, verbose=1) early_stopping = EarlyStopping(monitor='val_loss', min_delta=0, patience=10, verbose=1) TensorBoard = TensorBoard(log_dir='./model', histogram_freq=1) batch_size=50 hist = modell.fit_generator(generate(batch_size=batch_size), steps_per_epoch=bb//batch_size, validation_data=generate(valid=True,batch_size=batch_size), validation_steps=vv//batch_size, epochs=50, callbacks=[logging, checkpoint, reduce_lr, early_stopping])预测: from model import modell import cv2 as cv import numpy as np with open('answer.txt','r',encoding='utf-8') as f: lines=f.readlines() modell.load_weights('logs/ep030-loss0.037-val_loss0.024.h5') def ppre(src): #src=cv.imdecode(np.fromfile('ancient_3_exp/jia/丘/0/O000255_exp_1.png', dtype=np.uint8), 1) src=np.reshape(src,(1,src.shape[0],src.shape[1],src.shape[2])) src=(src/255).astype('float32') pre=modell.predict(src)[0] pre=np.argmax(pre) return lines[pre] if __name__ == '__main__': src = cv.imdecode(np.fromfile('ancient_3_exp/jia/丘/0/O000255_exp_1.png', dtype=np.uint8), 1) zti=ppre(src) print(zti) 界面已经使用pyqt5做好,下载以后只需运行main.py程序即可,下图是程序目录:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |