python车牌识别使用训练集_TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
在前幾天寫的一篇博文《如何從TensorFlow的mnist數(shù)據(jù)集導(dǎo)出手寫體數(shù)字圖片》中,我們介紹了如何通過TensorFlow將mnist手寫體數(shù)字集導(dǎo)出到本地保存為bmp文件。
車牌識別在當(dāng)今社會中廣泛存在,其應(yīng)用場景包括各類交通監(jiān)控和停車場出入口收費(fèi)系統(tǒng),在自動駕駛中也得到一定應(yīng)用,其原理也不難理解,故很適合作為圖像處理+機(jī)器學(xué)習(xí)的入門案例。
現(xiàn)在我們不妨醞釀一個大膽的想法:在TensorFlow中通過卷積神經(jīng)網(wǎng)絡(luò)+mnist數(shù)字集實(shí)現(xiàn)車牌識別。
實(shí)際上車牌字符除了數(shù)字0-9,還有字母A-Z,以及各省份的簡稱。只包含數(shù)字0-9的mnist是不足以識別車牌的。故本文所做實(shí)驗(yàn)僅出于演示目的。
由于車牌數(shù)字是正體,而mnist是手寫體,為提高識別率,需要從mnist圖片集中挑選出形狀比較規(guī)則工整的圖片作為訓(xùn)練圖片,否則識別率不高。作為參考,下圖是我挑選出來的一部分較工整數(shù)字:
(如果你需要我挑選出來的圖片,可以評論或私信我留下郵箱)
出于演示目的,我們從網(wǎng)上找到下面這張圖片:
現(xiàn)在我們假設(shè)該車牌號為閩0-16720(實(shí)際上是閩O-1672Q),暫不識別省份簡稱,只識別0-16720。
上圖經(jīng)過opencv定位分割處理后,得到以下幾張車牌字符。
現(xiàn)在我們通過如下代碼,將這幾張字符圖片輸入到上一篇博文《如何用TensorFlow訓(xùn)練和識別/分類自定義圖片》中構(gòu)建的網(wǎng)絡(luò):
license_num = []
for n in range(2,8):
path = "result/%s.bmp" % (n)
img = Image.open(path)
width = img.size[0]
height = img.size[1]
img_data = [[0]*784 for i in range(1)]
for h in range(0, height):
for w in range(0, width):
if img.getpixel((w, h)) < 190:
img_data[0][w+h*width] = 0
else:
img_data[0][w+h*width] = 1
# 獲取softmax結(jié)果前三位的index和概率值
soft_max = tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)
result = sess.run(soft_max, feed_dict = {x: np.array(img_data), keep_prob: 1.0})
max1 = 0
max2 = 0
max3 = 0
max1_index = 0
max2_index = 0
max3_index = 0
for j in range(10):
if result[0][j] > max1:
max1 = result[0][j]
max1_index = j
continue
if (result[0][j]>max2) and (result[0][j]<=max1):
max2 = result[0][j]
max2_index = j
continue
if (result[0][j]>max3) and (result[0][j]<=max2):
max3 = result[0][j]
max3_index = j
continue
license_num.append(max1_index)
print ("softmax結(jié)果前三位概率:%s: %.2f%% %s: %.2f%% %s: %.2f%%"
% (max1_index,max1*100, max2_index,max2*100, max3_index,max3*100))
print ("車牌號為: %s" % license_num)
然后運(yùn)行程序,結(jié)果如下:
可以看出,分類結(jié)果為016720,是正確的,而softmax計算結(jié)果可信度也是可以接受的。
后續(xù)將給出包含省份簡稱和字母A-Z的完整例子。
最后附上本文程序的完整代碼(運(yùn)行之前需要確保你的數(shù)據(jù)集和待識別圖片的位深度都是8,也就是一個像素的顏色值用一個字節(jié)(8bits)表示,不然會出錯):
PS:支持省份簡稱和字母的車牌識別程序詳見《TensorFlow車牌識別完整版(含車牌數(shù)據(jù)集)》
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
本文標(biāo)題: TensorFlow基于MNIST數(shù)據(jù)集實(shí)現(xiàn)車牌識別(初步演示版)
本文地址: http://www.cppcns.com/jiaoben/python/267482.html
總結(jié)
以上是生活随笔為你收集整理的python车牌识别使用训练集_TensorFlow基于MNIST数据集实现车牌识别(初步演示版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于eNSP的千人规模冗余型企业/校园网
- 下一篇: 基于PaddleOCR实现车牌识别