9951 explained code solutions for 126 technologies


python-tensorflowHow can I use YOLOv3 with Python and TensorFlow?


YOLOv3 (You Only Look Once) is a state-of-the-art, real-time object detection system. It can be used with Python and TensorFlow to detect objects in images and videos.

To use YOLOv3 with Python and TensorFlow, you will need to install the TensorFlow Object Detection API and the related dependencies. You can find the installation instructions here.

Once the API is installed, you can use the following example code to detect objects in an image:

import numpy as np
import tensorflow as tf
import cv2

# Read the image
image = cv2.imread('image.jpg')

# Create a graph
detection_graph = tf.Graph()

# Initialize the graph
with detection_graph.as_default():
    od_graph_def = tf.GraphDef()
    with tf.gfile.GFile('frozen_inference_graph.pb', 'rb') as fid:
        serialized_graph = fid.read()
        od_graph_def.ParseFromString(serialized_graph)
        tf.import_graph_def(od_graph_def, name='')

# Create a session
with detection_graph.as_default():
    with tf.Session(graph=detection_graph) as sess:
        # Define input and output tensors
        image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')
        detection_boxes = detection_graph.get_tensor_by_name('detection_boxes:0')
        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')

        # Run inference
        (boxes, scores, classes, num) = sess.run(
            [detection_boxes, detection_scores, detection_classes, num_detections],
            feed_dict={image_tensor: np.expand_dims(image, axis=0)}
        )

# Visualize the results
vis_util.visualize_boxes_and_labels_on_image_array(
    image,
    np.squeeze(boxes),
    np.squeeze(classes).astype(np.int32),
    np.squeeze(scores),
    category_index,
    use_normalized_coordinates=True,
    line_thickness=8,
    min_score_thresh=0.60
)

# Save the image
cv2.imwrite('detected_image.jpg', image)

The code above does the following:

  1. Reads an image using OpenCV
  2. Creates a graph using the TensorFlow Object Detection API
  3. Initializes the graph with a frozen inference graph
  4. Creates a session and defines input and output tensors
  5. Runs inference using the session
  6. Visualizes the results on the image
  7. Saves the image with the detected objects

The output of the code is an image with the detected objects.

For more information on using YOLOv3 with Python and TensorFlow, please refer to the TensorFlow Object Detection API documentation.

Edit this code on GitHub