TensorFlow:Object_Detection_API在Windows10上的配置
2017-11-02 21:46
706 查看
安装
假设已配置完tensorflow,并安装好Anaconda3-4.2.0(此版本为python3.5)
从github下载models
tensorflow/models
Protobuf 编译
protobuf下载
我下载的版本是protoc-3.3.0-win32.zip,解压后将bin文件夹中的【protoc.exe】放到
在models目录下shift+右键打开Powershell窗口,输入:
2
不报错即可
测试
由于电脑中同时有Anaconda2与Anaconda3,在models目录下输入
进入object_detetion中打开【object_detection_tutorial.ipynb】,无法运行,此时的kernel是python2,而windows只有python3.5的tensorflow。如果你的电脑只有python3.5,那么直接run all就可以看到结果。或者将Anaconda3的jupyter-notebook的工作空间变换到models目录下。
这里我用了另一种方法:
新建一个【object_detection_tutorial.py】,将.ipynb中的代码复制到.py中,然后在spyder中运行。以下是代码。功能是取object_detection\test_images中的图片:image1和image2,做目标检测。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
结果
主要时间用于下载模型,目标识别还是蛮快的。
一些细节
1.模型的选择
Tensorflow detection model zoo
Speed表示速度,COCO mAP表示在COCO数据集上的平均准确率,第一个ssd_mobilenet就是我们默认使用的pre-train模型
2
3
4
5
6
2.测试自己的图片
改变【PATH_TO_TEST_IMAGES_DIR】 的路径,要在models-master\object_detection目录下。相应的数量for i in range(1, 3)也要进行改变。
2
3
4
5
6
测试一张图片快7秒,不知道是什么原因。
3.测试视频
安装Opencv3,这里碰到了问题,直接输入
安装好后import cv2报错
根据网上的解决方法去安装vc++ for visual2015之后并没有解决,下载重装 【opencv_python-3.2.0.8-cp35-cp35m-win_amd64.whl】也无效。把Anaconda2删除只留Anaconda3也不行。无奈之下重新安装Anaconda3,下载最新版的python-opencv,在目录下
import cv2报错:
于是更新numpy到1.13.1:
接下来import cv2就没问题了
假设已配置完tensorflow,并安装好Anaconda3-4.2.0(此版本为python3.5)
从github下载models
tensorflow/models
Protobuf 编译
protobuf下载
我下载的版本是protoc-3.3.0-win32.zip,解压后将bin文件夹中的【protoc.exe】放到
C:\Windows
在models目录下shift+右键打开Powershell窗口,输入:
# From tensorflow/models/ protoc object_detection/protos/*.proto --python_out=.1
2
不报错即可
测试
由于电脑中同时有Anaconda2与Anaconda3,在models目录下输入
jupyter-notebook1
进入object_detetion中打开【object_detection_tutorial.ipynb】,无法运行,此时的kernel是python2,而windows只有python3.5的tensorflow。如果你的电脑只有python3.5,那么直接run all就可以看到结果。或者将Anaconda3的jupyter-notebook的工作空间变换到models目录下。
这里我用了另一种方法:
新建一个【object_detection_tutorial.py】,将.ipynb中的代码复制到.py中,然后在spyder中运行。以下是代码。功能是取object_detection\test_images中的图片:image1和image2,做目标检测。
import numpy as np import os import six.moves.urllib as urllib import sys import tarfile import tensorflow as tf import zipfile from collections import defaultdict from io import StringIO from matplotlib import pyplot as plt from PIL import Image ## This is needed to display the images. #%matplotlib inline # This is needed since the notebook is stored in the object_detection folder. sys.path.append("..") from utils import label_map_util from utils import visualization_utils as vis_util # What model to download. MODEL_NAME = 'ssd_mobilenet_v1_coco_11_06_2017' MODEL_FILE = MODEL_NAME + '.tar.gz' DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/' # Path to frozen detection graph. This is the actual model that is used for the object detection. PATH_TO_CKPT = MODEL_NAME + '/frozen_inference_graph.pb' # List of the strings that is used to add correct label for each box. PATH_TO_LABELS = os.path.join('data', 'mscoco_label_map.pbtxt') NUM_CLASSES = 90 #download model opener = urllib.request.URLopener() #下载模型,如果已经下载好了下面这句代码可以注释掉 opener.retrieve(DOWNLOAD_BASE + MODEL_FILE, MODEL_FILE) tar_file = tarfile.open(MODEL_FILE) for file in tar_file.getmembers(): file_name = os.path.basename(file.name) if 'frozen_inference_graph.pb' in file_name: tar_file.extract(file, os.getcwd()) #Load a (frozen) Tensorflow model into memory. detection_graph = tf.Graph() with detection_graph.as_default(): od_graph_def = tf.GraphDef() with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid: serialized_graph = fid.read() od_graph_def.ParseFromString(serialized_graph) tf.import_graph_def(od_graph_def, name='') #Loading label map label_map = label_map_util.load_labelmap(PATH_TO_LABELS) categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=NUM_CLASSES, use_display_name=True) category_index = label_map_util.create_category_index(categories) #Helper code def load_image_into_numpy_array(image): (im_width, im_height) = image.size return np.array(image.getdata()).reshape( (im_height, im_width, 3)).astype(np.uint8) # 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) ] # Size, in inches, of the output images. IMAGE_SIZE = (12, 8) with detection_graph.as_default(): with tf.Session(graph=detection_graph) as sess: for image_path in TEST_IMAGE_PATHS: image = Image.open(image_path) # the array based representation of the image will be used later in order to prepare the # result image with boxes and labels on it. image_np = load_image_into_numpy_array(image) # Expand dimensions since the model expects images to have shape: [1, None, None, 3] image_np_expanded = np.expand_dims(image_np, axis=0) image_tensor = detection_graph.get_tensor_by_name('image_tensor:0') # Each box represents a part of the image where a particular object was detected. boxes = detection_graph.get_tensor_by_name('detection_boxes:0') # Each score represent how level of confidence for each of the objects. # Score is shown on the result image, together with the class label. scores = detection_graph.get_tensor_by_name('detection_scores:0') classes = detection_graph.get_tensor_by_name('detection_classes:0') num_detections = detection_graph.get_tensor_by_name('num_detections:0') # Actual detection. (boxes, scores, classes, num_detections) = sess.run( [boxes, scores, classes, num_detections], feed_dict={image_tensor: image_np_expanded}) # Visualization of the results of a detection. vis_util.visualize_boxes_and_labels_on_image_array( image_np, np.squeeze(boxes), np.squeeze(classes).astype(np.int32), np.squeeze(scores), category_index, use_normalized_coordinates=True, line_thickness=8) plt.figure(figsize=IMAGE_SIZE) plt.imshow(image_np)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
结果
主要时间用于下载模型,目标识别还是蛮快的。
一些细节
1.模型的选择
Tensorflow detection model zoo
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/'1
2
3
4
5
6
2.测试自己的图片
改变【PATH_TO_TEST_IMAGES_DIR】 的路径,要在models-master\object_detection目录下。相应的数量for i in range(1, 3)也要进行改变。
# 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) ]1
2
3
4
5
6
测试一张图片快7秒,不知道是什么原因。
3.测试视频
安装Opencv3,这里碰到了问题,直接输入
pip install opencv-python1
安装好后import cv2报错
ImportError: DLL load failed: 找不到指定的模块1
根据网上的解决方法去安装vc++ for visual2015之后并没有解决,下载重装 【opencv_python-3.2.0.8-cp35-cp35m-win_amd64.whl】也无效。把Anaconda2删除只留Anaconda3也不行。无奈之下重新安装Anaconda3,下载最新版的python-opencv,在目录下
pip install opencv_python-3.3.0-cp35-cp35m-win_amd64.whl1
import cv2报错:
ImportError: numpy.core.multiarray failed to import1
于是更新numpy到1.13.1:
pip install -U numpy1
接下来import cv2就没问题了
相关文章推荐
- TensorFlow:Object_Detection_API在Windows10上的配置
- Win7配置和运行TensorFlow:Object_Detection_API步骤
- 深度学习TensorFlow:Object_Detection_API图像视频物体识别API在Windows7上的配置
- TensorFlow Object Detection API 在Windows10和Ubuntu上的配置
- TensorFlow学习——Tensorflow Object Detection API(win10,CPU)
- Tensorflow开源的object detection API中的源码解析(二):faster_rcnn_meta_arch.py
- Tensorflow开源的object detection API中的源码解析(一):FASTER RCNN with Inception架构图
- 配置TensorFlow的objetc_detection api,训练自己的数据
- tensorflow Object Detection API 配置
- object detection api配置
- Tensorflow开源的object detection API中的源码解析(三):faster_rcnn_inception_resnet_v2_feature_extractor.py
- Tensorflow物体检测(Object Detection)API的使用
- 【TensorFlow】使用Object Detection API 训练自己的数据集报错
- Tensorflow开源的object detection API中的源码阅读(四):inception_resnet_v2.py
- TensorFlow object detection API应用--配置
- Tensorflow物体检测(Object Detection)API的使用
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks程序(Python)配置问题总结
- object_detection“使用教程”翻译(二):Tensorflow检测模型zoo
- Windows10 GPU版Tensorflow配置教程+Anaconda3+Jupyter Notebook
- TensorFlow Object Detection API教程——利用自己制作的数据集进行训练预测和测试