Windows下如何使用Tensorflow Object Detection API
2018年01月17日 12:10:31
阅读数:1078
如果大家会使用Linux系统,就在Linux下安装TensorFlow吧,比Windows下配置环境简单多了,而且一般玩深度学习,都在Linux环境下。本文只介绍在Windows下如何配置TensorFlow和使用Object Detection API。
1 环境需要
- Windows系统
- Python 3.X
- CUDA Toolkit 8与 cuDNN V6 (记住一定要用CUDA 8 和cuDNN V6 版本,其他版本我是没有跑通)
- Object Detection 模型下载
- protoc
- 依赖库:Protobuf 2.6 / Pillow 1.0 / lxml /Jupyter notebook / Matplotlib/ Tensorflow
2 安装步骤
此处不介绍Python 环境的安装步骤,如有需要,自行查之。
2.1 CUDA Toolkit 8与 cuDNN V6
用gpu来运行Tensorflow还需要配置CUDA和cuDnn库,
2.1.1 用以下link下载win10(64bit)版本CUDA安装包,大小约为1.2G https://developer.nvidia.com/cuda-downloads
安装cuda_8.0.61_win10.exe,完成后配置系统变量,在系统变量中的CUDA_PATH中,加上三个路径, C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0(一般安装完,安装程序都会自动添加完系统环境变量)
2.1.2 用以下link下载cuDnn库 https://developer.nvidia.com/cudnn
下载解压后,为了在运行tensorflow的时候也能将这个库加载进去,我们要将解压后的文件拷到CUDA对应的文件夹下C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
2.2 Object Detection 模型下载
从github上下载模型,下载地址:https://github.com/tensorflow/models
(下载的文件名为:models-master.zip)
解压文件到磁盘指定目录,我的是E:\Tensorflow\ObjectDetection,重命名为models
(此包内包括各种内容,我们所用到的object_detection文件夹在E:\Tensorflow\ObjectDet
ection\models\research文件夹下)
2.3 protoc安装与编译
从https://github.com/google/protobuf/releases下载win版的工具,即:protoc-3.4.0-win32.zip,
解压到E:\Tensorflow\ObjectDetection目录下,生成:bin, include两个文件夹。
将bin文件夹中的【protoc.exe】放到C:\Windows\System32文件夹下,在E:\Tensorflow\Object
Detection\models\research文件夹下按住shift点击鼠标右键,打开命令窗口,输入protoc显示如下内
容就说明可以开始编译了。
Protobuf 编译,用protoc可执行文件编译目录object_detection/protos下的proto文件,生成Pyth
on文件。
- protoc object_detection/protos/*.proto --python_out=.
我们可以看见.proto文件已经被编译为了.py文件。
2.3 依赖库下载
在Python安装文件里Scripts文件下,运行运行如下命令:
# For CPU pip install tensorflow # For GPU pip install tensorflow-gpu
pip install pillow
pip install lxml
pip install jupyter
pip install matplotlib
3 运行Demo
用命令行打开jupyter notebook进行测试
打开官方提供的文件:object_detection_tutorial.ipynb运行demo
在cell中选择runAll,正常的话稍等一会儿就会有结果
运行大部分时间都是用来下载模型的,此demo不需要驯良数据,模型是训练好的,运行大概需要10分钟左右。
运行结果:
4 修改模型,运行自己数据
Speed表示速度,COCO mAP表示在COCO数据集上的平均准确率,第一个ssd_mobilenet就是我们默认使用的pre-train模型
-
# What model to download.
-
MODEL_NAME = 'ssd_mobilenet_v1_coco_11_06_2017'
-
#MODEL_NAME = 'faster_rcnn_resnet101_coco_11_06_2017'
-
#MODEL_NAME = 'ssd_inception_v2_coco_11_06_2017'
-
MODEL_FILE = MODEL_NAME + '.tar.gz'
-
DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/'
-
# For the sake of simplicity we will use only 2 images:
-
# image1.jpg
-
# image2.jpg
-
# If you want to test the code with your images, just add path to the images to the TEST_IMAGE_PATHS.
-
PATH_TO_TEST_IMAGES_DIR = 'test_images'
-
TEST_IMAGE_PATHS = [ os.path.join(PATH_TO_TEST_IMAGES_DIR, 'image{}.jpg'.format(i)) for i in range(1, 3) ]
在此处修改模型和数据。
运行结果:
faster_rcnn_resnet101_coco 模型:
ssd_mobilenet_v1_coco 模型:
ssd_inception_v2_coco 模型: