在前幾天寫的一篇博文《如何從TensorFlow的mnist數(shù)據集導出手寫體數(shù)字圖片》中,我們介紹了如何通過TensorFlow將mnist手寫體數(shù)字集導出到本地保存為bmp文件。
成都創(chuàng)新互聯(lián)公司-成都網站建設公司,專注網站制作、網站建設、網站營銷推廣,國際域名空間,網絡空間,網站托管有關企業(yè)網站制作方案、改版、費用等問題,請聯(lián)系成都創(chuàng)新互聯(lián)公司。車牌識別在當今社會中廣泛存在,其應用場景包括各類交通監(jiān)控和停車場出入口收費系統(tǒng),在自動駕駛中也得到一定應用,其原理也不難理解,故很適合作為圖像處理+機器學習的入門案例。
現(xiàn)在我們不妨醞釀一個大膽的想法:在TensorFlow中通過卷積神經網絡+mnist數(shù)字集實現(xiàn)車牌識別。
實際上車牌字符除了數(shù)字0-9,還有字母A-Z,以及各省份的簡稱。只包含數(shù)字0-9的mnist是不足以識別車牌的。故本文所做實驗僅出于演示目的。
由于車牌數(shù)字是正體,而mnist是手寫體,為提高識別率,需要從mnist圖片集中挑選出形狀比較規(guī)則工整的圖片作為訓練圖片,否則識別率不高。作為參考,下圖是我挑選出來的一部分較工整數(shù)字:
(如果你需要我挑選出來的圖片,可以評論或私信我留下郵箱)
出于演示目的,我們從網上找到下面這張圖片:
現(xiàn)在我們假設該車牌號為閩0-16720(實際上是閩O-1672Q),暫不識別省份簡稱,只識別0-16720。
上圖經過opencv定位分割處理后,得到以下幾張車牌字符。
現(xiàn)在我們通過如下代碼,將這幾張字符圖片輸入到上一篇博文《如何用TensorFlow訓練和識別/分類自定義圖片》中構建的網絡:
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結果前三位的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結果前三位概率:%s: %.2f%% %s: %.2f%% %s: %.2f%%" % (max1_index,max1*100, max2_index,max2*100, max3_index,max3*100)) print ("車牌號為: %s" % license_num)
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。