yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
RDK S600 Developer Kit📖
1.RDK S600 board introduction
  • 1.1 RDK S600 board introduction
  • 1.2 System Flashing
  • 1.3 Hardware Interface Description
  • 1.4 Accessory Installation
  • 1.5 Camera Expansion Board
  • 1.6 MCU Interface Expansion Board
  • 1.7 Precautions for Using the 15.6-inch Screen
  • 1.8 System Boot Modes
2.RDK S600 basic course
  • 2.1 Network Configuration
  • 2.2 Remote Login
  • 2.3 System Update
  • 2.4 Boot Auto-Start Configuration
  • 2.5 RDK Exclusive Command Usage
  • 2.6 Linux Command Usage
  • 2.7 Examples of GPIO Read and Write Operations
  • 2.8 Using the USB Camera
  • 2.9 Solid-state mounting
  • 2.10 SSD expansionnew
3.TogetheROS.Bot Vision Applications
  • 1. About TogetheROS. Bot
  • 2. System Installation
  • 3. Object Detection(YOLO)
  • 4. Image Classification(mobilenetv2)
  • 5. Image Segmentation(mobilenet_unet)
  • 6. Perception Algorithm(BEV)
  • 7. Human Detection and Tracking (Ultralytics YOLO Pose)
4. Offline AI Large Model Development
Offline large model (Text Interaction)
  • 1. AI large model environment deployment
  • 2. Install large model dialogue platform
  • 3. Meta AI Llama 3.2 model
  • 4. Alibaba Cloud Qwen3 model
  • 5. Microsoft Phi-4 mini model
  • 6. DeepSeek - DeepSeek-R1 model
  • 7. Alibaba Cloud Qwen2.5vl Visual Multimodal Large Model
  • 8. Google Gemma3 Visual Multimodal Large Model
  • 9. Lava Visual Multimodal Large Model
  • 10. MiniCPM-V Visual Multimodal Large Model
  • 11. Multimodal visual understand application
  • 12. Multimodal text image application
  • 13. Multimodal visual localization application
  • 14. Multimodal table scanning application
  • 15. Multimodal Autonomous Agent Applications
Offline large model (Voice Interaction)
  • 0. Voice Interaction Hardware Connection (Must Read)
  • 1. Offline speech-to-text (ASR)
  • 2. Offline Text-to-Speech (TTS)
  • 3. AI large model voice interaction
  • 4. Multimodal visual understanding voice interaction
  • 5. Multimodal Text-to-Image application
  • 6. Multimodal video analytics application
  • 7. Multimodal visual localization application
  • 8. Multimodal table scanning application
  • 9. Multimodal autonomous agent application
  • 10. AI Large Model Offline Voice Assistant
5. Online AI Large Model Development
Online large model (Text Interaction)
  • 1.OpenRouter large model API aggregation platform
  • 2.Multimodal visual understand application
  • 3.Multimodal visual localization application
  • 4.Multimodal table scanning application
  • 5.Multimodal autonomous proxy application
Online large model (Voice Interaction)
  • 0.Voice interaction hardware connection (ReadMe)
  • 1.Online speech to text (ASR)
  • 2.Online text to speech (TTS)
  • 3.AI large model voice interaction
  • 4.Multimodal visual understand speech interaction
  • 5.Multimodal visual localization application
  • 6.Multimodal table scanning application
  • 7.Multimodal autonomous proxy application
  • 8.AI large model online voice assistant
6.YOLO26 tutorials
  • 01.YOLO26 environment
  • 02.CLI use
  • 03.Object detection
  • 04.Instance segmentation
  • 05.Pose estimation
  • 06.Image classification
  • 07.Oriented object detection
  • 08.Model conversion
  • 09.Dataset annotation
  • 10.Model training - conversion
  • 11.Model prediction
7.OpenClaw Advanced Development
  • 1. OpenClaw Deployment
  • 2. OpenClaw and WhatsApp Plugin Application
  • 3. OpenClaw TUI Interaction
  • 4. OpenClaw WebChat Interaction
  • 5. OpenClaw Gate Gateway Operation Manual
  • 6. OpenClaw Plugin Function Introduction
  • 7. OpenClaw Tools Introduction
  • 8. OpenClaw ClawHub Introduction (skill Installation)
  • 9.OpenClaw Application - File Management
  • 10.OpenClaw Application - Browser Control
  • 11.OpenClaw Application - Camera
  • 12.OpenClaw Application - Script Execution
  • 13.OpenClaw Application - AI Programming (Peripheral & GPIO Control)
  • 14. OpenClaw Application - Dedicated AI Assistant
  • 15. OpenClaw Configure Web Search Capability
8.ROS2 basic course
  • 1.Introduction to ROS2
  • 2.ROS2 install Jazzy
  • 3.ROS2 development environment
  • 4.ROS2 workspace
  • 5.ROS2 function package
  • 6.ROS2 node
  • 7.ROS2 topic communication
  • 8.ROS2 service communication
  • 9.ROS2 action communication
  • 10.ROS2 custom interface message
  • 11.ROS2 parameter service case
  • 12.ROS2 meta-function package
  • 13.ROS2 distributed communication
  • 14.ROS2 DDS
  • 15.ROS2 time related API
  • 16.ROS2 common command tools
  • 17.ROS2 rviz2 use
  • 18.ROS2 rqt toolbox
  • 19.ROS2 Launch startup file configuration
  • 20.ROS2 recording and playback tool
  • 21.ROS2 URDF model
  • 22.ROS2 Gazebo simulation platform
  • 23.ROS2 TF2 coordinate transformation
Download
  • System_File
  • Code
  • 3D_Model_File
  • Tools_Software
Download ZIP

Welcome to RDK S600 Developer Kit repository

6. Multimodal video analytics application

6. Multimodal Video Analytics Voice Interaction

6. Multimodal Video Analytics Voice Interaction1. Concept Introduction1.1 What is "Video Analytics"?1.2 Brief Description of Implementation Principles2. Code AnalysisKey Code1. Tool Layer Entry (largemodel/utils/tools_manager.py)2. Model Interface Layer and Frame Extraction (largemodel/utils/large_model_interface.py)Code Analysis3. Practical Operations3.1 Configuring Offline Large Model3.1.1 Configuring LLM Platform (yahboom.yaml)3.1.2 Configuring Model Interface (large_model_interface.yaml)3.2 Startup and Testing

1. Concept Introduction

1.1 What is "Video Analytics"?

In the largemodel project, the Multimodal Video Analytics feature enables the robot to process a video and summarize its core content, describe key events, or answer specific questions about the video in natural language. This allows the robot to advance from only understanding static images to understanding the dynamic, temporal world.

The core tool of this function is analyze_video. When a user provides a video file and asks a question (such as "summarize what this video is about"), the system invokes this tool to process and analyze the video, and returns the AI's text response.

1.2 Brief Description of Implementation Principles

The core challenge of offline video analytics is how to efficiently process video data containing hundreds or thousands of frames. A mainstream implementation principle is as follows:

  1. Keyframe Extraction: First, the system does not process every frame of the video, but extracts the most representative keyframes through algorithms (such as scene boundary detection or fixed-time interval sampling). This greatly reduces the amount of data that needs to be processed.
  2. Image Encoding: Each extracted keyframe is sent to a vision encoder, just like in the visual understanding application, and converted into digital vectors containing image information.
  3. Temporal Information Fusion: This is the biggest difference from single-image understanding. The model needs to understand the temporal order between these keyframes. Usually, a Recurrent Neural Network (RNN) or Transformer model is used to fuse the vectors of all keyframes, forming a "memory" vector that represents the dynamic content of the entire video.
  4. Q&A and Generation: The user's text question is encoded and then cross-modally fused with this "memory" vector. Finally, the language model component generates a summary of the entire video or answers to specific questions based on this fused information.

Simply put, it condenses a video into several key images and their order, then understands the entire story like looking at a comic strip, and answers related questions.


2. Code Analysis

Key Code

1. Tool Layer Entry (largemodel/utils/tools_manager.py)

The analyze_video function in this file defines the execution flow of the tool.

# From largemodel/utils/tools_manager.py
class ToolsManager:
    # ...
    def analyze_video(self, args):
        """
        Analyze video file and provide content description.
        """
        self.node.get_logger().info(f"Executing analyze_video() tool with args: {args}")
        try:
            video_path = args.get("video_path")
            # ... (Smart path fallback mechanism)
            
            if video_path and os.path.exists(video_path):
                # ... (Build Prompt)
                
                # Use a fully isolated, one-time context for video analysis to ensure a plain text description.
                simple_context = [{
                    "role": "system",
                    "content": "You are a video description assistant. ..."
                }]
                
                result = self.node.model_client.infer_with_video(video_path, prompt, message=simple_context)
                
                # ... (Process result)
                return {
                    "description": description,
                    "video_path": video_path
                }
            # ... (Error handling)

2. Model Interface Layer and Frame Extraction (largemodel/utils/large_model_interface.py)

The functions in this file are responsible for processing video files and passing them to the underlying model.

​x
# From largemodel/utils/large_model_interface.py
​
class model_interface:
    # ...
    def infer_with_video(self, video_path, text=None, message=None):
        """Unified video inference interface."""
        # ... (Prepare messages)
        try:
            # Based on self.llm_platform, determine which specific implementation to call
            if self.llm_platform == 'ollama':
                response_content = self.ollama_infer(self.messages, video_path=video_path)
            # ... (Other online platform logic)
        # ...
        return {'response': response_content, 'messages': self.messages.copy()}
​
    def _extract_video_frames(self, video_path, max_frames=5):
        """Extract keyframes from a video for analysis."""
        try:
            import cv2
            # ... (Video reading and frame interval calculation)
            while extracted_count < max_frames:
                # ... (Loop to read video frames)
                if frame_count % frame_interval == 0:
                    # ... (Save frame as temporary image)
                    frame_base64 = self.encode_file_to_base64(temp_path)
                    frame_images.append(frame_base64)
            # ...
            return frame_images
        # ... (Exception handling)

Code Analysis

The implementation of video analytics is one step more complex than image analytics, as it requires a critical preprocessing step in the model interface layer: frame extraction.

  1. Tool Layer (tools_manager.py):

    • The analyze_video function is the business entry point for video analytics. Its responsibility is clear: receive a video file path and construct a prompt for requesting a description of the video content.
    • It initiates the analysis process by calling self.node.model_client.infer_with_video. Like the visual understanding tool, it doesn't care about the underlying model details at all, only responsible for passing the "video file" and "analysis instruction".
  2. Model Interface Layer (large_model_interface.py):

    • The infer_with_video function acts as a dispatcher connecting the upper-level tools and the underlying model. It dispatches tasks to the corresponding implementation functions based on platform configuration (self.llm_platform).
    • Unlike processing a single image, processing video requires an additional step. The _extract_video_frames method demonstrates the general logic for this step: it uses the cv2 library to read the video and extract several (default 5) keyframes.
    • Each extracted frame is treated as an independent image and is typically encoded as a Base64 string.
    • Finally, a request containing multiple frame image data and analysis instructions is sent to the large model. The model performs comprehensive analysis on these consecutive images to generate a description of the entire video content.
    • This "video-to-multiple-images" preprocessing is completely encapsulated in the model interface layer and is transparent to the tool layer.

In summary, the general flow of video analytics is: ToolsManager initiates analysis request -> model_interface intercepts the request and calls _extract_video_frames to decompose the video file into multiple keyframe images -> model_interface sends these images along with analysis instructions to the corresponding model platform based on configuration -> The model returns a comprehensive description of the video -> The result is finally returned to ToolsManager. This design ensures the stability and versatility of upper-level applications.

3. Practical Operations

3.1 Configuring Offline Large Model

3.1.1 Configuring LLM Platform (yahboom.yaml)

This file determines which large model platform the model_service node loads as its primary language model.

  1. Open the file in terminal:

    xxxxxxxxxx
    vim ~/yahboom_ws/install/largemodel/share/largemodel/config/yahboom.yaml
  2. Modify/confirm llm_platform:

    xxxxxxxxxx
    model_service:                          #Model server node parameters
      ros__parameters:
        language: 'zh'                      #Large model interface language
        useolinetts: True                   #This setting is invalid in text mode, can be ignored
    ​
        # Large model configuration
        llm_platform: 'ollama'              # Critical: Ensure this is set to 'ollama'

3.1.2 Configuring Model Interface (large_model_interface.yaml)

This file defines which visual model is used when the platform is set to ollama.

  1. Open the file in terminal
xxxxxxxxxx
vim ~/yahboom_ws/install/largemodel/share/largemodel/config/large_model_interface.yaml
  1. Find the ollama-related configuration
xxxxxxxxxx
#.....
## Offline Large Language Models
# Ollama configuration
ollama_host: "http://localhost:11434"  # Ollama server address
ollama_model: "llava"            # Critical: Change this to your downloaded multimodal model, such as "llava"
#.....

Note: Please ensure the model specified in the configuration parameters (such as llava) can handle multimodal input.

3.2 Startup and Testing

  1. Prepare video file:

    Place a test video file at the following path: /home/sunrise/yahboom_ws/src/largemodel/resources_file/analyze_video

    Then name the video test_video.mp4

  2. Start the largemodel main program:

    Open a terminal and run the following command:

    xxxxxxxxxx
    ros2 launch largemodel largemodel_control.launch.py
  3. Test:

    • Wake up: Say to the microphone: "Hello, yahboom."

    • Conversation: After the speaker responds, you can say: analyze the video content

    • Observe logs: In the terminal running the launch file, you should see:

      1. The ASR node recognizes your question and prints it out.
      2. The model_service node receives the text, invokes the LLM, and prints out the LLM's response.
    • Listen to the answer: After a while, you should hear the answer from the speaker.

    Recommendation: It is recommended to use the minicpm-v:8b offline model. Different offline models have different strengths and capabilities, and users can pull models to try on their own.

Multimodal Text-to-Image application
Multimodal visual localization application

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文