ในการใช้งาน 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 เฉพาะกล้องที่ต้องการจริง ๆ เพื่อประหยัดทรัพยากร
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

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

💡 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 เท่า

