創作內容

2 GP

在windows10 建置RCNN的環境

作者:馬盈│2019-12-13 17:02:53│巴幣:1,002│人氣:578
系統環境:windows10 (版本1903 OS組建18362.535)
CPU: i5-7600 (CPU 務必要有支援AVX 指令集)
顯示卡:GeForce GTX 1060 ARMOR 6G OCV1
程式IDE:VS Code
虛擬環境:anaconda
使用程式語言:python 3.6.7
事前準備相關套件:c++ 可轉發套件update3

(若有錯誤,確認是否有比2015 c++轉發套件更新的轉發套件,若有先解除安裝)
讓GPU算圖的相關工具
cuda toolkit 9.0 cudnn
------------------- 環境建置 -----------------
第一步:
安裝 anaconda 在window10中 (建議可以將anaconda 加入環境變數中後面會比較方便)
第二步:
   會有好幾個安裝包 需要從第1個慢慢安裝到最後一個安裝包,跟著順序,建議最好不要改路徑。
cudnn :
下載下來會是一個壓縮檔,壓縮檔裡面的 bin、include、lib 放到
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\
下(如果前面安裝toolkit時沒有變更路徑的話)
1.設定cudnn的環境變數
搜尋列找"編輯系統環境變數" ,點選環境變數,選擇系統變數下面的PATH新增加
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\libnvvp
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin
這三個是讓你的系統知道哪邊可以找到去控制GPU的工具的設定。
第三步
  開啟CMD輸入 --name 後面是你的虛擬環境名稱
  conda create --name tensorflow python=3.6
  他就會開始自動安裝環境在電腦中
  安裝完成後CMD前面沒有( 你虛擬環境名稱) 的話CMD
    activate [你虛擬環境名稱]
  
  pip install tensorflow-gpu==1.12
安裝完成後,測試是否有安裝成功。
CMD 進入 python shell環境中
python
   >>import tensorflow as tf
   >>tf.__version__
這裡正常來說應該會卡一下如果是安裝失敗會跳錯誤訊息
這樣代表tensorflow-gpu函式庫可以正常import 來使用了
---------------------------------虛擬環境的環境配置--------------------------
使用RCNN
第一步 先安裝將會用到的函式庫
conda install -c anaconda protobuf
pip install pillow
pip install lxml
pip install Cython
pip install contextlib2
pip install jupyter
pip install matplotlib
pip install pandas
pip install opencv-python
以上套件
最後:

設置環境變數
(tensorflow) C:\Users\kevin>set PYTHONPATH=C:\tensorflow4\models;C:\tensorflow4\models\research;C:\tensorflow4\models\research\slim
!!!!!注意 必須每次開起虛擬環境的時候就設置 !!!!!
-----------------------------------------
第四步:利用tensorflow的模型進行遷移學習
到tensorflow 官方github models 下載所有的東西 tensorflow/models
我是直接在C:\ 下面創建一個資夾,將上面下載的資料放到裡面去。
像是這樣
主要會用到的資料夾位置 : models\ research \ object_detection

再去另一個個人的github 下載可以訓練模型用的工具 ,本文也是基於他的文章寫成的。
把下載來的所有資料夾放進去models裡面

資料夾差不多會長成這樣

由於 window上安裝 tensorflow API 不能適用 因此要對 Protobufs 檔案做編譯
(tensorflow)C:\> cd C:\tensorflow1\models\research  

protoc --python_out=. .\object_detection\protos\anchor_generator.proto .\object_detection\protos\argmax_matcher.proto .\object_detection\protos\bipartite_matcher.proto .\object_detection\protos\box_coder.proto .\object_detection\protos\box_predictor.proto .\object_detection\protos\eval.proto .\object_detection\protos\faster_rcnn.proto .\object_detection\protos\faster_rcnn_box_coder.proto .\object_detection\protos\grid_anchor_generator.proto .\object_detection\protos\hyperparams.proto .\object_detection\protos\image_resizer.proto .\object_detection\protos\input_reader.proto .\object_detection\protos\losses.proto .\object_detection\protos\matcher.proto .\object_detection\protos\mean_stddev_box_coder.proto .\object_detection\protos\model.proto .\object_detection\protos\optimizer.proto .\object_detection\protos\pipeline.proto .\object_detection\protos\post_processing.proto .\object_detection\protos\preprocessor.proto .\object_detection\protos\region_similarity_calculator.proto .\object_detection\protos\square_box_coder.proto .\object_detection\protos\ssd.proto .\object_detection\protos\ssd_anchor_generator.proto .\object_detection\protos\string_int_label_map.proto .\object_detection\protos\train.proto .\object_detection\protos\keypoint_box_coder.proto .\object_detection\protos\multiscale_anchor_generator.proto .\object_detection\protos\graph_rewriter.proto .\object_detection\protos\calibration.proto .\object_detection\protos\flexible_grid_anchor_generator.proto

對 object_detection 資料夾裡面的 protos 資料夾裡 的所有副檔名為 .proto 的資料做編譯
會在 protos 資料夾裡面創建一個 XXX_pb2.py 的檔案
(tensorflow) C:\tensorflow5\models\research>python setup.py build
(tensorflow) C:\tensorflow5\models\research>python setup.py install

tensorflow detection model zoo 下載 faster_rcnn_inception_v2_coco
這裡使用別人訓練好的模型來做遷移學習,其他模型也都可以使用,這裡選一個比較快速的模型。
下載好的模型,解壓縮後放到
C:\tensorflow5\models\research\object_detection

-----------  訓練資料處裡 --------------
找到你要的圖片資料,下載labelimg(可以裝在anaconda裡)  (exe版本)
## RCNN讀取的檔案是XML格式檔案
## YOLO讀取的檔案是TXT格式檔案
開啟labelImg

將你想要框起來的部分框起來並說明那是甚麼
務必不要將所有照片全部拿下去訓練,請分成test:train=2:8 之類的比例去做訓練,才能測試訓練出來的結果是否優良。
將圖片和對應的XML放到 C:\tensorflow5\models\research\object_detection\images
/images
|--train
|- image1.jpg
|- image1.xml
|- ...
|--test
|- image2.jpg
|- image2.xml
|- ...

(tensorflow) C:\tensorflow5\models\research\object_detection>python xml_to_csv.py
會再 images 創建 test.csv 和 train.csv

開啟在 C:\tensorflow5\models\research\object_detection 下的 generate_tfrecord.py 編輯
row_label== ' [ 輸入你要偵測的種類名稱] '

建置 TFrecord檔案
(tensorflow) C:\tensorflow5\models\research\object_detection>
python generate_tfrecord.py --csv_input=images\train_labels.csv --image_dir=images\train --output_path=train.record
Successfully created the TFRecords: C:\tensorflow5\models\research\object_detection\train.record

(tensorflow) C:\tensorflow5\models\research\object_detection>
python generate_tfrecord.py --csv_input=images\test_labels.csv --image_dir=images\test --output_path=test.record
Successfully created the TFRecords: C:\tensorflow5\models\research\object_detection\test.record
建置 標籤地圖
必須使用notepad++ or VSCORD
C:\tensorflow5\models\research\object_detection\training 下建立一個 labelmap.pbtxt
labelmap.pbtxt 內容
依造這樣的格式輸入後儲存
item {
  id: 1
  name: 'nine'
}

這裡的 id 順序必須和上面 generate_tfrecord.py 的retrun 數字一致,否則結果出來會出錯。
---------------------------------------- 訓練模型配置------------------------------
C:\tensorflow5\models\research\object_detection\samples\configs 複製一份
faster_rcnn_inception_v2_pets.config
C:\tensorflow5\models\research\object_detection\training
接下來的更動請都改 training 裡的 config 檔
第 10 行 請修改你要偵測種類的數量 像是上面的例子 有6種
地 12、13行 請輸入圖片的最小長度和圖片的最大長度
第 110行的路徑 修改為
C:/tensorflow5/models/research/object_detection/faster_rcnn_inception_v2_coco_2018_01_28/model.ckpt
num_steps 是訓練的步數
第 126 行 input_path 輸入
C:/tensorflow5/models/research/object_detection/train.record
第 128 行 label_map_path 輸入
C:/tensorflow5/models/research/object_detection/training/labelmap.pbtxt
第 140 行 input_path 輸入
C:/tensorflow5/models/research/object_detection/test.record
第 142 行 label_map_path 輸入
C:/tensorflow5/models/research/object_detection/training/labelmap.pbtxt
儲存
---------------------------------------開始訓練!!!---------------------------
(tensorflow)C:\tensorflow5\models\research\object_detection\ >
python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config

# 如果跳出 python: can't open file 'train.py': [Errno 2] No such file or directory  只要去 object_detection\legacy\ 下找到 train.py 複製一份到object_detection就可以了

當訓練到20萬步時就會自動停下來(不過這樣基本都要花到8、9小時左右)
凍結模型:
(tensorflow)C:\tensorflow5\models\research\object_detection\ >
python export_ inference_graph.py --input_type image_tensor --pipeline_config_path training/faster_rcnn_inception_v2_pets.config --trained_checkpoint_prefix training/model.ckpt-XXXX --output_directory inference_graph
XXXX基本就是20萬除非你想要用你自己設定的其他步數檔
會在inference_graph 儲存一個將所有不需要的節點都刪掉的模型檔
最後結果
將要測試的照片存放到 C:\tensorflow5\models\research\object_detection\
(tensorflow)C:\tensorflow5\models\research\object_detection\ >
python Object_detection_image.py
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4619973
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 3 篇留言

速趴pe吉do
直接下拉

12-23 21:27

馬盈
????

12-24 16:23

速趴pe吉do
推 未來的上課教材

01-02 09:10

我要留言提醒:您尚未登入,請先登入再留言

2喜歡★eogist5577 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:docker 筆記... 後一篇:黑沙製船小工具...

追蹤私訊切換新版閱覽

作品資料夾

Waterfall10絕大部份巴友
魔幻小說《九芒記》第 162 章「一場大捷」發佈囉!歡迎瀏覽 ~看更多我要大聲說昨天22:01


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】