Pipeline Patterns
Các topology pipeline thông dụng trong ứng dụng thực tế.
Pattern 1 — Simple Detection (1-1-1)
Source → Detector → OSD → OutputUse case: nhận diện đối tượng cơ bản từ 1 camera.
det->attach_to({src});
osd->attach_to({det});
out->attach_to({osd});
src->start();Pattern 2 — Detection + Tracking
Source → Detector → Tracker → OSD → OutputUse case: giữ định danh (track_id) của đối tượng qua các frame.
auto tracker = std::make_shared<cvedix_nodes::cvedix_sort_track_node>(
"tracker", cvedix_nodes::cvedix_track_for::NORMAL);
tracker->attach_to({det});Pattern 3 — Multi-Output Fan-out (1-1-N)
┌→ OSD → Screen
Source → Detector → Split ───┤
└→ Broker → MQTTUse case: vừa hiển thị local, vừa đẩy event lên cloud.
Pattern 4 — Multi-Branch Parallel (1-N-1-N)
┌→ Face Detector ──┐
Source → Split ────┤ ├→ Sync → OSD → Output
└→ Object Detector ─┘Use case: chạy nhiều model song song trên cùng một stream, merge kết quả bằng cvedix_sync_node.
Pattern 5 — Behavior Analysis
Source → Detector → Tracker → BA Node → OSD → Output
│
└→ Broker → MQTT/KafkaUse case: đếm crossline, phát hiện đám đông, vi phạm giao thông. BA node bắt buộc có tracker phía trước.
Pattern 6 — Multi-Camera (N-1-N)
Camera 1 ──┐
Camera 2 ──┤→ Detector (shared) → Split by channel → Outputs
Camera 3 ──┘Use case: nhiều camera RTSP dùng chung 1 detector — tiết kiệm GPU. Phân biệt nguồn bằng channel_index.
Pattern 7 — VLM Enrichment
Source → Detector → Tracker → VLM Feature → BrokerUse case: gắn mô tả ngữ nghĩa (màu áo, hành vi, thuộc tính) cho từng object bằng VLM. Xem VLM / LLM.
Building blocks
Nối node
// downstream->attach_to({upstream1, upstream2, ...});
detector->attach_to({source});Vòng đời
source->start(); // chạy
std::cin.get();
source->detach_recursively(); // dừng + dọn dẹp toàn pipelineCập nhật config lúc runtime
auto cfg = osd->get_config();
cfg.show_bbox = true;
osd->update_config(cfg); // hiệu lực ngayKiểm soát queue (tránh nghẽn)
detector->set_max_in_queue_size(1); // realtime: bỏ frame cũ thay vì dồn queueTIP
Nếu log xuất hiện queue full, dropped N meta — node phía sau xử lý chậm hơn phía trước. Giảm tần suất (skip frame ở source), giảm resolution, hoặc tăng queue size tùy mục tiêu realtime/đầy đủ.