Google Coral sehr langsam und hohe CPU Auslastung bei Frigate

Hallo Community,

ich habe homeassistant als VM in proxmox laufen. In homeassistant läuft das frigate addon. Das ganze ist auf einem NiPoGi P1 Mini-PC aufgesetzt. Nun habe ich einen google Coral per USB-C angebunden. Dieser wird in den Logs von Frigate auf erkannt “TPU found”.

Das Problem ist nun, dass die Detektoren Inferenzgeschwindigkeit des Corals dauerhaft ca. 175 ms beträgt und die CPU-Auslastung des Detektors teilweise auf bis zu 90 % hoch geht.

Ich habe den Coral schon mit 4 verschiedenen USB Kabel und an allen USB-Ports des PCs angebunden, jedoch ohne einen Unterschied zu erreichen.

Die frigate.yaml sieht so aus:

mqtt:
  host: 192.168.178.210
  user: mqtt_frigate
  password: XYZ

detectors:
  coral:
    type: edgetpu
    device: usb

objects:
  track:
    - person
  filters:
    person:
      threshold: 0.5

motion:
  improve_contrast: true
  lightning_threshold: 0.4
  threshold: 40
  contour_area: 20

record:
  enabled: true
  retain:
    days: 1
    mode: motion
  alerts:
    retain:
      days: 30
      mode: active_objects
  detections:
    retain:
      days: 30
      mode: active_objects
  

#snapshots:
#  enabled: true
#  timestamp: true
#  bounding_box: true
#  retain:
#    default: 30

cameras:
  Eingang:
    ffmpeg:
      inputs:
        - path: rtsp://admin:FeTi2211@192.168.178.57:554/h264Preview_01_sub
          roles:
            - detect
        - path: rtsp://admin:FeTi2211@192.168.178.57:554/h264Preview_01_sub
          roles:
            - record
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 3


    motion:
      mask: 0.335,0,0.335,0.066,0.647,0.066,0.647,0.008
  Balkon:
    ffmpeg:
      inputs:
        - path: rtsp://admin:FeTi2211@192.168.178.59:554/h264Preview_01_sub
          roles:
            - detect
        - path: rtsp://admin:FeTi2211@192.168.178.59:554/h264Preview_01_sub
          roles:
            - record
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 3

    motion:
      mask: 0.336,0,0.339,0.063,0.641,0.057,0.64,0
  Hof:
    ffmpeg:
      inputs:
        - path: rtsp://admin:FeTi2211@192.168.178.126:554/h264Preview_01_sub
          roles:
            - detect
        - path: rtsp://admin:FeTi2211@192.168.178.126:554/h264Preview_01_main
          roles:
            - record
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 3

    motion:
      mask: 0.353,0,0.348,0.063,0.643,0.063,0.642,0
  Klingel:
    ffmpeg:
      inputs:
        - path: rtsp://admin:FeTi2211@192.168.178.125:554/h264Preview_01_sub
          roles:
            - detect
        - path: rtsp://admin:FeTi2211@192.168.178.125:554/h264Preview_01_main
          roles:
            - record
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 3
    motion:
      mask: 0.346,0,0.347,0.061,0.644,0.059,0.644,0
version: 0.16-0

Und in proxmox wird Coral erkannt:

root@KoeberHome:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 18d1:9302 Google Inc. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 002: ID 05e3:0626 Genesys Logic, Inc. Hub
Bus 002 Device 004: ID 0bc2:331a Seagate RSS LLC Desktop HDD 5TB (ST5000DM000)
Bus 002 Device 005: ID 0bc2:ab45 Seagate RSS LLC Backup+ Hub
Bus 002 Device 006: ID 0bc2:ab38 Seagate RSS LLC Backup Plus Hub (Mass Storage)
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 003 Device 005: ID 0bc2:ab44 Seagate RSS LLC Backup Plus Hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Könnt ihr mir weiterhelfen?

Vielen Dank schonmal und ein schönes Wochenende!

Benutze zwar keine Coral TPU für Frigate, aber wenn ich eine hätte, würde ich die auch an einen USB 3 Port durchreichen und nicht wie aktuell übers Bottle Neck USB 2 betreiben…

Bus 001 Device 003: ID 18d1:9302 Google Inc.

Das Problem hatte ich ebenfalls. Proxmox reicht den USB-3-Port nicht zuverlässig in eine VM durch, wodurch das Gerät effektiv nur als USB 2.0 läuft und es immer wieder zu Resets kommt.

Eine Möglichkeit ist, den kompletten USB-Controller an die VM durchzureichen. Das funktioniert, hat aber den Nachteil, dass alle anderen VMs keinen USB-Zugriff mehr haben.

Ich habe mich deshalb dafür entschieden, das Ganze in einen LXC-Container zu verlagern. Dort werden 5.000 Mbit/s erreicht – seitdem läuft alles stabil.

Ich habe diese Geschichte mit dem “Durchreichen” auch probiert. Dann habe ich einen dedizierten PC unter Ubuntu Server installiert (ein alter HP Mini PC reicht da aus) und frigate mit docker-compose eingebunden. Der Coral läuft auf normalem USB 2 perfekt.

Vielleicht kannst du mal schauen ob die Motion Aufzeichnung ständig aktiv ist und aufzeichnet. Das frisst IO, Disk und Performance. Weniger ist hier mehr,