ต่อจากบล็อกก่อนหน้า ติดตั้ง NVIDIA Quadro P600 บน Proxmox เพื่อใช้กับ Container (CT) และ ติดตั้ง NVIDIA Container Toolkit เพื่อใช้งาน GPU ผ่าน Docker บล็อกนี้จะต่อยอดเข้าสู่การ config detectors ของ Frigate NVR เพื่อดึงพลัง Nvidia GPU มาใช้งานจริง

โดยในเวอร์ชันปัจจุบันของ Frigate v0.16.2 การใช้ Nvidia GPU จะต้องผ่าน ONNX เท่านั้น!

หมายเหตุ:
👉 ต้องใช้ Docker image ที่ลงท้ายด้วย -tensorrt เท่านั้น

ตัวอย่างไฟล์ docker-compose.yml โดยใช้ image 0.16.2-tensorrt และกำหนด resources สำหรับ GPU ผ่าน Docker

services:
  frigate:
    container_name: frigate
    restart: unless-stopped
    stop_grace_period: 30s
    image: ghcr.io/blakeblackshear/frigate:0.16.2-tensorrt
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    shm_size: 64mb
    cap_add:
      - CAP_PERFMON
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./config:/config
      - ./storage:/media/frigate
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - 5000:5000
    environment:
      - TZ=Asia/Bangkok

ตัวอย่างไฟล์ /config/config.yml ที่ตั้งค่าให้ Frigate ใช้ detector แบบ ONNX พร้อมกับ hwaccel_args: preset-nvidia เพื่อให้รองรับการประมวลผลด้วย Nvidia GPU

go2rtc:
  streams:
    front_house:
      - rtsp://admin:[email protected]:554/stream1

mqtt:
  enabled: false

detectors:
  onnx:
    type: onnx

model:
  model_type: yolo-generic
  width: 320
  height: 320
  input_tensor: nchw
  input_dtype: float
  path: /config/model_cache/yolov9-s-320.onnx
  labelmap_path: /labelmap/coco-80.txt

ffmpeg:
  hwaccel_args: preset-nvidia
  input_args: preset-rtsp-restream
  output_args:
    record: preset-record-generic-audio-aac

cameras:
  front_house:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/front_house
          roles:  
            - detect
    detect:
      enabled: true

record:
  enabled: true

เมื่อเริ่มรัน Frigate จะเห็น logs แสดงข้อความยืนยันว่า ONNX ถูกโหลดใช้งาน

ONNX: loaded onnxruntime module

สำหรับความเร็ว Inference Speed ของโมเดลที่ใช้ ( YOLOv9-S ) อยู่ที่ประมาณ ~30 ms

Detector Inference Speed