Welcome to IMX 415 Camera Module repository
4. YOLO26 Object Detection
Object Detection
Object Detection1. Environment Setup1.1 File Transfer1.2 Install the Driver Library2. Model Introduction3. Object Prediction: ImageEffect Preview4. Object Prediction: VideoEffect Preview5. Object Prediction: Real-Time DetectionCSI CameraEffect Preview
Use Python to demonstrate the effects of Ultralytics: Object Detection on images, videos, and real-time detection.
Before running this case, if your image is the one we shipped that can already drive the IMX415, you can directly perform the following operations. If it is not an IMX415 image, you need to refer to the tutorial on driving the IMX415 to make sure it can be driven, and then proceed with the environment setup operations.
1. Environment Setup
1.1 File Transfer
First, transfer the sunriseRobot folder from the rdk source code summary to the motherboard. The ultralytics26 folder, which contains the driver program for the yolo26 case, also needs to be transferred in.

1.2 Install the Driver Library
After the transfer, enter the following command to enter the directory:
xxxxxxxxxxcd /home/sunrise/sunriseRobot/SunriseRobotLib
If your motherboard has a similar driver library, first uninstall the old driver library:
xxxxxxxxxxsudo pip uninstall SunriseRobotLib -y
Then install:
xxxxxxxxxxsudo pip install -e
2. Model Introduction
Object detection is a task that involves identifying the location and category of objects in an image or video stream.
The output of an object detector is a set of bounding boxes that enclose the objects in the image, along with the class label and confidence score for each box. If you need to identify objects of interest in a scene without knowing the exact location or precise shape of the objects, object detection is a good choice.
3. Object Prediction: Image
Use the yolo26n_ncnn_model model to predict the images in the ultralytics26 folder.
Enter the code folder:
xxxxxxxxxxcd /home/sunrise/ultralytics26/yahboom_demo
Run the code:
xxxxxxxxxxpython3 01.detection_image.py
Effect Preview
The location of the image output by yolo recognition: /home/sunrise/ultralytics26/output/

Example code:
xxxxxxxxxxfrom ultralytics import YOLO# Load a modelmodel = YOLO("/home/sunrise/ultralytics26/yolo26n_ncnn_model")# model = YOLO("/home/sunrise/ultralytics26/yolo26n.pt")# Run batched inference on a list of imagesresults = model("/home/sunrise/ultralytics26/assets/bus.jpg") # return a list of Results objects# Process results listfor result in results:boxes = result.boxes # Boxes object for bounding box outputs# masks = result.masks # Masks object for segmentation masks outputs# keypoints = result.keypoints # Keypoints object for pose outputs# probs = result.probs # Probs object for classification outputs# obb = result.obb # Oriented boxes object for OBB outputsresult.show() # display to screenresult.save(filename="/home/sunrise/ultralytics26/output/bus_output.jpg") # save to disk
4. Object Prediction: Video
Use the yolo26n_ncnn_model model to predict the videos in the ultralytics26 folder (not the videos that come with ultralytics).
Enter the code folder:
xxxxxxxxxxcd /home/sunrise/ultralytics26/yahboom_demo
Run the code:
xxxxxxxxxxpython3 01.detection_video.py
Effect Preview
The location of the video output by yolo recognition: /home/sunrise/ultralytics26/output/

Example code:
xxxxxxxxxximport cv2from ultralytics import YOLO# Load the YOLO modelmodel = YOLO("/home/sunrise/ultralytics26/yolo26n_ncnn_model")# model = YOLO("/home/sunrise/ultralytics26/yolo26n.pt")# Open the video filevideo_path = "/home/sunrise/ultralytics26/videos/people_animals.mp4"cap = cv2.VideoCapture(video_path)# Get the video frame size and frame rateframe_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))fps = int(cap.get(cv2.CAP_PROP_FPS))# Define the codec and create a VideoWriter object to output the processed videooutput_path = "/home/sunrise/ultralytics26/output/01.people_animals_output.mp4"fourcc = cv2.VideoWriter_fourcc(*'mp4v') # You can use 'XVID' or 'mp4v' depending on your platformout = cv2.VideoWriter(output_path, fourcc, fps, (frame_width, frame_height))# Loop through the video frameswhile cap.isOpened():# Read a frame from the videosuccess, frame = cap.read()if success:# Run YOLO inference on the frameresults = model(frame)# Visualize the results on the frameannotated_frame = results[0].plot()# Write the annotated frame to the output video fileout.write(annotated_frame)# Display the annotated framecv2.imshow("YOLO Inference", cv2.resize(annotated_frame, (640, 480)))# Break the loop if 'q' is pressedif cv2.waitKey(1) & 0xFF == ord("q"):breakelse:# Break the loop if the end of the video is reachedbreak# Release the video capture and writer objects, and close the display windowcap.release()out.release()cv2.destroyAllWindows()
5. Object Prediction: Real-Time Detection
CSI Camera
Use the yolo26n_ncnn_model model to predict the CSI camera image.
Enter the code folder:
xxxxxxxxxxcd /home/sunrise/ultralytics26/yahboom_demo
Run the code: click to preview the image
xxxxxxxxxxpython3 01.detection_camera_csi.py

Effect Preview
The location of the video output by yolo recognition: /home/sunrise/ultralytics26/output/

Example code:
ximport cv2from ultralytics import YOLOfrom SunriseRobotLib import Mipi_Cameracamera = Mipi_Camera(width=3840, height=2160, debug=True)model = YOLO("/home/sunrise/ultralytics26/yolo26n_ncnn_model", task='detect')FLIP_CODE = -1# Frame counter, used for frame skipping to optimize lagframe_id = 0while True:ret, frame = camera.read()if not ret:print("Read failed, check the camera")breakframe_resized = cv2.resize(frame, (640, 480))frame_flipped = cv2.flip(frame_resized, FLIP_CODE)frame_id += 1if frame_id % 2 != 0:results = model(frame_flipped)annotated = results[0].plot()else:annotated = frame_flippedcv2.imshow("YOLO", annotated)if cv2.waitKey(30) & 0xFF == ord('q'):breakcamera.release()cv2.destroyAllWindows()