Rozpoznawanie twarzy - część 2 - Instalacja

Zapraszam do dyskusji w temacie

Wszystkie polecenia użyte w filmie

Repozytorium Double Take

Instalacja dockera na Debian 11.2
Polecenia muszą być wykonywane z uprawnieniami root

apt update
apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt update
apt install docker-ce
systemctl status docker

Instalacja Deepstack na każdym linuksie z zainstalowanym dockerem
W filmie używam następującego polecenia do instalacji:
docker run -d --restart always -e VISION-FACE=True -v localstorage:/datastore -p 80:5000 deepquestai/deepstack:cpu-x5-beta

wersję cpu-x5-beta można zamienić na:
gpu - gdy posiadamy kartę graficzną NVIDIA
jetpack - gdy posiadamy NVIDIA Jetson
arm64 - gdy instalujemy na procesorach arm

Przykład minimalnej konfiguracji Double Take
mqtt:
host:
username: <użytkownik>
password: <hasło>
client_id: double_take

frigate:
url: http://: #port dla frigate zainstalowanego jako dodatek to 5000
labels:
- person

detectors:
deepstack:
url: http://:

1 polubienie

Cześć, zainstalowałem deepstack w wersji gpu w odrębnym docker, wersja ta wykorzystuje CUDA w karcie NVIDIA gt1030.
Wszystko w HA działa, ale gdy pojawia się więcej obiektów person, deepstack się zawiesza, pomaga reset kontenera docker.
Prawdopodobnie karta nie wyrabia, a to tylko jedna kamera, z wykrywaniem w niskiej rozdzielczości. Polecenie nvidia-smi pokazuje wykorzystanie przez deepstack prawie 100% pamięci GPU.
Gdy odpalę wersje deepstack CPU, nie ma tego problemu, ale działa za to wolniej.
Czy u Ciebie Artur jest podobnie?
Jaki dokładne obraz kontenera wykorzystujesz?
Dodam, że HA stoi na i5 8 generacji+ dysk m2+ 16gb RAM, HA wersja Debian+ docker.

u mnie przy trzech kamerach zajętość karty wygląda tak:
image

Jak ma co analizować to mam jakieś piki ale ciężko nawet je wychwycić
To że pamięć jest zajęta to dobrze (po to jest) ważne aby moc na tym nie cierpiała.

Cześć wszystkim.
Pierwszy mój post więc proszę o wyrozumiałość.
Bawię się HomeAssistant’em od grudnia zeszłego roku i jestem w coraz większym szoku jak wszechstronne jest to narzędzie. Zaczynałem od Raspberry 3, potem przyszło na proxmox na HP T620 4 rdzenie 4 wątki i teraz po przegranych walkach wydajnościowych z Frigate i DeepStack postawiłem wszystko na proxmox i serwerze 12 rdzeniowym 24 wątkowym.
Powiem dla ciekawostki tylko tyle, że u mnie żeby stara kamera 2Mp mogła iść na strumieniu mjpg potrzeba aż 10 wątków aby jakoś było to zjadliwe, dopiero przy zaprzęgnięciu 16 wątków idzie to płynnie. Przekonwertowanie mjpg na H264 to niesamowicie duże obciążenie maszyny.
Konkluzja z testów jest taka - musicie użyć do projektu z Frigate tylko kamer o kodowaniu H264 bo inaczej nie ma to sensu.
Jednak gdyby się ktoś upierał to daje config do frigate - kamery mjpg.
Dodatkowo jest tam też konfiguracja BIRDSEYE

mqtt:
  host: ........
  port: 1883
  topic_prefix: frigate
  client_id: frigate
  user: mqtt
  password: mqtt
  stats_interval: 60
  
  
  # Opcjonalnie: konfiguracja z Birdseye
birdseye:
  # Opcjonalnie: Włącz widok z Birdseye (domyślnie: pokazano poniżej)
  enabled: True
  # Opcjonalnie: Szerokość rozdzielczości wyjściowej (domyślnie: pokazana poniżej)
  width: 1280
  # Opcjonalnie: Wysokość rozdzielczości wyjściowej (domyślnie: pokazana poniżej)
  height: 720
  # 1 to najwyższa jakość, a 31 to najniższa. Kanały o niższej jakości zużywają mniej zasobów procesora.
  quality: 8
  # Opcjonalnie: tryb widoku. Dostępne opcje to: obiekty, ruch i ciągłość
  # obiektów - kamery są uwzględniane, jeśli miały śledzony obiekt w ciągu ostatnich 30 sekund
  # ruch - kamery są uwzględniane, jeśli ruch został wykryty w ciągu ostatnich 30 sekund
  # ciągłe - wszystkie kamery są włączone zawsze
  mode: objects    
    
  
  
cameras:
  wjazdtest:
    ffmpeg:
      input_args: -avoid_negative_ts make_zero -fflags nobuffer -flags low_delay -strict experimental -fflags +genpts+discardcorrupt -use_wallclock_as_timestamps 1
      output_args:
        record: -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v libx264 -an
        rtmp: -c:v libx264 -an -f flv

      inputs:
        - path: http://................./video4.mjpg
          roles:
            - detect
            - rtmp
            
    detect:    
        width: 1920
        height: 1080
    record:
        enabled: True
        events:
          retain:
            default: 10
    snapshots:
        enabled: True
        retain:
            default: 10
            
            
  edimax:
    ffmpeg:
      input_args: -avoid_negative_ts make_zero -fflags nobuffer -flags low_delay -strict experimental -fflags +genpts+discardcorrupt -use_wallclock_as_timestamps 1
      output_args:
        record: -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v libx264 -an
        rtmp: -c:v libx264 -an -f flv

      inputs:
      
        - path: http://................/mjpg/video.mjpg
          roles:
            - detect
            - rtmp
            
    detect:    
        width: 1920
        height: 1080
    record:
        enabled: True
        events:
          retain:
            default: 10
    snapshots:
        enabled: True
        retain:
            default: 10            




    objects:
  # Opcjonalnie: lista obiektów do śledzenia z labelmap.txt (domyślnie: pokazane poniżej)
      track:
        - person
        - car
        - cat
        - dog
detectors:
  cpu1:
    type: cpu
  cpu2:
    type: cpu    
    

Teraz prawdziwy powód pisania tego posta - miałem… w sumie to dalej mam (bo połączenie się restartuje co jakieś 40 sekund) problem z połączeniem double take z deepstack.
Połączenie dopiero mogło dojść do skutku jak zmieniłem konfigurację procesora w homeassistant na host - to dopiero ruszyło

i musiałem dodać na końcu konfiguracji w doubble take do deepstack’a timeout

detectors:
  deepstack:
    url: http://.............
    timeout: 30

Deepstack mam postawiony w tym samym proxmox’ie na osobnej wirtualnej maszynie i tam jak też zmieniłem typ procesora na host to przerwy w połączeniu po restarcie się zmniejszyły.
Dalej jednak jest to bardzo dalekie od ideału. Czy ktoś zna jakiś inny sposób na prawidłowe pożenienie tych programów?
Pozdrawiam

Witaj. Czy poradziłeś sobie z tymi przerwami? Ponieważ mam też ten problem.

Przy opcji host, Proxmox stara się tak zarządzać zasobami tak aby fizyczne rdzenie były przydzielone maszynie wirtualnej maszynie. HA dałeś 2 core, w przybliżeniu to jeden fizyczny rdzeń (bo jest dwu wątkowy), Deepstack ma 16 core czyli kolejne 8 rdzeni zostaje zarezerwowane, razem te dwie maszyny to 9 rdzeni, zostaly 3 rdzenie, co jeszcze dziala na tym Proxmoxie?
Czy na Proxmox jest wystarczająca ilość RAMu dla wirtualnych maszyn?

Ja mam HA na Proxmox HP t620 8Gb RAM 4 rdzenie 1.5. Na HA mam zainstalowany Frigare i DoubleTake. Na drugim kompie t620 4 GB Ram mam Deepstack

Wrzuciłem mu dodatkowe 32GB ramu i wydaje mi się, że przerwy są krótsze.
Nie sądzę aby użytkownik musiał się uciekać do takich nakładów aby jakoś przyzwoicie wymienić informacje między frigate, dipstack a double take. Myślę, że po prostu coś mam sknocone z ustawieniami, ale pomysły mi się skończyły.

Ten screen jest ściągnięty z internetu dlatego są na nim takie ustawienia

A jakie masz teraz przerwy? Co jaki czas? Ja również mialem kłopoty z połączeniem Deepstack z DoubleTake . Połączenie sie dokonalo po przeczytaniu twego wpisu. Zmieniłem na Host

Przerwa co ~20-30 sekund
utrata na 4-5 sekund

Mam pytanie. Czy po tej przerwie DeepStac u Ciebie też tak długo trwa połączenie z DoubleTake? Ponieważ u mnie to trwa różnie. Najdłużej to około 15 sekund. Deepstack mam zainstalowany na drugim kompie w Proxmox. Już robiłem testy instalując na innych komputerach i jest to samo. Może jakieś ustawienia Proxmox lub maszyny wirtualnej?

Mam to samo :frowning: - na dzien dzisiejszy temat do szuflady - niestety brak czasu, ale u mnie zmienia sie wszstko z minuty na minute, wiec moze byc i tak, ze jutro powroci temat na tapete :slight_smile:
powodzenia i przosze informuj o porazkach i sukcesach, bo to bardzo pomaga w rozwiazywaniu takich problemow

Ja mam problem z instalacją sterowników do corala usb na instalacji proxmox + hassos. Czy da się jakoś to ogarnąć ? Po podpięciu corala ani frigate ani proxmox nie widzą go prawidłowo.