object detection之Win10配置
1、下載models。
https://github.com/tensorflow/models 并文件解壓。
2、下載protos文件
https://github.com/protocolbuffers/protobuf/releases?after=v3.9.1
我這里下載的3.7.0版本。注意一定要下載protoc-xxx-win64.zip版本。必須是帶有win64的壓縮包,否則可能沒(méi)有需要的bin文件
下載后解壓如下:并將bin下的protoc.exe文件復(fù)制到C:\Windows\System32文件夾下。
打開(kāi)cmd輸入protoc。如果出現(xiàn)以下界面 則表示配置protoc成功
3、編譯proto文件
打開(kāi)windows PowerShell(注意,這里必須是PowerShell,運(yùn)行cmd會(huì)報(bào)錯(cuò))。cd到research文件目錄下
輸入:
Get-ChildItem object_detection/protos/*.proto | Resolve-Path -Relative | %{ protoc $_ --python_out=. }
運(yùn)行成功后:查看research下object_detection文件夾下protos文件,如果每個(gè)proto文件都成了對(duì)應(yīng)的以py為后綴的python源碼,就說(shuō)明編譯成功了。
4、配置環(huán)境變量
在Anaconda\Lib\site-packages新建一個(gè)路徑文件tensorflow_model.pth,必須以.pth為后綴,寫(xiě)上你要加入的模塊文件所在的目錄名稱,如下圖:
5、運(yùn)行models/research下的setup.py
python setup.py build
python setup.py install
6、測(cè)試
在object_detection文件夾下建立object_detection_demo.py 文件
代碼如下:這里模型下載鏈接:鏈接:https://pan.baidu.com/s/1dxzU4YMpF93qwkXF0x-3JA提取碼:uhju
# 一定要保存為UTF8的格式哦 import numpy as np import os import six.moves.urllib as urllib import sys import tarfile import tensorflow as tf import zipfile import matplotlib import cv2# Matplotlib chooses Xwindows backend by default. matplotlib.use('Agg')from collections import defaultdict from io import StringIO from matplotlib import pyplot as plt from PIL import Image from object_detection.utils import label_map_util from object_detection.utils import visualization_utils as vis_util##################### Download Model,如果本地已下載也可修改成本地路徑 # What model to download. MODEL_NAME = 'ssd_mobilenet_v1_coco_2017_11_17' 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 if not already downloaded if not os.path.exists(PATH_TO_CKPT):print('Downloading model... (This may take over 5 minutes)')opener = urllib.request.URLopener()opener.retrieve(DOWNLOAD_BASE + MODEL_FILE, MODEL_FILE)print('Extracting...')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()) else:print('Model already downloaded.')##################### Load a (frozen) Tensorflow model into memory. print('Loading model...') 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 print('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.sizereturn np.array(image.getdata()).reshape((im_height, im_width, 3)).astype(np.uint8)##################### Detection # 測(cè)試圖片的路徑,可以根據(jù)自己的實(shí)際情況修改 TEST_IMAGE_PATH = 'test_images/image1.jpg'# Size, in inches, of the output images. IMAGE_SIZE = (12, 8)print('Detecting...') config = tf.ConfigProto() config.gpu_options.allow_growth = True with detection_graph.as_default():with tf.Session(graph=detection_graph,config=config) as sess:print(TEST_IMAGE_PATH)image = Image.open(TEST_IMAGE_PATH)image_np = load_image_into_numpy_array(image)image_np_expanded = np.expand_dims(image_np, axis=0)image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')boxes = detection_graph.get_tensor_by_name('detection_boxes:0')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)print(TEST_IMAGE_PATH.split('.')[0] + '_labeled.jpg')plt.figure(figsize=IMAGE_SIZE, dpi=300)# 不知道為什么,在我的機(jī)器上沒(méi)顯示出圖片,有知道的朋友指點(diǎn)下,謝謝plt.imshow(image_np)# 保存標(biāo)記圖片plt.savefig(TEST_IMAGE_PATH.split('.')[0] + '_labeled.jpg')運(yùn)行后:
在object_detection文件夾下test_images文件下多了一張image1_labeled.jpg則證明配置成功。
參考自https://blog.csdn.net/zhongxianjin/article/details/103269901
https://blog.csdn.net/qq_28019591/article/details/82023949
總結(jié)
以上是生活随笔為你收集整理的object detection之Win10配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据结构-队列1-顺序存储
- 下一篇: fx5u以太网通讯设置_操作示例 | 实