Hosted or on-device deployment
SDKs optimized for maximum performance
Extensive documentation
Real Time Streaming Protocol (RTSP) is a protocol commonly used to stream video from internet-connected cameras. With supervision and Roboflow Inference, you can run a range of different models using the output of an RTSP stream in a few lines of code.
In this guide, we are going to show you how to run
YOLOv5
on frames from an RTSP camera.
To do this, we will:
1. Install supervision and Inference
2. Use the inference.Stream() method to the webcam and run inference
3. Test the model
Without further ado, let's get started!
For this tutorial, you will need two packages: supervision and Inference. You can install them using the following command:
pip install supervision inference-cli
Once you have installed supervision and Inference, you are ready to start writing logic to use an RTSP stream with your model
The inference.Stream() method allows you to stream data from a webcam or RTSP steam for use in running predictions. The method allows you to select a model for use then run a callback function that has the predictions from the model and the frame on which inference was inferred.
Below, we show you how to use inference.Stream() with
YOLOv5
.
You can load data using the following code:
import cv2
import inference
import supervision as sv
annotator = sv.BoxAnnotator()
def render(predictions, image):
classes = {item["class_id"]: item["class"] for item in predictions["predictions"]}
detections = sv.Detections.from_roboflow(predictions)
print(predictions)
image = annotator.annotate(
scene=image, detections=detections, labels=[classes[i] for i in detections.class_id]
)
cv2.imshow("Prediction", image)
cv2.waitKey(1)
inference.Stream(
source="rstp://127.0.0.0:8000",
model="microsoft-coco/9",
output_channel_order="BGR",
use_main_thread=True,
on_prediction=render,
api_key="api_key"
)
Above, replace "microsoft-coco/9" with the model ID of a YOLOv8 model hosted on Roboflow.
If you have trained a YOLOv5 and YOLOv8 detection, classification, or segmentation model, or a YOLOv7 segmentation model, you can upload your model to Roboflow for use in running inference on your RTSP video stream.
To upload a model to Roboflow, first install the Roboflow Python package:
pip install roboflow
Then, create a new Python file and paste in the following code:
from roboflow import Roboflow
rf = Roboflow(api_key="API_KEY")
project = rf.workspace().project("PROJECT_ID")
project.version(DATASET_VERSION).deploy(model_type="yolov8", model_path=f"{HOME}/runs/detect/train/")
In the code above, add your API key and the path to the model weights you want to upload. Learn how to retrieve your API key. Your weights will be uploaded to Roboflow. Your model will shortly be accessible over an API, and available for use in Inference. To learn more about uploading model weights to Roboflow, check out our full guide to uploading weights to Roboflow.
Above, we load a model then pass the model into the inference.Steam() method for use in running inference. We define a callback function called render() which runs every time a frame is retrieved from our webcam. render() can contain any logic you want to run on each frame.
In the example code above, we plot predictions from a model each frame and display the frame in a video stream. This allows you to watch your model run in real time and understand how it performs.
Replace the 127.0.0.0 URL with the URL of your RTSP camera. In addition, replace the API_KEY value with your Roboflow API key. Learn how to retrieve your Roboflow API key.
Now that you have configured your model and streaming interface, you can test the stream. To do so, run your Python program.
Now you have all you need to start using
YOLOv5
with an RTSP stream.
supervision provides an extensive range of functionalities for working with computer vision models. With supervision, you can:
1. Process and filter detections and segmentation masks from a range of popular models (YOLOv5, Ultralytics YOLOv8, MMDetection, and more).
2. Display predictions (i.e. bounding boxes, segmentation masks).
3. Annotate images (i.e. trace predictions, draw heatmaps).
4. Compute confusion matrices.
And more! To learn about the full range of functionality in supervision, check out the supervision documentation.
Below, you can find our guides on how to use streams with other computer vision models.