網上的方法試了一圈,出現過兩個錯誤:
1. ImportError: No module named 'object_detection'
2. ImportError: cannot import name 'string_int_label_map_pb2'
第一個錯誤,是因為沒有安裝tensorflow\models造成的,
第二個錯誤,是因為沒有正确編譯models\research\object_detection\protos中的.proto檔案造成的。
接下來是我的安裝步驟。
1 下載下傳models

2 配置環境變量
打開Anaconda終端,輸入以下指令:
set PYTHONPATH=D:\ProgramData\Anaconda3\envs\tensorflow-gpu\Lib\site-packages\tensorflow\models;D:\ProgramData
\Anaconda3\envs\tensorflow-gpu\Lib\site-packages\tensorflow\models\research;D:\ProgramData\Anaconda3\envs\tensorflow-
gpu\Lib\site-packages\tensorflow\models\research\slim
注:1. 每次啟動終端都要配置環境變量
2. 我的models存放位址是:D:\ProgramData\Anaconda3\envs\tensorflow-gpu\Lib\site-packages\tensorflow\models
環境變量配置的是models,models\research和models\research\slim的路徑
3 編譯Protobufs
3.1 安裝protoc
1. 下載下傳3.4版本的potoc,如何不是3.4版本,可能報錯
2. 解壓後有兩個檔案夾:
将bin檔案夾下的protoc.exe拷貝到C:\Windows\System32中
3.2 編譯.protoc檔案
1. 進入models\research檔案夾:
2. 輸入以下指令:
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
注:不可輸入指令protoc object_detection/protos/*.proto --python_out=.
因為在這裡.proto檔案必須寫完整,否則會報錯
4 安裝API
在models\research目錄下:
1. 輸入python setup.py build
2. 輸入python setup.py install
5 測試demo
1. 打開models\research\object_detection目錄
2. 輸入指令 jupyter notebook object_detection_tutorial.ipynb
3. 運作
4. 結果
參考
1. https://zhuanlan.zhihu.com/p/29215867
2. https://github.com/EdjeElectronics/TensorFlow-Object-Detection-API-Tutorial-Train-Multiple-Objects-Windows-10#2-set-up-tensorflow-directory-and-anaconda-virtual-environment