Python基于CNN的交通标志识别系统[源码]
1. 图片展示
2.视频展示
B站视频操作展示:Python基于CNN的交通标志识别系统[源码]
3. 标注好的数据集GTSRB
4. 代码实现
导入训练数据集
################# Parameters #####################
path = "./data/Train" # folder with all the class folders
labelFile = './data/Train.csv' # file with all names of classes
batch_size_val=64 # how many to process together
epochs_val=20
imageDimesions = (30,30,3)
testRatio = 0.2 # if 1000 images split will 200 for testing
validationRatio = 0.2 # if 1000 images 20% of remaining 800 will be 160 for validation
###################################################
建立模型
def myModel():
model = Sequential()
model.add(Conv2D(filters=32, kernel_size=(5,5), activation='relu', input_shape=X_train.shape[1:]))
model.add(Conv2D(filters=32, kernel_size=(5,5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(rate=0.25))
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(rate=0.25))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(rate=0.5))
model.add(Dense(43, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
保存模型
model.save("CNN_model_10.h5")
测试模型
#testing accuracy on test dataset
from sklearn.metrics import accuracy_score
y_test = pd.read_csv('./data/Test.csv')
labels = y_test["ClassId"].values
imgs = y_test["Path"].values
data=[]
for img in imgs:
image = Image.open("./data/"+ img)
image = image.resize((30,30))
data.append(np.array(image))
X_test=np.array(data)
X_test=np.array(list(map(preprocessing,X_test)))
X_test = np.expand_dims(X_test, axis=-1)
predict_x=model.predict(X_test)
pred=np.argmax(predict_x,axis=1)
print(accuracy_score(labels, pred))
5. 训练结果
模型训练10轮后的正确率为
模型训练10轮后的损失为
6. (代码+数据集+配置环境)获取
验证消息:说明来意
加QQ:1821986010