訓練數據 windows
https://www.youtube.com/watch?v=Rgpfk6eYxJA
興奮的發現我的電腦也支持GPU 哈哈 可以安裝 GPU版的了。。。
1、安裝TensorFlow-GPU版本
pip install --upgrade --ignore-installed tensorflow-gpu
2、下載models
https://github.com/tensorflow/models/tree/master/research/object_detection
選擇模型下載 這里選擇Faster-Rcnn-Inception-V2-coco
這個在電腦運行快 解壓 后放入 剛才下載的models中的
models\research\object_detection 下
接著 下載
同樣放入這個文件夾下 最后是這樣的
不對 事實證明了 我的筆記本不支持 GPU 因為沒有NVIDIA 我曹 我剛才升級了 怎么搞。
更麻煩的事情來了 我的tensorflow 打不開了導入不了了,我曹 一直報錯 奶奶的 這怎么搞 哪里不兼容
還是往下走吧
將 object_detection 中的 training 中的刪除,inference_graph 中刪除 ,images 中的 test_labels.csv train_labels.csv 刪除,test,train中的文件也刪除吧
3、管理員身份打開anaconda prompt
conda create -n tensorflow1 pip python=3.5
#啟動虛擬環境
activate tensorflow1
#安裝tensorflow
pip install --ignore-installed --upgrade tensorflow
#如果是GPU
pip install --ignore-installed --upgrade tensorflow-gpu #由于我出錯了 我只好 不用GPU了
下面安裝
(tensorflow1) C:\> conda install -c anaconda protobuf
(tensorflow1) C:\> pip install pillow
(tensorflow1) C:\> pip install lxml
(tensorflow1) C:\> pip install Cython
(tensorflow1) C:\> pip install jupyter
(tensorflow1) C:\> pip install matplotlib
(tensorflow1) C:\> pip install pandas
(tensorflow1) C:\> pip install opencv-python
添加環境
set PYTHONPATH=D:\work\nerve_network\tensorflow1\models;D:\work\nerve_network\tensorflow1\models\research;D:\work\nerve_network\tensorflow1\models\slim
接著
set PATH=%PATH%;PYTHONPATH
#查看
echo %PATH%
echo %PYTHONPATH%
修改 protobuff 中 .proto后綴 為 _pb2.py
cd D:\work\nerve_network\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
下面執行
python setup.py build
python setup.py install
測試
cd object_detection
jupyter notebook object_detection_tutorial.ipynb
一步步運行代碼 最后出來圖片被識別 需要一段時間等等
4、建立測試數據
圖片越多越好, 每張照片200kb之內,像素720*1280以下,
使用resizer.py 修改照片大小
照片準備好了后,將20%放入\object_detection\images\test ,
80%放入\object_detection\images\ train
標注圖片生成 xml 文件 每一個標注
python sizeChecker.py --move
#檢測 標注是否正確
python xml_to_csv.py
#生成CSV文件
打開 generate_tfrecord.py 修改 31行
# TO-DO replace this with label map
def class_text_to_int(row_label):
if row_label == 'nine':
return 1
elif row_label == 'ten':
return 2
elif row_label == 'jack':
return 3
elif row_label == 'queen':
return 4
elif row_label == 'king':
return 5
elif row_label == 'ace':
return 6
else:
return None
下面生成 TFRecord 文件
python generate_tfrecord.py --csv_input=images\train_labels.csv --image_dir=images\train --output_path=train.record
python generate_tfrecord.py --csv_input=images\test_labels.csv --image_dir=images\test --output_path=test.record
5、創建 label map 設置training
cd data 查看pbtxt格式 將下面數據保存到 training文件中
#新建 labelmap.pbtxt
#添加下面數據
item {
id: 1
name: 'nine'
}
item {
id: 2
name: 'ten'
}
item {
id: 3
name: 'jack'
}
item {
id: 4
name: 'queen'
}
item {
id: 5
name: 'king'
}
item {
id: 6
name: 'ace'
}
最后配置
進入 object_detection\samples\con figs 中 將
faster_rcnn_inception_v2_pets.config 復制到
\object_detection\training 中 接著打開
#注意 / 與 \不同 tensorflow 識別的是forward slash /,
#9行 class 改成你的幾類數字
#110行 修改地址
fine_tune_checkpoint : "D:/work/neerve_network/tensorflow1/models/research/object_detection/faster_rcnn_inception_v2_coco_2018_01_28/model.ckpt"
#126行
input_path:"D:/work/neerve_network/tensorflow1/models/research/object_detection/train.record"
#128行
label_map_path: "D:/work/neerve_network/tensorflow1/models/research/object_detection/training/labelmap.pbtxt"
#132行
num_examples 是\images\test 中的test圖片數量
#140行
input_path : "D:/work/neerve_network/tensorflow1/models/research/object_detection/test.record"
#142行
label_map_path: "D:/work/neerve_network/tensorflow1/models/research/object_detection/training/labelmap.pbtxt"
6、訓練
python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config
這里又出錯了 兩個,第一個沒有train.py 文件 我找到原文 下面很多評論 在legacy 中,于是復制到了上一層;接著又出現nets找不到,于是又到處找,最后在下面 找到辦法,就行復制slim/nets 與employment 到 sitepackages中即可。
Follow these steps to solve your problem:
1)Go to your "C:\tensorflow1\models\research\slim"
2) Copy files that are called 'nets' and 'deployment'.
3) Paste them at your 'site-packages'. To know where "site-packages" is, go back to your CMD and see the error. The error shows a path that looks like this "C:\Users\ .....(you might have something different here)..... \tensorflow1\lib\site-packages\.....(bla bla bla)....". Copy it until '\site-packages' ONLY.
4) Paste the copied path to your File Explorer. This will bring you to the '\site-packages'
5) Paste your 'nets' and 'deployment' files there. DONE.
查看 新建一個prompt 后臺
cd research\object_detection
tensorboard --logdir=training
ip:6006 #查看
三個小時過去了
7、生成 inference graph
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
#其中 XXX是 training中的highest-numbered.ckpt
這里生成 a frozen_inference_graph.pb 在文件夾\object_detection\inference_graph 中,里面包含著檢測分類器 classifier
8、如何使用了
#調查后臺
idle
#修改 object_detection_webcam 中的num_class 為種類數