TensorFlow基于MNIST數(shù)據(jù)集實現(xiàn)車牌識別(初步演示版)
在前幾天寫的一篇博文《如何從TensorFlow的mnist數(shù)據(jù)集導(dǎo)出手寫體數(shù)字圖片》中,我們介紹了如何通過TensorFlow將mnist手寫體數(shù)字集導(dǎo)出到本地保存為bmp文件。
車牌識別在當(dāng)今社會中廣泛存在,其應(yīng)用場景包括各類交通監(jiān)控和停車場出入口收費系統(tǒng),在自動駕駛中也得到一定應(yīng)用,其原理也不難理解,故很適合作為圖像處理+機器學(xué)習(xí)的入門案例。
現(xiàn)在我們不妨醞釀一個大膽的想法:在TensorFlow中通過卷積神經(jīng)網(wǎng)絡(luò)+mnist數(shù)字集實現(xiàn)車牌識別。
實際上車牌字符除了數(shù)字0-9,還有字母A-Z,以及各省份的簡稱。只包含數(shù)字0-9的mnist是不足以識別車牌的。故本文所做實驗僅出于演示目的。
由于車牌數(shù)字是正體,而mnist是手寫體,為提高識別率,需要從mnist圖片集中挑選出形狀比較規(guī)則工整的圖片作為訓(xùn)練圖片,否則識別率不高。作為參考,下圖是我挑選出來的一部分較工整數(shù)字:
(如果你需要我挑選出來的圖片,可以評論或私信我留下郵箱)
出于演示目的,我們從網(wǎng)上找到下面這張圖片:
現(xiàn)在我們假設(shè)該車牌號為閩0-16720(實際上是閩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)
然后運行程序,結(jié)果如下:
可以看出,分類結(jié)果為016720,是正確的,而softmax計算結(jié)果可信度也是可以接受的。
后續(xù)將給出包含省份簡稱和字母A-Z的完整例子。
最后附上本文程序的完整代碼(運行之前需要確保你的數(shù)據(jù)集和待識別圖片的位深度都是8,也就是一個像素的顏色值用一個字節(jié)(8bits)表示,不然會出錯):
PS:支持省份簡稱和字母的車牌識別程序詳見《TensorFlow車牌識別完整版(含車牌數(shù)據(jù)集)》
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python django下載大的csv文件實現(xiàn)方法分析
這篇文章主要介紹了python django下載大的csv文件實現(xiàn)方法,結(jié)合實例形式分析了Django框架下載csv大文件的相關(guān)操作技巧與注意事項,需要的朋友可以參考下2019-07-07超詳細(xì)注釋之OpenCV旋轉(zhuǎn)圖像任意角度
這篇文章主要介紹了OpenCV旋轉(zhuǎn)圖像任意角度,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09python -m pip install 和 pip in
python -m pip install <package> 使用了 -m 參數(shù)來確保以 Python 模塊的形式運行 pip,適用于確保在不同的環(huán)境中正確使用 pip,這篇文章主要介紹了python -m pip install 和 pip install 的區(qū)別,需要的朋友可以參考下2023-07-07在Python 3中緩存Exception對象會造成什么后果?
這篇文章主要介紹了在Python 3中緩存Exception對象到底會造成什么后果?下面帶著這個問題一起看看文章的解析,需要的朋友可以參考一下2021-12-12python實現(xiàn)web應(yīng)用框架之增加動態(tài)路由
這篇文章主要介紹web應(yīng)用框架如何添加動態(tài)路由,在我們編寫的框架中,我們添加動態(tài)路由,是使用了正則表達式,同時在注冊的時候,需要注明該路由是請求路由,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-05-05