ในการใช้งาน Frigate NVR ส่วนที่ถือว่าเป็นหัวใจสำคัญที่สุดก็คือการ config detectors เพื่อให้ AI Object Detection ทำงานได้อย่างมีประสิทธิภาพ แต่ในช่วงแรกนั้น hardware ที่รองรับยังมีไม่มาก โดยตัวที่ได้รับความนิยมมากที่สุดคือ Google Coral

อย่างไรก็ตาม หากใครที่ใช้เครื่องที่มี Intel GPU อยู่แล้ว ก็สามารถนำมาใช้งานกับ Frigate ได้เช่นกัน ซึ่งถือว่าเป็นการต่อยอดจากบล็อกก่อนหน้า การ Config ffmpeg hwaccel ใน Frigate

หมายเหตุ: ต้องทำการ Passthrough Intel GPU เข้าเครื่อง LXC Container ก่อน

1. Config Detector ด้วย OpenVINO

การกำหนด detector ในไฟล์ config.yml โดยใช้ OpenVINO

อ้างอิง: OpenVINO Detector

detectors:
  ov:
    type: openvino
    device: GPU

2. Config Model

การตั้งค่า model ที่ใช้สำหรับ object detection โดย OpenVINO คือ SSDLite MobileNet v2

อ้างอิง: SSDLite MobileNet v2

model:
  width: 300
  height: 300
  input_tensor: nhwc
  input_pixel_format: bgr
  path: /openvino-model/ssdlite_mobilenet_v2.xml
  labelmap_path: /openvino-model/coco_91cl_bkgr.txt

3. เปิดการ Detect เฉพาะกล้อง

กำหนดกล้องที่ต้องการให้ Frigate ทำ object detection โดยเปิด detect เฉพาะกล้องที่ต้องการจริง ๆ เพื่อประหยัดทรัพยากร

อ้างอิง: การ Config Frigate NVR ให้บันทึก 24/7

cameras:
  front_house:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/front_house
          roles:
            - record
            - detect
    detect:
      enabled: true
      width: 640
      height: 360
      fps: 5 
  living_room:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/living_room
          roles:
            - record
  back_house:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/back_house
          roles:
            - record

ตรวจสอบว่า detector ใช้งาน GPU จริง ๆ ได้ด้วยคำสั่ง

sudo intel_gpu_top

จะเห็น activity ของ process frigate.detector แสดงว่า GPU ถูกใช้งานสำหรับ object detection

Config Detectors ของ Frigate ด้วย Intel GPU

4. แก้ไข Service ของ Frigate

เพื่อให้ Frigate เข้าถึง GPU performance counters แก้ไขไฟล์ docker-compose.yml

อ้างอิง: CAP_PERFMON

services:
  frigate:
    cap_add:
      - CAP_PERFMON

นอกจากนี้ สำหรับ Linux kernel บางเวอร์ชัน อาจต้องปรับ perf_event_paranoid

หมายเหตุ: ระบบที่ใช้ Proxmox VE 9.0.9

# ทดสอบตั้งค่าแบบชั่วคราว
sh -c 'echo 0 >/proc/sys/kernel/perf_event_paranoid'
# ตั้งค่าแบบถาวร ให้คงอยู่หลัง restart
sh -c 'echo kernel.perf_event_paranoid=0 >> /etc/sysctl.d/local.conf'
  • ตั้งค่า perf_event_paranoid=0 → เพื่อเข้าถึง performance counters สำหรับ non-root user
  • อ้างอิง: Proxmox Host Paranoia

Config Detectors ของ Frigate ด้วย Intel GPU

💡 Tip: เลือกใช้ CPU หรือ GPU

นอกจากการใช้งาน Intel GPU แล้ว Frigate ยังสามารถเลือกใช้ CPU ผ่าน OpenVINO ได้ด้วย

ตัวอย่างการตั้งค่าใช้ CPU

detectors:
  ov:
    type: openvino
    device: CPU

หรือถ้าต้องการให้มีทั้ง GPU และ CPU พร้อมกัน

detectors:
  ov_gpu:
    type: openvino
    device: GPU
  ov_cpu:
    type: openvino
    device: CPU

วิธีนี้ช่วยให้ Frigate สามารถสลับไปใช้ CPU ได้เมื่อ GPU ไม่เพียงพอ และยังทำให้ระบบมีความยืดหยุ่นมากขึ้น จากการทดสอบ Detector Inference Speed พบว่า CPU ใช้เวลามากกว่า GPU ประมาณเกือบ 1 เท่า

Config Detectors ของ Frigate ด้วย Intel GPU