項目介紹
TensorFlow2.X 搭建卷積神經(jīng)網(wǎng)絡(CNN),實現(xiàn)交通標志識別。搭建的卷積神經(jīng)網(wǎng)絡是類似VGG的結(jié)構(gòu)(卷積層與池化層反復堆疊,然后經(jīng)過全連接層,最后用softmax映射為每個類別的概率,概率最大的即為識別結(jié)果)。
其他項目
水果蔬菜識別:基于卷積神經(jīng)網(wǎng)絡的水果識別項目
安裝conda和pycharm
若已經(jīng)安裝好了請忽略。
在評論區(qū)獲取:安裝包的分享鏈接,包含Pycharm、Anaconda、Miniconda、TeamViewer(遠程協(xié)助)、FormatFactory(格式工廠)。
安裝aconda
可以自行選擇Anaconda或者Miniconda兩者安裝方法和法是完全一樣的。但是強烈建議選擇Miniconda,因為它比較“輕”,占用內(nèi)存極小,并且安裝時間相對Anaconda耗時極短!
直接下一步,到了這個頁面全部勾選,否則不會添加添加環(huán)境變量。
安裝Pycharm
直接下一步,到了這個頁面全部勾選。
安裝遠程協(xié)助軟件
如果需要遠程協(xié)助,請自行提前安裝好TeamViewer。
項目展示
視頻展示地址:交通標志識別視頻展示
1.PYQT5界面:基于PYQT5的GUI界面實現(xiàn)交互,可以上傳一張交通標志圖像,點擊識別結(jié)果。
2.Flask網(wǎng)頁前端界面:基于Flask生產(chǎn)一個網(wǎng)頁界面實現(xiàn)交互,可以上傳一張交通標志圖像,點擊預測模型會輸出每一個類別的置信度,并按照從大到小的降序排列展示在網(wǎng)頁上,展示在最上面的類別即為最終模型的識別結(jié)果。
網(wǎng)絡結(jié)構(gòu):
開發(fā)環(huán)境:
- python==3.7
- tensorflow==2.3
數(shù)據(jù)集(GTSRB):
德國交通標志基準測試是在2011年國際神經(jīng)網(wǎng)絡聯(lián)合會議(IJCNN)上舉行的多類單圖像分類挑戰(zhàn)賽。我們誠摯地邀請來自相關(guān)領域的研究人員參加:比賽旨在允許沒有特殊領域知識的參與。我們的基準測試具有以下特性:
主要用于單圖像、多類分類問題。43個class,其中訓練集39209個樣本,測試集12630個樣總計超過 50,000 張圖片大型、逼真的數(shù)據(jù)庫。
每個訓練集和測試集中每個文件夾中存放數(shù)據(jù)類別如下圖所示:
代碼調(diào)試
在這里插入圖片描述
拿到項目后,解壓文件,解壓后如下圖所示:
Step1:打開項目文件夾
各個文件及代碼介紹:
Step2:搭建開發(fā)環(huán)境
創(chuàng)建虛擬環(huán)境
輸入cmd回車后,會打開一個命令終端,下面我們開始創(chuàng)建虛擬環(huán)境:
輸入命令為:
conda create -n tf23_py37 python=3.7
輸入命令回車后,出現(xiàn)下面提示,繼續(xù)回車:
然后回車后,我們就創(chuàng)建了一個環(huán)境名稱為“tf23_py37”的虛擬環(huán)境,它的python版本為3.7,如下圖所示:
激活虛擬環(huán)境
復制這條命令,輸入命令行,激活我們創(chuàng)建的虛擬環(huán)境:
conda activate tf23_py37
安裝第三方依賴庫
下面開始安裝項目用到的第三方依賴庫,比如tensorflow、matplotlib、pyqt5等。本次用到的依賴庫全部記錄在了requirements.txt文件中。下面開始安裝:
在命令終端中輸入以下命令。
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
注意:上面這條安裝第三方依賴庫的命令 “-i” 后面接的是國內(nèi)的鏡像源地址。如果安裝失敗提示我們指定的鏡像源中沒有對應的第三方庫依賴的版本,可以考慮選擇其他的鏡像源。
國內(nèi)常用鏡像源地址
清華:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:https://mirrors.aliyun.com/pypi/simple/
中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/
華中理工大學:http://pypi.hustunique.com/
山東理工大學:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
安裝成功后,如下如所示:
打開項目配置環(huán)境
如果出現(xiàn)下面提示:
如果出現(xiàn)下面提示:
選擇解釋器(我們上面創(chuàng)建的虛擬環(huán)境)
打開朋友charm后,在pycharm的右下角點擊解釋器選擇,選擇”Add Interpreter“選擇添加解釋器。
按照圖片的提示操作即可,添加我們需要的“python解釋器”,pycharm右下角顯示如下圖所示即為成功:
訓練神經(jīng)網(wǎng)絡模型
打開項目“train_cnn.py”這個代碼,根據(jù)圖片中提示操作:
成功運行效果如下圖所示:
成功運行后,接下來要做的事情就是“等待”,根據(jù)每個人電腦配置的高低,運行訓練網(wǎng)絡的代碼時間也是不同的(幾分鐘–幾個小時)等待運行完畢,不報錯即為訓練成功。
在訓練成功后,在models文件夾中會生成"cnn_fv.h5"文件。
在訓練成功后,在result文件夾中,可以看到“results_cnn.png”圖片,記錄了訓練過程中準確率和loss的變化情況。
同樣按著運行”train_cnn.py”的邏輯步驟去運行”train_mobilenet.py“,就會訓練mobilenet神經(jīng)網(wǎng)絡。運行的結(jié)果可以和CNN形成一組對照。更有利于我們寫文章哦!
測試
在訓練模型完畢后,我們開始測試模型(評估模型的性能),打開“test_model.py”
按照圖片提示操作。
運行成功后會在results文件夾下生成“heatmap_cnn.png”熱力圖(可以看到每個類別預測準確率的情況),如下所示:
因為類別較多所以顯示的效果不是很好看(-_-)。
預測
PYQT5的GUI界面
在經(jīng)過訓練和測試之后,我們得到了一個可以用來做交通標志識別的神經(jīng)網(wǎng)絡權(quán)重,下面開始預測需要識別的交通標志圖片。打開"windows.py"這個代碼,直接點擊運行,結(jié)果如下所示:
運行成功后得到一個pyqt5的GUI界面,然后我們就可以通過這個GUI操作去預測我們項目預測的水果圖片啦!
Flask網(wǎng)頁端展示
打開"app.py"這個代碼,直接點擊運行,結(jié)果如下所示:
點擊控制臺輸出的鏈接,或者自己打開瀏覽器輸入http://127.0.0.1:5000這個網(wǎng)址。即可跳轉(zhuǎn)到flask前端頁面,然后自行做交互,上傳圖片,點擊預測,模型會輸出每一個類別的置信度,并按照從大到小的降序排列展示在網(wǎng)頁上,展示在最上面的類別即為最終模型的識別結(jié)果。文章來源:http://www.zghlxwxcb.cn/news/detail-448886.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-448886.html
到了這里,關(guān)于Python交通標志識別基于卷積神經(jīng)網(wǎng)絡的保姆級教程(Tensorflow)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!