- vừa được xem lúc

DOCUMENT PIPELINE DEEPSTREAM Phần 1

0 0 3

Người đăng: Huy Vũ

Theo Viblo Asia

** Đây là phần giải thích về nội dụng, khái niệm, input và output của từng thành phần có trong pipeline của DS đơn giản **

DECODE

Nhiệm vụ:

  • Bộ giải mã chịu trách nhiệm chuyển đổi các luồng video từ SOURCE đã nén (thường các luồng video real-time đều được nén lại để có thể truyền nhanh trong thực tế) → thành các dạng dữ liệu thô (raw frames) có thể xử lý được bởi các thành phần sau của pipeline.
  • Dạng dữ liệu nén thường là H.264, H.265, MJPEG..
  • Dữ liệu thô: RGBA, NV12, I420…

Quá trình xử lý:

INPUT:

  • Đầu vào của DECODE sẽ nhận các nguồn như file video(MP4, MKV), camera IP, luồng rtsp…

PROCESSING (Tùy thuộc vào plugin mà cách xử lý sẽ khác nhau) → Ở đây mình dùng GST-NVURISRCBIN của NVIDIA

  • Cấu trúc sơ lược của GST-NVURISRCBIN
    • Source element: đây là cái sẽ trực tiếp nhận dữ liệu
    • Demuxer: Tách các thành phân dữ liệu ra (video, audio) nếu có
    • Decoder: Giải mã thành các raw frames
  • Xử lý chi tiết:
    • Khi luồng dữ liệu đầu vào đi qua source element nó sẽ tự động nhận diện bằng cách:
      • RTSP: rtsp://
      • File: file://
    • Demuxer: nếu luồng dữ liệu có nhiều hơn 1 dạng dữ liệu thì nó sẽ tách video để giải mã
    • Decoder: sử dụng GPU tối ưu của NVIDIA để giải nén nhanh chóng

OUTPUT:

  • Đầu ra cuối cùng của DECODE sẽ là các dạng dữ liệu thô như: NV12, RGBA…

STREAMMUX

1. Khái niệm:

  • Là thành phần chịu trách nhiệm chính cho việc kết hợp nhiều luồng video từ DECODE thành một luồng duy nhất nhằm mục tiêu là chuẩn hóa tất cả các nguồn file về đúng kích thước, tốc độ, định dạng được config sẵn để xử lý dữ liệu một cách đồng bộ và hiệu quả.

2. INPUT:

  • Đầu vào của GST-NVSTREAMMUX là các dữ liệu thô được giải nén từ GST-NVURISRCBIN (nếu như có nhiều hơn 1 luồng dữ liệu thì mỗi luồng dữ liệu cần phải thêm source_id vào)

Các tham số quan trọng:

  1. batch-size:
    • Số lượng luồng video tối đa mà StreamMux có thể xử lý đồng thời.
    • Mỗi luồng cần được kết nối tới một sink pad của nvstreammux.
  2. live-source:
    • Bật chế độ xử lý thời gian thực khi xử lý luồng từ camera (RTSP).
    • Nếu các nguồn không phải là thời gian thực (như video file), đặt giá trị là 0.
  3. batched-push-timeout:
    • Thời gian chờ (tính bằng microseconds) để gom batch từ các nguồn vào trước khi gửi đến output.
    • Thông số này ảnh hưởng đến độ trễ tổng thể.

3. OUTPUT:

  • Một luồng dữ liệu duy nhất chứa tất cả các frames tổng hợp từ đa luồng từ DECODE
  • Các khung hình sẽ được trả về đồng bộ:
    • Kích thước
    • Tốc độ khung hình
    • Định dạng (NV12 or RGBA)
  • Metadata:
    • Source ID
    • Timestamps
    • Batch Metadata

Pipeline mẫu cho RTSP Stream:

gst-launch-1.0 \
rtspsrc location=rtsp://camera1/stream ! decodebin ! video/x-raw(memory:NVMM),format=NV12 ! mux.sink_0 \
rtspsrc location=rtsp://camera2/stream ! decodebin ! video/x-raw(memory:NVMM),format=NV12 ! mux.sink_1 \
nvstreammux name=mux batch-size=2 width=1280 height=720 live-source=1 batched-push-timeout=40000 ! ...

4. Các lưu ý khi sử dụng GST-NVSTREAMMUX

  • Tương thích định dạng đầu vào:
    • Khung hình phải sử dụng bộ nhớ GPU (memory:NVMM) để tương thích với nvstreammux.
  • Đồng bộ hóa nguồn live:
    • Khi xử lý live sources (RTSP, camera), cần đặt live-source=1 và cấu hình batched-push-timeout phù hợp.
  • Cấu hình kích thước đầu ra:
    • Kích thước khung hình (width, height) nên được đặt thống nhất với mô hình hoặc thành phần xử lý tiếp theo.
  • Giới hạn batch size:
    • Batch size quá lớn có thể gây quá tải GPU, đặc biệt khi làm việc với độ phân giải cao.

Đây là 2 trong số 4 phần cơ bản của một pipeline của Deepstream, mình sẽ sớm ra thêm phần còn lại của Deepstream nha mọi người.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu về DeepFaceLab công cụ để tạo ra Deepfake thật sự hoàn hảo

I.Làm thế nào 'Furious 7' đã đưa Paul Walker quá cố trở lại cuộc sống. Dưới đây là video. .

0 0 22

- vừa được xem lúc

Hiểu sâu về You Only Look One-YOLOv1

Object detection: bài toán phát hiện + nhận diện vật thể. Bước một là đi tìm vị trí của vật thể trong toàn ảnh rồi bao quanh vật thể ấy bằng một khung hình chữ nhật được gọi là bounding box.

0 0 18

- vừa được xem lúc

TOP 5 BLOG VỀ IT ĐÁNG ĐỌC

Vào những lúc rảnh rỗi, các bạn thường sẽ làm gì? Coi phim, đi chơi, ...Có ai như mình lúc rảnh thì tìm 1 chỗ yên tĩnh nào đó đeo tai phone nghe những bài nhạc chill và đọc truyện và tìm các blog hay

0 0 17

- vừa được xem lúc

Học với tôi(bebuoi1) : BLOG! -> Tại sao lại có cookie và session

Câu hỏi của mình : Tại sao lại có cookie và session trong khi đã có tài khoản mật khẩu . --Tk mk nó giống như 1 cái cccd rồi mà tại sao CÓ NGƯỜI NÓI COOKIE NÓ LẠI GIỐNG CCCD ĐỂ ĐỊNH DANH NHỈ.

0 0 11

- vừa được xem lúc

Tại Sao Sử Dụng Ứng Dụng Lark

Bạn muốn tìm hiểu cách sử dụng Lark Messenger đơn giản, hiệu quả nhất? Trong bài viết sau Tanca sẽ hướng dẫn bạn các bước từ cơ bản đến nâng cao, giúp bạn tận dụng tối đa công cụ giao tiếp Lark Messen

0 0 14

- vừa được xem lúc

Tóm Tắt : YOLOv10: Real-Time End-to-End Object Detection

Tổng quan những cải tiến chính của YOLOv10 bao gồm có:. . NMS-Free Training. Spatial-channel decoupled downspamling.

0 0 15