ต่อจากบล็อกก่อนหน้า ติดตั้ง 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 ถูกโหลดใช้งาน
สำหรับความเร็ว Inference Speed ของโมเดลที่ใช้ ( YOLOv9-S ) อยู่ที่ประมาณ ~30 ms


