如何在 Windows10 下运行 Tensorflow 的目标检测?

Posted 北桥苏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 Windows10 下运行 Tensorflow 的目标检测?相关的知识,希望对你有一定的参考价值。

前言

        看过很多博主通过 Object Detection 实现了一些皮卡丘捕捉,二维码检测等诸多特定项的目标检测。而我跟着他们的案例来运行的时候,不是 Tensorflow 版本冲突,就是缺少什么包,还有是运行官方 object_detection_tutorial 不展示图片等等问题。

        在看过一个国外博主例子,我也通过 Tensorflow-GPU1.10.0 运行了官方例子,既然要使用 GPU 则需要把 CUDA 先配置好,上一篇文章有特别详细介绍到。而这里就捋一下在运行过程遇到的种种问题。

环境

1. windows10 的 64 位电脑

2. 显卡 GeForce GTX 750 Ti

3. Python 3.6.13

4. Tensorflow-GPU 1.10.0

5. Cuda 9.0.176

6. Cudnn7.0.5

环境搭建

1.  安装 Python 3.6.13 环境

由于之前我有其他项目用了高版本的 Py,这里我就用了 Anconda3 的 conda 创建一个虚拟环境,这里的 conda 的 bin 目录需要加到环境变量中。

1.1. 查看环境列表

输入 conda env list,就可以列出以往所有的环境名了,也是为了避免后面太多相似

1.2. 创建新环境并进入

conda create -n object_dection python=3.6 && conda activate object_dection

1.3. 安装 Tensorflow-gpu

因为以上通过 conda 创建了新环境也安装了 pip,所以只需要输入 pip install tensorflow-gpu==1.10.0,在下载过程中可能会中断,要多试几次。

1.4. 安装其他依赖

conda install -c anaconda protobuf
pip install pillow
pip install lxml
pip install Cython
pip install jupyter (时间较长,可能会中断)
pip install matplotlib
pip install pandas
pip install opencv-python (安装是可能会被杀毒软件误报)

资源下载

1. 下载与 TF 1.10.0 对应的模型库

以下是对应关系,我这里就选择 ”tensorflow/models/tree/b07b494e3514553633b132178b4c448f994d59df“,下载完毕后放入一个盘符下即可。

TensorFlow版本   GitHub 模型存储库提交
TF v1.7			https://github.com/tensorflow/models/tree/adfd5a3aca41638aa9fb297c5095f33d64446d8f
TF v1.8			https://github.com/tensorflow/models/tree/abd504235f3c2eed891571d62f0a424e54a2dabc
TF v1.9			https://github.com/tensorflow/models/tree/d530ac540b0103caa194b4824af353f1b073553b
TF v1.10		https://github.com/tensorflow/models/tree/b07b494e3514553633b132178b4c448f994d59df
TF v1.11		https://github.com/tensorflow/models/tree/23b5b4227dfa1b23d7c21f0dfaf0951b16671f43
TF v1.12		https://github.com/tensorflow/models/tree/r1.12.0
TF v1.13		https://github.com/tensorflow/models/tree/r1.13.0
最新版本	 	  https://github.com/tensorflow/models

2. 下载 TF 的目标检测模型

下载地址在模型库的 research/object_detection/g3doc/tf1_detection_zoo.md 里,模型选择就很有讲究了,若要在计算能力较差的设备上 (智能手机、树莓派、FPGA 等嵌入式系统中),使用 SSD-MobileNet 系列,若在工作站上训练检测可使用 RCNN 系列。这里选择的是 ”Faster-RCNN-Inception-V2“,下载完毕后放入上面模型库里的 object-detection-model\\research\\object_detection 下面。

3. 下载国外博主提供的 demo

地址:https://github.com/EdjeElectronics/TensorFlow-Object-Detection-API-Tutorial-Train-Multiple-Objects-Windows-10#3-gather-and-label-pictures,下载后解压放入 object-detection-model\\research\\object_detection。

环境配置

1. 配置模型的环境变量

需要将 \\models, \\models\\research, and \\models\\research\\slim 三个路径加入到 path 的环境变量中。

2. 编译 Protobuf 文件

命令的目录切换到 "object-detection-model\\research” 下,通过前面 conda 安装的 protobuf 将.proto 编译成 name_pb2.py 文件,输入以下命令。

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

3. 安装 Object-Detection

继续在 “object-detection-model\\research” 目录下,分别运行下面两个命令,并且会多出几个文件夹。

python setup.py build
python setup.py install

验证与运行

为了验证 Object Detection 是否安装成功,也为了运行目标检测官方案例。通过前面安装的 jupyter,执行以下命令,前提是命令目录需要切换到 “object-detection-model\\research\\object_detection”。

jupyter notebook object_detection_tutorial.ipynb

运行后默认会打开浏览器,然后打开脚本,并能一次一步地浏览代码部分。可以通过单击上面工具栏中的 “运行” 按钮逐步浏览每个部分。当小节旁边的 “In [*] 文本中的数字出现时,该节将完成运行 (例如 “In [1]”)。(注意:其中有一步是从 GitHub 上下载 ssd_mobilenet_v1 模型,大约 74M,需要多等一会,程序是在执行的,并不是死机或出错。静等 In [*] 中的 * 变成数字)。但是当我在点击每段代码时,就有以下几个报错。

1. Could not find 'cudart64_90.dll'. TensorFlow requires that this DLL be installed in a directory that
原因:本地电脑没有 CUDA 的 cudart64_90.dll 文件,当安装 CUDA 后还报错,原来是启动窗口没有关闭,命令找的是旧环境地址
方法:重启打开该 conda 环境,再重新启动 jupyter 命令。

2. Please upgrade your tensorflow installation to v1.4.* or later
原因:反复确认过在该环境下安装的是 TF1.10.0,目前不知道什么原因,以下方法虽然解决了,但是第一段代码运行还有有一些异常信息。
方法:打开 object_detection_tutorial.ipynb 文件,找到 "source", 删除或注释掉以下代码。

3. 目标检测的图片不出来。
原因:目前不知道原因,没有错误提示,我也更换过浏览器。
方法:代码运行选择了 run all,在火狐浏览器里就出来了。

4. 最后如果需要上面的下载代码,可以留言,到时候我再贴出来。

如何在调试模式下运行 wildfly,作为 Windows 上的服务?

【中文标题】如何在调试模式下运行 wildfly,作为 Windows 上的服务?【英文标题】:How can I run wildfly in debug mode, as a service on Windows? 【发布时间】:2017-09-29 06:35:21 【问题描述】:

我在 Windows 上将 Wildfly 作为服务运行。当我需要调试时,我将关闭它并通过standalone.bat -debug 启动 Wildfly。我想要的是始终打开调试开关,当它作为服务运行时?

【问题讨论】:

很抱歉复活了一个老话题,但似乎真正的调试表达式还有一个破折号,即standalone.bat --debug 【参考方案1】:

取消注释 $JBOSS_HOME/bin/standalone.conf.bat 中的 JAVA_OPTIONS 后

rem # 用于远程套接字调试的示例 JPDA 设置

设置“JAVA_OPTS=%JAVA_OPTS% -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"

启动服务。现在,您可以使用自己喜欢的 IDE 分离调试器。如果您使用的是 Eclipse,您可以切换到“调试配置”并添加一个新的远程 Java 应用程序。

【讨论】:

【参考方案2】:

我正在使用 WildFly 11 并在 bin\standalone.conf.bat (windows) 中取消注释以下行:

set "DEBUG_MODE=true"
set "DEBUG_PORT=8787"

【讨论】:

【参考方案3】:

打开命令行并使用以下调试选项设置 java 选项:

set JAVA_OPTS = -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,suspend=n,server=y

分别在 windows/linux 上运行 standalone.batstandalone.sh 来启动 wildlfy 服务

【讨论】:

以上是关于如何在 Windows10 下运行 Tensorflow 的目标检测?的主要内容,如果未能解决你的问题,请参考以下文章

教你在windows10环境下如何安装minepy并成功运行!

Windows 7 下如何配置PHP网站运行环境

Windows10系统下wsappx占用CPU资源过高?wsappx是什么?如何关闭wsappx进程?

关于Java程序在Windows下运行的疑问!

如何在windows下拥有php console - 技术问答

谁知道如何查看Windows下正在运行的程序堆栈,Linux可以用gdb,windows下该用啥