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


 

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

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

一.基礎概念介紹

1.物體分類的思想

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

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

神經網絡示意圖如下:

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

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

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

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加速,所以還需要安裝cudacuDnn(專門為deep learning准備的加速庫)。

2cuda安裝

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

下載完后正常安裝就可以了。

3cuDnn庫下載

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

下載完后解壓縮,出現如下文件夾結構:

然后將這三個文件夾下的文件分別拷貝到cuda對應的文件夾下面就行了。

到這里還不能完整的運行,還需要配置一下環境變量:cuda安裝完成后默認的環境變量配置不對,CUDA_PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0,但是這樣不能直接訪問到binlib\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.0010.010.10.313,可自己調整嘗試一下)
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 TensorFlowgpu)安裝詳解
https://blog.csdn.net/sb19931201/article/details/53648615
Inception-V3模型進行圖像分類
https://blog.csdn.net/xingwei_09/article/details/79152796
谷歌機器學習速成課程
https://developers.google.cn/machine-learning/crash-course/prereqs-and-prework

 轉載來源:https://www.cnblogs.com/cococok2/p/9169488.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM