python利用tensorflow识别图形_如何高效的利用tensorflow+Object DetectionAPI训练识别自己的数据集...

一、object_detection环境初步测试

参考:

Win10使用TensorFlow调用object_detection API​blog.csdn.net
203bf46fc31c7fd2c0a0a8cbd04e2800.png
Tensorflow object_detection API 目标检测环境搭建​blog.csdn.net
bd650ab6e56485873d6a3f53b18c9bca.png

Part 1.配置运行环境

Windows10系统+Anaconda 3.5

在anaconda创建python3.5的环境

1.1 通过anaconda 安装tensorflow 命令为conda install tensorflow-gpu-1.10.0会自动配置CUDA和cuDNN对应版本。

1.2如果安装最新tensorflow-gpu版本则需要配置相应版本的CUDA和cuDNN,

https://www.tensorflow.org/install/source#tested_build_configurations中显示了哪个版本的TensorFlow需要哪个版本的CUDA和cuDNN。​www.tensorflow.org

1.3 test gpu是否工作

代码:

import tensorflow as tf

import numpy as np

a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')

b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')

c = tf.matmul(a, b)

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

print(sess.run(c))

成功截图:

fa4cb6d784e90676d0d47a08fdcea7df.png

Part 2:安装object_detection API

2.1.配置好TensorFlow

2.2.下载好TensorFlow模型源码:tensorflow/models

E盘文件夹下存放,research文件夹下为各个模块接口。之后在环境变量中增加三条变量:

E:TensorFlow models

E:TensorFlow models research

E:TensorFlow models researchslim

Part3:安装其他依赖的包

(tensorflow) C:> pip install pillow

(tensorflow) C:> pip install lxml

(tensorflow) C:> pip install Cython

(tensorflow) C:> pip install contextlib2

(tensorflow) C:> pip install jupyter

(tensorflow) C:> pip install matplotlib

(tensorflow) C:> pip install pandas

(tensorflow) C:> pip install opencv-python

Part4:下载Protobuf

4.1下载地址:Releases · protocolbuffers/protobuf

4.2选择 protoc-3.4.0-win32.zip 版本进行下载。(python3.5+ protoc-3.4.0-win32.zip测试成功)

解压后在bin文件夹中可以找到一个: protoc.exe

将这个文件夹加入到环境变量中:F:TensorFlow bin

之后在CMD(管理员)中通过cd找到这个文件夹,运行一下 protoc.exe ,但是会报错说需要输入文件。

退出这个文件夹,cd找到models中的research目录下,执行:

然后将以下命令复制并粘贴到命令行中,然后按Enter键:

protoc --python_out=. .object_detectionprotosanchor_generator.proto .object_detectionprotosargmax_matcher.proto .object_detectionprotosbipartite_matcher.proto .object_detectionprotosbox_coder.proto .object_detectionprotosbox_predictor.proto .object_detectionprotoseval.proto .object_detectionprotosfaster_rcnn.proto .object_detectionprotosfaster_rcnn_box_coder.proto .object_detectionprotosgrid_anchor_generator.proto .object_detectionprotoshyperparams.proto .object_detectionprotosimage_resizer.proto .object_detectionprotosinput_reader.proto .object_detectionprotoslosses.proto .object_detectionprotosmatcher.proto .object_detectionprotosmean_stddev_box_coder.proto .object_detectionprotosmodel.proto .object_detectionprotosoptimizer.proto .object_detectionprotospipeline.proto .object_detectionprotospost_processing.proto .object_detectionprotospreprocessor.proto .object_detectionprotosregion_similarity_calculator.proto .object_detectionprotossquare_box_coder.proto .object_detectionprotosssd.proto .object_detectionprotosssd_anchor_generator.proto .object_detectionprotosstring_int_label_map.proto .object_detectionprotostrain.proto .object_detectionprotoskeypoint_box_coder.proto .object_detectionprotosmultiscale_anchor_generator.proto .object_detectionprotosgraph_rewriter.proto .object_detectionprotoscalibration.proto .object_detectionprotosflexible_grid_anchor_generator.proto

成功截图:

689ed1850483b21e9c936be715798f3b.png

这将从object_detectionprotos文件夹中的每个name.proto文件创建一个name_pb2.py文件。

4.3测试:输入python object_detection/builders/model_builder_test.py

注意:如果出现 ImportError: No module named 'object_detection' 这种问题

2af3da779742c7d8c1c44737cd2e75d1.png

1)在你的Anaconda3安装路径 /Anaconda3/Lib/site-packages 下新建一个 tensorflow_model.pth 文件

(我这里的安装路径是C:ProgramDataAnaconda3Libsite

2)在新建的 tensorflow_model.pth 文件中写入以下的路径:

D:tensorflowmodelsresearch

D:tensorflowmodelsresearchslim

OK: Succeed

fb5036305a6b66b60a53e4b480ad45a7.png

Part 5:例程测试API object_detection_tutorial.ipynb

在CMD中找到models-master文件夹下,路径为:E:TensorFlow models

在该文件夹下输入: jupyter-notebook

来调用jupyter-notebook环境,之后会在浏览器中出现

顺着researchobject_detection找到里边的object_detection_tutorial.ipynb,运行。就会出现另外一个界面:

e67ca1aec7a83b2646da4d509b99d4d2.png

按【shift】+【enter】一步一步的向下运行,运行到最低端的时候,等待20s,就会出现运行结果,如下所示:

d3393eda77ab1799d90681d993bef997.png

17b1a2f1d112dcaed56247027f46b955.png

二、tensorflow Object DetectionAPI训练识别自己的数据集

关于object_detection环境初步测试参考上一篇https://blog.csdn.net/HRFarsighted/article/details/99440904

Part1.制作样本图片

1. 选择检测对象为扑克牌(nine, ten, jack, queen, king, and ace )六个Class

2. 下载labelImg tzutalin/labelImg 进行标签的制作

e6a3c63e1fcffcc58591d4c8c88ad938.png

3. 把样本分别放入 object_detection images test 和 object_detection images test目录,将其中80%移动到 object_detection images train目录。确保 test和 train目录中有各种图片。

Part2. 生成训练数据

标记图像后,就可以生成TFRecords作为TensorFlow训练模型的输入数据。本教程使用Dat Tran的Raccoon Detector数据集中的xml_to_csv.py和generate_tfrecord.py脚本。

1. 图像.xml数据将用于创建包含列车和测试图像的所有数据的.csv文件,输入命令:

(tensorflow1)E:2D+3Ddetection2Ddetectiontensorflowmodelsresearchobject_detection > python xml_to_csv.py

这将在 object_detection images文件夹中创建train_labels.csv和test_labels.csv文件。

2. 接下来,在文本编辑器中打开generate_tfrecord.py文件。使用您自己的标签贴图替换从第31行开始的标签贴图,配置labelmap.pbtxt文件时,将使用相同的编号分配:如下

4 def class_text_to_int(row_label):

5. if row_label == 'nine':

6. return 1

7. elif row_label == 'ten':

8. return 2

9. elif row_label == 'jack':

10. return 3

11. elif row_label == 'queen':

12. return 4

13. elif row_label == 'king':

14. return 5

15. elif row_label == 'ace':

16. return 6

17. else:

18. None

4. 通过从 object_detection文件夹发出以下命令来生成TFRecord文件:

python generate_tfrecord.py --csv_input=imagestrain_labels.csv --image_dir=imagestrain --output_path=train.record

python generate_tfrecord.py --csv_input=imagestest_labels.csv --image_dir=imagestest --output_path=test.record

5. 它们在 object_detection中生成train.record和test.record文件。这些将用于训练新的物体检测分类器。

d34c39dcd3407c76e12d99468fee36c7.png

Part3. .创建标签映射并配置训练

1. 创建标签映射

标签贴图通过定义类名到类ID号的映射来告诉培训师每个对象是什么。使用文本编辑器创建新文件,并将其保存为C: tensorflow1 models research object_detection 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'

}

2. 配置训练

必须配置对象检测训练管道。它定义了哪个模型以及将用于培训的参数,在文件夹下E:2D+3Ddetection2Ddetectiontensorflowmodelsresearchobject_detectionsamplesconfigs 将faster_rcnn_inception_v2_pets.config文件复制到 object_detection training目录中。

对faster_rcnn_inception_v2_pets.config文件进行以下更改。注意:必须使用单个正斜杠(非反斜杠)输入路径,否则TensorFlow会在尝试训练模型时出现文件路径错误!此外,路径必须是双引号(“),而不是单引号(')。

• 第9行。将num_classes更改为您希望分类器检测的不同对象的数量。对于上面的篮球,衬衫和鞋子探测器,它将是num_classes:3。

• 第106行。将fine_tune_checkpoint更改为:

o fine_tune_checkpoint“E:/2D+3Ddetection/2Ddetection/tensorflow1/models/research/object_detection /faster_rcnn_inception_v2_coco_2018_01_28/model.ckpt”

• 第123和125行。在train_input_reader部分中,将input_path和label_map_path更改为:

o input_path“E:/2D+3Ddetection/2Ddetection/tensorflow1/models/research/object_detection /train.record”

o label_map_path“E:/2D+3Ddetection/2Ddetection/tensorflow1/models/research/object_detection /training/labelmap.pbtxt”

• 第130行。将num_examples更改为 images test目录中的图像数。

• 第135行和第137行。在eval_input_reader部分中,将input_path和label_map_path更改为:

o input_path“E:/2D+3Ddetection/2Ddetection/tensorflow1/models/research/object_detection /test.record”

o label_map_path“E:/2D+3Ddetection/2Ddetection/tensorflow1/models/research/object_detection /training/labelmap.pbtxt”

完成更改后保存文件。完成配置训练环境!!!

Part4.进行训练

将train.py从/ object_detection / legacy移动到/ object_detection文件夹,然后继续执行以下步骤。输入以下命令以开始培训:

python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config

17422329cab2c4f40307945cd5cf38f5.png

***在此阶段遇到的常见问题***

1.输入训练命令出现 AttributeError: module 'tensorflow' has no attribute 'init_scope'报错

原因:由于tensorflow-gpu版本不匹配,进行升级,注意升级后CUDA版本需要对应,否则不能使用GPU训练。

2. ImportError:无法导入名称'preprocessor_pb2'

mportError:无法导入名称'string_int_label_map_pb2'(或与其他pb2文件类似的错误)

当尚未编译protobuf文件(在本例中为preprocessor.proto)时会发生这种情况。重新运行步骤2f中给出的protoc命令。检查 object_detection protos文件夹以确保每个name.proto文件都有一个name_pb2.py文件。

3. tensorflow-gpu1.14.0配置相应的CUDA

下载如下两个安装包

23a21965b8f6436c5e9a7bb453c1df3d.png

安装成功cuda后将cuDNN解压。将解压出来的三个文件夹下面的文件放到对应的CUDA相同文件夹下。

b46bd8da43ede4a2efb9fd9f7fda4471.png

CUDA默认安装路径:C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0

添加文件后如下:

022b3b9a5e76e34f57830ca01c460f30.png

以上完成之后把以下四个路径加入到环境变量中:

C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0bin

C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0libnvvp

C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0lib

C:Program FilesNVIDIA GPU Computing Toolkit

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值