Open Bodengriller opened 1 year ago
Für die Nachwelt: Ja, es funktioniert!
Hier wurde noch darauf hingewiesen, dass die Dual-Edge nicht funktionieren kann, da nur eine Lane am WiFi-M.2-Port angebunden ist. (Vermutlich würde einfach nur eine TPU der Dual-Edge erkannt werden -> rausgeworfenes Geld)
Ich habe nun die CORAL M.2 ACCELERATOR A+E KEY drin und erfolgreich in einem Docker-LXC auf Proxmox durchmappen können.
@Bodengriller merci vielmal! 👍
Habe ebenfals den Coral M.2 A+E Key in meinem Futro im Wifi M.2 Slot verbaut und benutze ihn mit Proxmox im LXC Container mit Frigate (https://tteck.github.io/Proxmox/#frigate-lxc). Funktioniert soweit, allerding ist die Interefence Speed sehr hoch (200msec). Wie sieht dass bei dir aus?
Der Inference-Speed liegt bei mir im Schnitt irgendwo bei knapp über 8ms
Ich habe allerdings nicht das tteck-Template genutzt, bei mir läuft der LXC mit Debian 11 und Docker, in dem auch einige andere Containers laufen. Müsste ich vielleicht irgendwann mal upgraden, hab ich irgendwie wenig Bock drauf, läuft gut und stabil.
root@Docker:/home/frigate# cat /etc/*release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Hier meine LXC-Config:
arch: amd64
cores: 4
features: keyctl=1,nesting=1
hostname: Docker
memory: 6144
mp0: /mnt/frigate_storage/,mp=/media/frigate_storage
net0: name=eth0,bridge=vmbr0,firewall=1,gw=192.168.abc.1,hwaddr=12:1B:9B:9B:xx:yy,ip=192.168.abc.xxx/24,type=veth
onboot: 1
ostype: debian
rootfs: local-lvm:vm-151-disk-1,size=16G
startup: order=4
swap: 6144
unprivileged: 1
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.cgroup2.devices.allow: c 120:0 rwm
lxc.mount.entry: /dev/apex_0 dev/apex_0 none bind,optional,create=file
Mein Docker-Compose-File:
version: "3.9"
services:
frigate:
container_name: frigate
privileged: true # this may not be necessary for all setups
restart: unless-stopped
image: ghcr.io/blakeblackshear/frigate:stable
shm_size: "128mb" # update for your cameras based on calculation above
devices:
- /dev/apex_0:/dev/apex_0 # passes a PCIe Coral
- /dev/dri/renderD128 # for intel hwaccel
volumes:
- /etc/localtime:/etc/localtime:ro
- /home/frigate/:/config/
- /media/frigate_storage:/media/frigate
- /home/frigate/custom-start.sh:/custom-start.sh
- type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
target: /tmp/cache
tmpfs:
size: 1000000000
#entrypoint: ["/bin/bash", "/custom-start.sh"]
networks:
bridge-network:
ipv4_address: 172.20.0.12
dns:
- 127.0.0.1
- 192.168.abc.1
ports:
- "5000:5000"
- "1935:1935" # RTMP feeds
- "8554:8554" # RTSP feeds
environment:
LIBVA_DRIVER_NAME: "i965"
networks:
bridge-network:
external: true
name: my-bridge-network
(frag mich bitte nicht, wo ich damals den Wert für die shm_size her hatte...dafür müsste ich nochmal schwer in mich gehen)
Und hier meine frigate-config:
version: 0.14
detectors:
coral:
type: edgetpu
device: pci
#activate hardware acceleration
ffmpeg:
hwaccel_args: preset-vaapi
input_args: -rtsp_transport tcp
mqtt:
enabled: true
host: 192.168.abc.xxx
port: 1883
user: username
password: password
go2rtc:
streams:
Parkplatz:
- rtsp://192.168.abc.xxx/ch0_0.h264
Parkplatz_sub:
- ffmpeg:rtsp://192.168.abc.xxx/ch0_1.h264#video=h264#hardware
Carport:
- rtsp://192.168.abc.xxx/ch0_0.h264
Carport_sub:
- rtsp://192.168.abc.xxx/ch0_1.h264
Stellplatz:
- rtsp://192.168.abc.xxx/ch0_0.h264
Stellplatz_sub:
- rtsp://192.168.abc.xxx/ch0_1.h264
##########----------General ui----------##########
ui:
time_format: 24hour
strftime_fmt: '%d.%m.%Y %H:%M'
birdseye:
enabled: true
restream: false
mode: continuous
timestamp_style:
position: br
format: '%d.%m.%Y %H:%M:%S'
effect: solid
##########----------General-Detection-Config----------##########
objects:
track:
- car
- person
- bicycle
- motorcycle
- cat
- dog
filters:
car:
# Optional: minimum score for the object to initiate tracking (default: 0.5)
min_score: 0.5
# Optional: minimum decimal percentage for tracked object's computed score to be considered a true positive (default: 0.7)
threshold: 0.7
person:
# Optional: minimum score for the object to initiate tracking (default: 0.5)
min_score: 0.4
# Optional: minimum decimal percentage for tracked object's computed score to be considered a true positive (default: 0.7)
threshold: 0.7
review:
alerts:
labels:
- car
- person
- bicycle
- motorcycle
snapshots:
enabled: true
clean_copy: false
timestamp: true
bounding_box: true
retain:
default: 10
objects:
person: 30
record:
enabled: true
retain:
days: 7
mode: all
events:
pre_capture: 10
post_capture: 10
retain:
default: 30
mode: motion
##########----------Camera-Config----------##########
camera_groups: {}
cameras:
#####------Kamera Carport-----#####
Carport:
ui:
order: 1
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/Carport_sub
input_args: preset-rtsp-restream
roles:
- detect
- path: rtsp://127.0.0.1:8554/Carport
input_args: preset-rtsp-restream
roles:
- record
detect:
enabled: true
#width: 640
#height: 360
fps: 5
snapshots:
required_zones:
- driving_zone
review:
alerts:
required_zones:
- driving_zone
- parking_zone
detections:
required_zones:
- driving_zone
- parking_zone
motion:
mask:
0,1,0.192,1,0.16,0.47,0.403,0.383,0.497,0.389,0.5,0.408,0.796,0.454,0.775,0.777,0.689,0.805,0.566,0.9,0.457,1,1,1,1,0,0,0
threshold: 30
contour_area: 20
improve_contrast: 'true'
lightning_threshold: 0.7
zones:
driving_zone:
coordinates:
0.753,0.771,0.767,0.623,0.472,0.539,0.316,0.671,0.288,0.648,0.182,0.746,0.35,0.964,0.546,0.91,0.672,0.806
inertia: 3
loitering_time: 1
parking_zone:
coordinates:
0.371,0.419,0.292,0.468,0.293,0.646,0.319,0.665,0.477,0.535,0.771,0.619,0.78,0.518
inertia: 3
loitering_time: 0
objects: person
#####-------------------------#####
#####-----Kamera Parkplatz----#####
Parkplatz:
ui:
order: 2
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/Parkplatz_sub
input_args: preset-rtsp-restream
roles:
- detect
- path: rtsp://127.0.0.1:8554/Parkplatz
input_args: preset-rtsp-restream
roles:
- record
detect:
enabled: true
#width: 640
#height: 360
fps: 5
snapshots:
required_zones:
- driving_zone
review:
alerts:
required_zones:
- driving_zone
- street_zone
- parking_zone
detections:
required_zones:
- driving_zone
- street_zone
- parking_zone
motion:
mask:
0.5,1,0.428,0.787,0.158,0.849,0.156,0.272,0.437,0.246,0.579,0.296,0.582,0.283,0.853,0.417,0.802,0.815,0.522,1,1,1,1,0,0,0,0,1
threshold: 30
contour_area: 20
improve_contrast: 'true'
lightning_threshold: 0.7
zones:
driving_zone:
coordinates:
0.436,0.774,0.516,0.984,0.784,0.815,0.83,0.523,0.553,0.359,0.524,0.367,0.17,0.457,0.182,0.809
inertia: 3
loitering_time: 1
street_zone:
coordinates: 0.576,0.362,0.585,0.291,0.844,0.432,0.834,0.514
inertia: 3
loitering_time: 5
parking_zone:
coordinates: 0.175,0.448,0.178,0.339,0.435,0.285,0.542,0.358
loitering_time: 0
objects: person
#####-------------------------#####
#####----Kamera Stellplatz----#####
inertia: 3
Stellplatz:
ui:
order: 3
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/Stellplatz_sub
input_args: preset-rtsp-restream
roles:
- detect
- path: rtsp://127.0.0.1:8554/Stellplatz
input_args: preset-rtsp-restream
roles:
- record
detect:
enabled: true
#width: 640
#height: 360
fps: 5
motion:
mask:
0.284,1,0.228,0.678,0.191,0.244,0.512,0.132,0.768,0.2,0.725,0.729,0.562,1,1,1,1,0,0,0,0,1
threshold: 30
contour_area: 10
improve_contrast: 'true'
lightning_threshold: 0.75
#####-------------------------#####
vielleicht kannst du Anhand der Vergleiche irgendeine Auffälligkeit bei dir finden.
BTW: Ich bin nun zweitmal drüber gestolpert - Vorsicht, wenn du Proxmox upgradest...ein neuer Kernel hat bei mir jedes Mal dazu geführt, dass der Coral-Treiber neu aufgesetzt werden musste. Ich hänge hier mal meine letzten Notizen für die Nachwelt an - vielleicht bringt's irgendwann jemanden was
Ergänzung:
im Docker-Compose-File oben muss die Zeile
entrypoint: ["/bin/bash", "/custom-start.sh"]
raus...das war eine Leiche (Ich hab's oben auskommentiert)
Die Berechnung der shm_size ist hier erklärt: Die habe ich wohl sehr großzügig gewählt: (640 360 1.5 9 + 270480) / 1048576 = 3,224 MB 3,224 MB 3 + 30 = 39,672 MB <- 40MB hätten wohl ausgereicht....tjoar
Vielen Dank für die ausführliche Antwort. Gut zu wissen, das die identischen Hardware das zumindest hergibt. Den Coral Treiber hab ich auch aus dem Git Repo gebaut und installiert. Bisher gab es auch nach Kernel Updates kein Boot Problem. Was aber bei mir anders ist, ist das Durchreichen der Treiber für Intel HW Beschleunigung und des Coral Chips and den LXC Container. Ich habe das über die GUI (Resources) gemacht, dann steht in der LXC Config: dev0: /dev/dri/card0,gid=44 dev1: /dev/dri/renderD128,gid=104 dev2: /dev/apex_0,gid=1000
Hier werde ich zuerst ansetzten.
Danke für die Rückmeldung. Ich denke es könnte auch zukünftig einigen anderen Hilfestellung leisten, wenn sie über das gleiche Problem stolpern, daher die Bitte: Gib uns Feedback 😁
Der Futro S740 ist für den Standard - Heimautomatisierungsuser halt wirklich ein wirklich gutes und Stromsparendes Gerät
Hi, kann mir jemand sagen, ob man in dem WiFi-M.2-Port auch eine Google Coral TPU nutzen könnte?
z.B. CORAL M.2 ACCELERATOR MIT DUAL EDGE TPU oder CORAL M.2 ACCELERATOR A+E KEY
Ich spiele gerade mir frigade für meine Kameras herum, eine TPU entlastet die CPU bei der AI-Erkennung sehr stark. Eine USB-TPU wäre auch möglich, ist aber deutlich teurer als die einfache M.2-Version und freie USB-Ports kann man nie genug haben.