TensorFlow圖像識別(物體分類)入門教程

本文主要介紹瞭如何使用TensorFlow環境運行一個最基本的圖像分類器(Win10系統)。源碼地址https://github.com/sourcedexter/tfClassifier/tree/master/image_classification
(這個大神好像更名了,原來叫akshaypai來着)html

一.基礎概念介紹

1.物體分類的思想

物體分類,也就是訓練系統識別各個物體,如貓咪、狗狗、汽車等。TensorFlow是谷歌開發出的人工智能學習系統,至關於咱們的運行環境。python

2.神經網絡與Inception v3體系結構模型

神經網絡示意圖以下:
git

通俗了講,就是將若干個輸入,進行若干次操做(線性或者非線性),最後輸出結果。Inception v3模型是谷歌發佈的一個深層卷積網絡模型。咱們使用的retrain_new.py腳本就是使用了Inception v3模型進行一個遷移學習。github

3.訓練集、測試集和驗證集

訓練集用來訓練模型,驗證集用來驗證模型是否進行了過擬合,測試集用來測試模型的準確程度。三種圖片集的比例會對準確度產生影響。web

4.學習速率

不一樣的學習速率會致使不一樣的結果。若是速率過大,會致使準確率在訓練的過程當中不斷上下跳動,若是速率太小會致使在訓練結束前沒法到達預期準確度。網絡

二.環境搭建

1.Python環境搭建

具體的python搭建細節能夠自行百度。參考連接:
https://blog.csdn.net/lyj_viviani/article/details/51763101
這裏要注意一下版本,由於要對應後文的cuDnn庫與cuda的版本。(我用的是python 3.6.4)機器學習

2.TensorFlow環境搭建(gpu)

(1)直接pip安裝。命令:

pip install tensorflow-gpu

這樣就安裝好TensorFlow了,可是咱們還須要GPU加速,因此還須要安裝cuda和cuDnn(專門爲deep learning準備的加速庫)。學習

(2)cuda安裝

cuda v8.0安裝包下載:https://developer.nvidia.com/cuda-downloads
進行以下選擇:
測試

下載完後正常安裝就能夠了。google

(3)cuDnn庫下載

下載連接:https://developer.nvidia.com/rdp/cudnn-archive
我下載的是這個版本(cuDNN v7.0.5),這個版本要對應好cuda的版本。

下載完後解壓縮,出現以下文件夾結構:

而後將這三個文件夾下的文件分別拷貝到cuda對應的文件夾下面就好了。

到這裏還不能完整的運行,還須要配置一下環境變量:cuda安裝完成後默認的環境變量配置不對,CUDA_PATH是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0,可是這樣不能直接訪問到bin和lib\x64下的程序包,在path中加上這兩個路徑便可。

(4)測試

用以下代碼測試:

import tensorflow as tf

hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()

三.基本使用

1.數據集的收集與建立

我用的是2018全球AI挑戰賽的數據集。連接:
https://challenger.ai/datasets/lad2018
下載完後,將全部文件夾都放在一個文件夾下(我本身建立了一個叫DataSet),結構以下:

文件夾的名字就是最後輸出的分類的結果。
每個文件夾下都是圖片(不能再有子文件夾),即:

2.訓練模型

訓練模型使用retrain_new.py腳本。在命令行運行,命令格式以下:

python retrain_new.py --model_dir 存放classify_image_graph_def.pb的路徑 --image_dir 剛纔的建立的DataSet的路徑 --output_graph 產生的,pb文件的存放路徑 --output_labels 產生的output_labels.txt的 存放路徑 --how_many_training_steps 訓練步數 --learning_rate 學習速率 --testing_percentage 測試集比例 --validation_percentage 驗證集比例

示例命令:

python retrain_new.py --model_dir E:\tfclassifier\image_classification\inception --image_dir E:\tfclassifier\DataSet --output_graph E:\tfclassifier\image_classification\output_dir\output_graph.pb  --output_labels E:\tfclassifier\image_classification\output_dir\output_labels.txt --how_many_training_steps 500 --learning_rate 0.3 --testing_percentage 10 --validation_percentage 10

說明:
model_dir參數:指定了model的存放位置,就是咱們的inception文件夾
image_dir參數:指定了數據集的位置
output_graph參數:產生的output_graph.pb文件的存放路徑(後面要用)
output_labels 參數:產生的output_labels.txt的存放路徑(後面要用)
how_many_training_steps參數:訓練步數,和學習速率配合調整(我用的500)
learning_rate參數:學習速率,和訓練步數配合調整(我用的0.3,經常使用的有0.001,0.01,0.1,0.3,1,3,可本身調整嘗試一下)
testing_percentage參數:測試集比例
validation_percentage參數:驗證集比例
注意:訓練會在根目錄下生成一個tmp文件夾,存放相關文件,即:

3.測試模型

核心的文件是output_graph.pb文件(咱們訓練所產生的圖,是一個二進制文件)和output_labels.txt文件。
使用retrain_model_classifier.py腳原本測試模型。命令格式以下:
E:
cd E:\tfclassifier\image_classification(進入retrain_model_classifier.py腳本所在的目錄)
python retrain_model_classifier.py 要識別圖片的路徑
例如:
python retrain_model_classifier.py D:\test2\testPic.jpg

而後會看到一些版本信息,和輸出結果(紅框部分):

四.遇到的問題以及解答

1.版本對應問題

Python版本,cuda版本和cuDNN版本都是對應的,若是結果中出現了亂碼,很大機率是版本的問題。

2.帶參數的python腳本編寫與運行

想讓python腳本帶參數,能夠在python腳本的末尾添加以下格式的代碼:

運行時須要在python xxx.py後加上「--image_dir 參數」就能夠了。

3.測試腳本的調整

要不斷訓練、測試,不斷調整參數,直到訓練快要結束的時候,驗證比例達到穩定,而且在90以上,咱們才認爲系統較爲完善。

五.參考連接:

深度學習動手入門:GitHub上四個超棒的TensorFlow開源項目
http://www.techweb.com.cn/news/2017-07-31/2566452.shtml
Win10 TensorFlow(gpu)安裝詳解
http://www.javashuo.com/article/p-csmdhpiw-et.html
用Inception-V3模型進行圖像分類
https://blog.csdn.net/xingwei_09/article/details/79152796
谷歌機器學習速成課程
https://developers.google.cn/machine-learning/crash-course/prereqs-and-prework

相關文章
相關標籤/搜索