9951 explained code solutions for 126 technologies


python-tensorflowHow do I use Python and TensorFlow to perform object detection?


Object detection is a computer vision task that involves identifying and locating objects in an image. It can be done using Python and TensorFlow, a deep learning library.

To perform object detection using Python and TensorFlow, you will need to:

  1. Install TensorFlow.
  2. Gather and prepare the training data.
  3. Create a model using TensorFlow's Object Detection API.
  4. Train the model.
  5. Evaluate the model.
  6. Use the model to detect objects in new images.

Example code to perform object detection using Python and TensorFlow:

import tensorflow as tf
from object_detection.utils import label_map_util

# Path to frozen detection graph. This is the actual model that is used for the object detection.
PATH_TO_CKPT = 'frozen_inference_graph.pb'

# List of the strings that is used to add correct label for each box.
PATH_TO_LABELS = 'label_map.pbtxt'

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

# Detection
with detection_graph.as_default():
  with tf.Session(graph=detection_graph) as sess:
    while True:
      # Read frame from camera
      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)
      # Extract image tensor
      image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')
      # Extract detection boxes
      boxes = detection_graph.get_tensor_by_name('detection_boxes:0')
      # Extract detection scores
      scores = detection_graph.get_tensor_by_name('detection_scores:0')
      # Extract detection classes
      classes = detection_graph.get_tensor_by_name('detection_classes:0')
      # Extract number of detections
      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)
      # Display output
      cv2.imshow('object detection', cv2.resize(image_np, (800,600)))
      if cv2.waitKey(25) & 0xFF == ord('q'):
        cv2.destroyAllWindows()
        break

Helpful links

Edit this code on GitHub