2017-11-19 18 views
0

私は事前に訓練されたfaster_rcnn_inception_resnet_v2_atrous_oidを使用しようとしています。コードは公式のQuick Startノートブックから変更されています。 faster_rcnn_nas_coco_2017_11_08のような他のモデルを使用すると、すべて動作します。私はfaster_rcnn_inception_resnet_v2_atrous_oidに変更した場合しかし、私は次のエラーを得た:Tensorflowオブジェクトの検出UnicodeEncodeError

runfile('D:/python/tf/models-master/research/object_detection/Learn_faster.py', wdir='D:/python/tf/models-master/research/object_detection') 
Reloaded modules: utils, utils.label_map_util, utils.visualization_utils 
downloaded 
Traceback (most recent call last): 

    File "e:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2898, in run_code 
    self.showtraceback() 

    File "e:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 1826, in showtraceback 
    self._showtraceback(etype, value, stb) 

    File "e:\Anaconda3\lib\site-packages\ipykernel\zmqshell.py", line 554, in _showtraceback 
    dh.parent_header, ident=topic) 

    File "e:\Anaconda3\lib\site-packages\jupyter_client\session.py", line 712, in send 
    to_send = self.serialize(msg, ident) 

    File "e:\Anaconda3\lib\site-packages\jupyter_client\session.py", line 607, in serialize 
    content = self.pack(content) 

    File "e:\Anaconda3\lib\site-packages\jupyter_client\session.py", line 103, in <lambda> 
    ensure_ascii=False, allow_nan=False, 

    File "e:\Anaconda3\lib\site-packages\zmq\utils\jsonapi.py", line 43, in dumps 
    s = s.encode('utf8') 

UnicodeEncodeError: 'utf-8' codec can't encode character '\udcd5' in position 2098: surrogates not allowed 

コードは次のとおりです。

import numpy as np 
import os 
import six.moves.urllib as urllib 
import tarfile 
import tensorflow as tf 

from matplotlib import pyplot as plt 
from PIL import Image 

if tf.__version__ != '1.4.0': 
    raise ImportError('Please upgrade your tensorflow installation to v1.4.0!') 

from utils import label_map_util 

from utils import visualization_utils as vis_util 


# What model to download. 
MODEL_NAME = 'faster_rcnn_inception_resnet_v2_atrous_oid_2017_11_08'#'faster_rcnn_nas_coco_2017_11_08'#'faster_rcnn_resnet101_coco_2017_11_08' #'faster_rcnn_nas_coco_2017_11_08' 'rfcn_resnet101_coco_2017_11_08'# , , 'ssd_inception_v2_coco_2017_11_08' 
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', 'oid_bbox_trainable_label_map')#'mscoco_label_map.pbtxt') 

NUM_CLASSES = 545 


opener = urllib.request.URLopener() 
opener.retrieve(DOWNLOAD_BASE + MODEL_FILE, MODEL_FILE) 
print("downloaded") 
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()) 



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='') 



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) 


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, 7) ] 

# Size, in inches, of the output images. 
IMAGE_SIZE = (12, 8) 



with detection_graph.as_default(): 
    with tf.Session(graph=detection_graph) as sess: 
    # Definite input and output Tensors for detection_graph 
    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. 
    detection_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. 
    detection_scores = detection_graph.get_tensor_by_name('detection_scores:0') 
    detection_classes = detection_graph.get_tensor_by_name('detection_classes:0') 
    num_detections = detection_graph.get_tensor_by_name('num_detections:0') 
    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) 
     # Actual detection. 
     (boxes, scores, classes, num) = sess.run(
      [detection_boxes, detection_scores, detection_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) 

答えて

0
PATH_TO_LABELS = os.path.join('data', 'oid_bbox_trainable_label_map') 

PATH_TO_LABELS = os.path.join('data', 'oid_bbox_trainable_label_map.pbtxt') 
する必要があります
関連する問題