Models: mscoco_label_map.pbtxt

Created on 5 Jun 2018  路  15Comments  路  Source: tensorflow/models

I dont understand whuy this problem, I am using the code of https://pythonprogramming.net/video-tensorflow-object-detection-api-tutorial/ and this is causing issues, I am realizing a lot of changes, but its my last problem, the file exist, but on the ubuntu terminal appear this...

 File "/home/user/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py", line 519, in __exit__
    c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.NotFoundError: data/mscoco_label_map.pbtxt; No such file or directory

I dont know whats he problem I suposing that its on the code, cause before this code cause the problem to import the "utils" i have to change the code with

from utils import label_map_util

from object_detection.utils import label_map_util

But in this case i dont know where the problem.

Most helpful comment

Hello!
The code is a demo of https://pythonprogramming.net/video-tensorflow-object-detection-api-tutorial/ and I make some changes for compatibility...

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

import cv2
cap = cv2.VideoCapture(0)

# This is needed since the notebook is stored in the object_detection folder.
sys.path.append("..")


# ## Object detection imports
# Here are the imports from the object detection module.

# In[3]:

from object_detection.utils import label_map_util

from object_detection.utils import visualization_utils as vis_util


# # Model preparation 

# ## Variables
# 
# Any model exported using the `export_inference_graph.py` tool can be loaded here simply by changing `PATH_TO_CKPT` to point to a new .pb file.  
# 
# By default we use an "SSD with Mobilenet" model here. See the [detection model zoo](https://github.com/tensorflow/models/blob/master/object_detection/g3doc/detection_model_zoo.md) for a list of other models that can be run out-of-the-box with varying speeds and accuracies.

# In[4]:

# 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

# In[5]:

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.

# In[6]:

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 maps map indices to category names, so that when our convolution network predicts `5`, we know that this corresponds to `airplane`.  Here we use internal utility functions, but anything that returns a dictionary mapping integers to appropriate string labels would be fine

# In[7]:  PATH_TO_LABELS abajo

label_map = label_map_util.load_labelmap(os.path.join('anaconda3/lib/python3.6/site-packages/tensorflow/models/research/object_detection/data', 'mscoco_label_map.pbtxt'))
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

# In[8]:

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)


# # Detection

# In[9]:

# 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)


# In[10]:

with detection_graph.as_default():
  with tf.Session(graph=detection_graph) as sess:
    while True:
      ret, image_np = cap.read()
      # 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)

      cv2.imshow('object detection', cv2.resize(image_np, (800,600)))
      if cv2.waitKey(25) & 0xFF == ord('q'):
        cv2.destroyAllWindows()
        break

The error is over the line 90 when
label_map = label_map_util.load_labelmap(os.path.join('anaconda3/lib/python3.6/site-packages/tensorflow/models/research/object_detection/data', 'mscoco_label_map.pbtxt'))

The original form is
label_map = label_map_util.load_labelmap(os.path.join(PATH_TO_LABELS)

But doesnt work with WITH NO ONE.

What is the top-level directory of the model you are using?
models/research/object_detection/

Have I written custom code
Its a Demo of https://pythonprogramming.net/video-tensorflow-object-detection-api-tutorial/ and I make some changes for compatibility.

OS Platform and Distribution
Ubuntu 18.04 LTS

TensorFlow installed from
Three months Updated 1.0.0 to 1.8.0

Version
1.8.0

Bazel version
N/A

CUDA/cuDNN version
N/A I have AMD A9 CPU

GPU model and memory
N/A

Exact command to reproduce

    label_map = label_map_util.load_labelmap(os.path.join('anaconda3/lib/python3.6/site-packages/tensorflow/models/research/object_detection/data', 'mscoco_label_map.pbtxt'))

or

    label_map = label_map_util.load_labelmap(os.path.join(PATH_TO_LABELS)

My intetion is in real time trough a webcam detect objects.

Y hope your help
Thank you very much.

All 15 comments

Thank you for your post. We noticed you have not filled out the following field in the issue template. Could you update them if they are relevant in your case, or leave them as N/A? Thanks.
What is the top-level directory of the model you are using
Have I written custom code
OS Platform and Distribution
TensorFlow installed from
TensorFlow version
Bazel version
CUDA/cuDNN version
GPU model and memory
Exact command to reproduce

Hello!
The code is a demo of https://pythonprogramming.net/video-tensorflow-object-detection-api-tutorial/ and I make some changes for compatibility...

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

import cv2
cap = cv2.VideoCapture(0)

# This is needed since the notebook is stored in the object_detection folder.
sys.path.append("..")


# ## Object detection imports
# Here are the imports from the object detection module.

# In[3]:

from object_detection.utils import label_map_util

from object_detection.utils import visualization_utils as vis_util


# # Model preparation 

# ## Variables
# 
# Any model exported using the `export_inference_graph.py` tool can be loaded here simply by changing `PATH_TO_CKPT` to point to a new .pb file.  
# 
# By default we use an "SSD with Mobilenet" model here. See the [detection model zoo](https://github.com/tensorflow/models/blob/master/object_detection/g3doc/detection_model_zoo.md) for a list of other models that can be run out-of-the-box with varying speeds and accuracies.

# In[4]:

# 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

# In[5]:

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.

# In[6]:

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 maps map indices to category names, so that when our convolution network predicts `5`, we know that this corresponds to `airplane`.  Here we use internal utility functions, but anything that returns a dictionary mapping integers to appropriate string labels would be fine

# In[7]:  PATH_TO_LABELS abajo

label_map = label_map_util.load_labelmap(os.path.join('anaconda3/lib/python3.6/site-packages/tensorflow/models/research/object_detection/data', 'mscoco_label_map.pbtxt'))
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

# In[8]:

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)


# # Detection

# In[9]:

# 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)


# In[10]:

with detection_graph.as_default():
  with tf.Session(graph=detection_graph) as sess:
    while True:
      ret, image_np = cap.read()
      # 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)

      cv2.imshow('object detection', cv2.resize(image_np, (800,600)))
      if cv2.waitKey(25) & 0xFF == ord('q'):
        cv2.destroyAllWindows()
        break

The error is over the line 90 when
label_map = label_map_util.load_labelmap(os.path.join('anaconda3/lib/python3.6/site-packages/tensorflow/models/research/object_detection/data', 'mscoco_label_map.pbtxt'))

The original form is
label_map = label_map_util.load_labelmap(os.path.join(PATH_TO_LABELS)

But doesnt work with WITH NO ONE.

What is the top-level directory of the model you are using?
models/research/object_detection/

Have I written custom code
Its a Demo of https://pythonprogramming.net/video-tensorflow-object-detection-api-tutorial/ and I make some changes for compatibility.

OS Platform and Distribution
Ubuntu 18.04 LTS

TensorFlow installed from
Three months Updated 1.0.0 to 1.8.0

Version
1.8.0

Bazel version
N/A

CUDA/cuDNN version
N/A I have AMD A9 CPU

GPU model and memory
N/A

Exact command to reproduce

    label_map = label_map_util.load_labelmap(os.path.join('anaconda3/lib/python3.6/site-packages/tensorflow/models/research/object_detection/data', 'mscoco_label_map.pbtxt'))

or

    label_map = label_map_util.load_labelmap(os.path.join(PATH_TO_LABELS)

My intetion is in real time trough a webcam detect objects.

Y hope your help
Thank you very much.

Based on the error above, it looks like the path to the labels file is incorrect. What is the full path of the mscoco_label_map.pbtxt file on your system?

I have the file in

anaconda3/lib/python3.6/site-packages/tensorflow/models/research/object_detection/data莽

That appears to be a relative path, rather than a full path. Can you find the full path? It should start with a slash.

Im So sorry, I copied wrong the directory :(
The correct is:

     ~/anaconda3/lib/python3.6/site-packages/tensorflow/models/research/object_detection/data$

I suspect the path is incorrect in your script. Try:

label_map = label_map_util.load_labelmap(os.path.join('/home/user/anaconda3/lib/python3.6/site-packages/tensorflow/models/research/object_detection/data', 'mscoco_label_map.pbtxt'))

Ohhh Thank You Very Much!!! :100: You are incredible!

Then How I find the full path of File? :o

The script run slow, and appear this

 Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

How compile with this?

Are you using a CPU or GPU(s)? I suggest taking a look at our performance guide: https://www.tensorflow.org/performance/performance_guide#optimizing_for_cpu

Thank you! You helped me a lot of!!
For future doubts, Do you help me? A email or something, Im learning about this theme...

I will close this issue for now. If you have future questions, I suggest StackOverflow. There is a large community that reads questions there. Good luck--

File "hi.py", line 86
label_map = label_map_util.load_labelmap(os.path.join('C:\Users\HP\Downloads\models\research\object_detection\data', 'mscoco_label_map.pbtxt'))
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

Im getting this error for windows

change this

List of the strings that is used to add correct label for each box.

PATH_TO_LABELS = 'models/research/object_detection/data/mscoco_label_map.pbtxt'
category_index = label_map_util.create_category_index_from_labelmap(PATH_TO_LABELS, use_display_name=True)

into this

List of the strings that is used to add correct label for each box.

PATH_TO_LABELS = 'data/mscoco_label_map.pbtxt'
category_index = label_map_util.create_category_index_from_labelmap(PATH_TO_LABELS, use_display_name=True)

Thank you! You helped me a lot of!!
For future doubts, Do you help me? A email or something, Im learning about this theme...

did you get the solution because i am also try to solve but i don't find.

Thank you! You helped me a lot of!!
For future doubts, Do you help me? A email or something, Im learning about this theme...

did you get the solution because i am also try to solve but i don't find.

PATH_TO_LABELS = 'models/research/object_detection/data/mscoco_label_map.pbtxt'

I think this is where the problem is for you. Go to models folder. From path, copy the full path. And add it before models. That will help it. I dont know why we have to do it. It should have done it internally.I want to know why it doesnt..

Was this page helpful?
0 / 5 - 0 ratings