Operace prostorové analýzy

Prostorová analýza umožňuje analýzu streamovaného videa v reálném čase z fotoaparátů. Pro každé zařízení fotoaparátu, které nakonfigurujete, operace prostorové analýzy vygenerují výstupní datový proud zpráv JSON odeslaných do vaší instance Azure IoT Hub.

Kontejner prostorové analýzy implementuje následující operace:

Identifikátor operace Description
cognitiveservices.vision.spatialanalysis-personcount Spočítá lidi v určené zóně v zorné oblasti fotoaparátu. Aby personCount mohl zaznamenávat přesný součet, musí být zóna plně pokrytá jedním fotoaparátem.
Vysílá počáteční událost personCountEvent a při změně počtu pak události personCountEvent.
cognitiveservices.vision.spatialanalysis-personcrossingline Sleduje, kdy osoba překročí určenou čáru v zorné oblasti fotoaparátu.
Vysílá událost personLineEvent, když osoba překročí čáru a poskytne informace o směru.
cognitiveservices.vision.spatialanalysis-personcrossingpolygon Vysílá událost personZoneEnterExitEvent, když osoba vstoupí do zóny nebo ji opustí, a poskytne směrové informace s očíslované straně křížené zóny. Vysílá událost personZoneDwellTimeEvent, když osoba opustí zónu a poskytne směrové informace a také počet milisekund, které osoba strávila uvnitř zóny.
cognitiveservices.vision.spatialanalysis-persondistance Sleduje, kdy lidé porušují pravidlo vzdálenosti.
Pravidelně vysílá událost personDistanceEvent s umístěním každého porušení vzdálenosti.
cognitiveservices.vision.spatialanalysis Obecná operace, kterou je možné použít ke spuštění všech výše uvedených scénářů. Tato možnost je užitečnější, když chcete na jednom fotoaparátu spustit více scénářů nebo efektivněji používat systémové prostředky (např. GPU).

Všechny výše uvedené operace jsou k dispozici také ve verzi , která má možnost vizualizovat snímky videa během .debug jejich zpracování. Abyste umožnili vizualizaci snímků videa a událostí, budete muset spustit xhost + na hostitelském počítači.

Identifikátor operace Description
cognitiveservices.vision.spatialanalysis-personcount.debug Spočítá lidi v určené zóně v zorné oblasti fotoaparátu.
Vysílá počáteční událost personCountEvent a při změně počtu pak události personCountEvent.
cognitiveservices.vision.spatialanalysis-personcrossingline.debug Sleduje, kdy osoba překročí určenou čáru v zorné oblasti fotoaparátu.
Vysílá událost personLineEvent, když osoba překročí čáru a poskytne informace o směru.
cognitiveservices.vision.spatialanalysis-personcrossingpolygon.debug Vysílá událost personZoneEnterExitEvent, když osoba vstoupí do zóny nebo ji opustí, a poskytne směrové informace s očíslované straně křížené zóny. Vysílá událost personZoneDwellTimeEvent, když osoba opustí zónu a poskytne směrové informace a také počet milisekund, které osoba strávila uvnitř zóny.
cognitiveservices.vision.spatialanalysis-persondistance.debug Sleduje, kdy lidé porušují pravidlo vzdálenosti.
Pravidelně vysílá událost personDistanceEvent s umístěním každého porušení vzdálenosti.
cognitiveservices.vision.spatialanalysis.debug Obecná operace, kterou je možné použít ke spuštění všech výše uvedených scénářů. Tato možnost je užitečnější, když chcete na jednom fotoaparátu spustit více scénářů nebo efektivněji používat systémové prostředky (např. GPU).

Prostorovou analýzu je také možné spustit pomocí Live Video Analytics jako modulu Video AI.

Identifikátor operace Description
cognitiveservices.vision.spatialanalysis-personcount.livevideoanalytics Spočítá lidi v určené zóně v zorné oblasti fotoaparátu.
Vysílá počáteční událost personCountEvent a při změně počtu pak události personCountEvent.
cognitiveservices.vision.spatialanalysis-personcrossingline.livevideoanalytics Sleduje, kdy osoba překročí určenou čáru v zorné oblasti fotoaparátu.
Vysílá událost personLineEvent, když osoba překročí čáru a poskytne informace o směru.
cognitiveservices.vision.spatialanalysis-personcrossingpolygon.livevideoanalytics Vysílá událost personZoneEnterExitEvent, když osoba vstoupí do zóny nebo ji opustí, a poskytne směrové informace s očíslované straně křížené zóny. Vysílá událost personZoneDwellTimeEvent, když osoba opustí zónu a poskytne směrové informace a také počet milisekund, které osoba strávila uvnitř zóny.
cognitiveservices.vision.spatialanalysis-persondistance.livevideoanalytics Sleduje, kdy lidé porušují pravidlo vzdálenosti.
Pravidelně vysílá událost personDistanceEvent s umístěním každého porušení vzdálenosti.
cognitiveservices.vision.spatialanalysis.livevideoanalytics Obecná operace, kterou je možné použít ke spuštění všech výše uvedených scénářů. Tato možnost je užitečnější, když chcete na jednom fotoaparátu spustit více scénářů nebo efektivněji používat systémové prostředky (např. GPU).

Live Video Analytics jsou také dostupné ve verzi .debug (např. cognitiveservices.vision.spatialanalysis-personcount.livevideoanalytics.debug), která má schopnost vizualizovat snímky videa jako zpracovávaná. Pokud chcete povolit vizualizaci snímků videa a událostí, budete muset spustit na xhost + hostitelském počítači.

Důležité

Modely AI počítačového zpracování obrazu detekují a vyhledáují lidskou přítomnost ve video záběrech a výstupech pomocí ohraničující rámečku kolem lidského těla. Modely AI se nepokoušejí objevit identity nebo demografické údaje jednotlivců.

Toto jsou parametry vyžadované jednotlivými operacemi prostorové analýzy.

Provozní parametry Description
ID operace Identifikátor operace z tabulky výše.
enabled Logická hodnota: true nebo false
VIDEO_URL Adresa URL RTSP zařízení fotoaparátu (příklad: rtsp://username:password@url ). Prostorová analýza podporuje datový proud s kódováním H.264 prostřednictvím rtsp, http nebo mp4. Video_URL lze zadat jako obfuskovanou řetězcovou hodnotu base64 pomocí šifrování AES. Pokud je adresa URL videa obfuskovaná, je potřeba ji zadat jako KEY_ENV IV_ENV proměnné prostředí. Ukázkový nástroj pro generování klíčů a šifrování najdete tady.
VIDEO_SOURCE_ID Popisný název zařízení fotoaparátu nebo streamu videa. Vrátí se s výstupem JSON události.
VIDEO_IS_LIVE True pro fotoaparáty; false pro zaznamenaná videa.
VIDEO_DECODE_GPU_INDEX Který GPU k dekódování snímku videa Ve výchozím nastavení je to 0. Měl by být stejný jako v gpu_index konfiguraci jiného uzlu, jako je a DETECTOR_NODE_CONFIG CAMERACALIBRATOR_NODE_CONFIG .
INPUT_VIDEO_WIDTH Šířka snímku vstupního videa nebo streamu (např. 1920). Toto je volitelné pole, a pokud je k dispozici, bude rámeček škálován na tuto dimenzi a zachová se poměr stran.
DETECTOR_NODE_CONFIG JSON značí, na kterém GPU se má uzel detektoru spustit. Měl by mít následující formát: "{ \"gpu_index\": 0 }",
TRACKER_NODE_CONFIG JSON označující, jestli se má vypočítat rychlost v uzlu sledování, nebo ne. Měl by mít následující formát: "{ \"enable_speed\": true }",
CAMERA_CONFIG JSON označující parametry zkalibrované kamery pro více fotoaparátů. Pokud dovednost, kterou jste použili, vyžaduje vychytávku a už máte parametr fotoaparátu, můžete tuto konfiguraci použít k přímému poskytnutí. Měl by mít následující formát: "{ \"cameras\": [{\"source_id\": \"endcomputer.0.persondistancegraph.detector+end_computer1\", \"camera_height\": 13.105561256408691, \"camera_focal_length\": 297.60003662109375, \"camera_tiltup_angle\": 0.9738943576812744}] }" , se používá k source_id identifikaci jednotlivých fotoaparátů. Můžete ji získat z události, source_info která jsme publikovali. Projeví se pouze v nástroji do_calibration=false v nástroji DETECTOR_NODE_CONFIG .
CAMERACALIBRATOR_NODE_CONFIG JSON, který označuje, který procesor má spustit uzel kalibrace kamery a zda se má použít kalibrace. Měl by být v následujícím formátu: "{ \"gpu_index\": 0, \"do_calibration\": true, \"enable_orientation\": true}",
CALIBRATION_CONFIG JSON označující parametry pro řízení způsobu, jakým funguje kalibrace kamery. Měl by být v následujícím formátu: "{\"enable_recalibration\": true, \"quality_check_frequency_seconds\": 86400}",
SPACEANALYTICS_CONFIG Konfigurace JSON pro zónu a řádek, jak je uvedeno níže.
ENABLE_FACE_MASK_CLASSIFIER True Pokud chcete, aby se zjistilo, že uživatelé mají ve videu v datovém proudu více uživatelů, False zakažte ho Ve výchozím nastavení je tato hodnota zakázaná. Detekce masky obličeje vyžaduje, aby byl parametr šířky vstupní videa 1920 "INPUT_VIDEO_WIDTH": 1920 . Atribut masky obličeje nebude vrácen, pokud se zjištěné osoby netýkají kamery nebo jsou příliš daleko od ní. Další informace najdete v průvodci umístěním kamery .

Nastavení parametrů uzlu detektoru

Toto je příklad parametrů DETECTOR_NODE_CONFIG pro všechny operace prostorové analýzy.

{
"gpu_index": 0,
"enable_breakpad": false
}
Název Typ Description
gpu_index řetězec Index GPU, na kterém se tato operace spustí
enable_breakpad bool Určuje, jestli se má povolit Breakpad, který se používá ke generování výpisu stavu systému pro použití při ladění. falseVe výchozím nastavení je to. Pokud ho nastavíte na true , budete také muset přidat "CapAdd": ["SYS_PTRACE"] do HostConfig části kontejneru createOptions . Ve výchozím nastavení se výpis stavu systému nahraje do aplikace RealTimePersonTracking AppCenter, pokud chcete, aby se výpisy paměti nahrály do vlastní aplikace AppCenter, můžete proměnnou prostředí přepsat RTPT_APPCENTER_APP_SECRET pomocí tajného kódu aplikace.

Nastavení parametrů uzlu kalibrace kamery

Toto je příklad CAMERACALIBRATOR_NODE_CONFIG parametrů pro všechny operace prostorové analýzy.

{
  "gpu_index": 0,
  "do_calibration": true,
  "enable_breakpad": false,
  "enable_orientation": true
}
Název Typ Description
do_calibration řetězec Indikuje, že je zapnutá kalibrace. do_calibration aby funkce cognitiveservices Account. Vision. spatialanalysis-persondistance fungovala správně, musí mít hodnotu true. do_calibration ve výchozím nastavení je nastaveno na True .
enable_breakpad bool Určuje, jestli se má povolit Breakpad, který se používá ke generování výpisu stavu systému pro použití při ladění. falseVe výchozím nastavení je to. Pokud ho nastavíte na true , budete také muset přidat "CapAdd": ["SYS_PTRACE"] do HostConfig části kontejneru createOptions . Ve výchozím nastavení se výpis stavu systému nahraje do aplikace RealTimePersonTracking AppCenter, pokud chcete, aby se výpisy paměti nahrály do vlastní aplikace AppCenter, můžete proměnnou prostředí přepsat RTPT_APPCENTER_APP_SECRET pomocí tajného kódu aplikace.
enable_orientation bool Označuje, zda chcete vypočítat orientaci pro zjištěné osoby, nebo ne. enable_orientation ve výchozím nastavení je nastaveno na True .

Konfigurace kalibrace

Toto je příklad CALIBRATION_CONFIG parametrů pro všechny operace prostorové analýzy.

{
  "enable_recalibration": true,
  "calibration_quality_check_frequency_seconds": 86400,
  "calibration_quality_check_sample_collect_frequency_seconds": 300,
  "calibration_quality_check_one_round_sample_collect_num": 10,
  "calibration_quality_check_queue_max_size": 1000,
  "calibration_event_frequency_seconds": -1
}
Název Typ Description
enable_recalibration bool Určuje, zda je zapnuta automatická rekalibrace. Výchozí je true.
calibration_quality_check_frequency_seconds int Minimální počet sekund mezi jednotlivými změnami kvality k určení, jestli je nutná znovu kalibrace. Výchozí hodnota je 86400 (24 hodin). Používá se pouze v případě enable_recalibration=True .
calibration_quality_check_sample_collect_frequency_seconds int Minimální počet sekund mezi shromažďováním nových vzorků dat pro rekalibraci a kontrolu kvality. Výchozí hodnota je 300 (5 minut). Používá se pouze v případě enable_recalibration=True .
calibration_quality_check_one_round_sample_collect_num int Minimální počet nových vzorků dat, které se mají shromáždit na konci kolekce vzorků Výchozí je 10. Používá se pouze v případě enable_recalibration=True .
calibration_quality_check_queue_max_size int Maximální počet ukázek dat, které se mají uložit při kalibraci modelu kamery Výchozí je 1000. Používá se pouze v případě enable_recalibration=True .
calibration_event_frequency_seconds int Frekvence výstupu (sekundy) událostí kalibrace kamery Hodnota -1 označuje, že kalibrace kamery by neměla být odeslána, pokud nebyly změněny informace o kalibraci kamery. Výchozí je -1.

Výstup kalibrace kamery

Toto je příklad výstupu z kalibrace kamery, pokud je povolený. Elipsy označují více objektů stejného typu v seznamu.

{
  "type": "cameraCalibrationEvent",
  "sourceInfo": {
    "id": "camera1",
    "timestamp": "2021-04-20T21:15:59.100Z",
    "width": 640,
    "height": 360,
    "frameId": 531,
    "cameraCalibrationInfo": {
      "status": "Calibrated",
      "cameraHeight": 13.294151306152344,
      "focalLength": 372.0000305175781,
      "tiltupAngle": 0.9581864476203918,
      "lastCalibratedTime": "2021-04-20T21:15:59.058"
    }
  },
  "zonePlacementInfo": {
    "optimalZoneRegion": {
      "type": "POLYGON",
       "points": [
        {
          "x": 0.8403755868544601,
          "y": 0.5515320334261838
        },
        {
          "x": 0.15805946791862285,
          "y": 0.5487465181058496
        },
        ...
      ],
      "name": "optimal_zone_region"
    },
    "fairZoneRegion": {
      "type": "POLYGON",
      "points": [
        {
          "x": 0.7871674491392802,
          "y": 0.7437325905292479
        },
        {
          "x": 0.22065727699530516,
          "y": 0.7325905292479109
        },
        ...
      ],
      "name": "fair_zone_region"
    },
    "uniformlySpacedPersonBoundingBoxes": [
      {
        "type": "RECTANGLE",
        "points": [
          {
            "x": 0.0297339593114241,
            "y": 0.0807799442896936
          },
          {
            "x": 0.10015649452269171,
            "y": 0.2757660167130919
          }
        ]
      },
      ...
    ],
    "personBoundingBoxGroundPoints": [
      {
        "x": -22.944068908691406,
        "y": 31.487680435180664
      },
      ...
    ]
  }
}

Podrobnosti najdete v tématu o výstupu operací prostorové analýzy source_info .

Název pole ZonePlacementInfo Typ Description
optimalZonePolygon object Mnohoúhelník v imagi fotoaparátu, kde lze umístit řádky nebo zóny pro vaše operace pro dosažení optimálních výsledků.
Každá dvojice hodnot představuje x, y pro vrcholy mnohoúhelníku. Mnohoúhelník představuje oblasti, ve kterých jsou lidé sledováni nebo počítány, a body mnohoúhelníku jsou založeny na normalizovaných souřadnicích (0-1), kde je levý horní roh (0,0, 0,0) a pravý dolní roh je (1,0, 1,0).
fairZonePolygon object Mnohoúhelník v imagi fotoaparátu, kde můžete umístit řádky nebo zóny pro vaše operace, ale možná ne optimální výsledky.
Podrobné optimalZonePolygon vysvětlení obsahu najdete výše.
uniformlySpacedPersonBoundingBoxes list Seznam ohraničujících polí uživatelů v imagi kamery, který je v reálném čase distribuován rovnoměrně. Hodnoty jsou založeny na normalizovaných souřadnicích (0-1).
personBoundingBoxGroundPoints list Seznam souřadnic na rovině podlahy vzhledem ke kameře Každá souřadnice odpovídá pravé dolní části ohraničujícího pole v uniformlySpacedPersonBoundingBoxes rámci se stejným indexem.
centerGroundPointdalší podrobnosti o tom, jak se počítají souřadnice podlahové roviny, najdete v poli ve formátu JSON pro cognitiveservices account. vision. spatialanalysis-persondistance AI Přehledy části.

Příklad výstupu informací o umístění zóny ve vizuálním snímku videa:  vizualizace informací o umístění zóny

Informace o umístění zóny poskytují návrhy pro vaše konfigurace, ale pro dosažení nejlepších výsledků se musí stále dodržet pokyny v konfiguraci kamery .

Nastavení parametrů rychlosti

Výpočet rychlosti můžete nakonfigurovat pomocí nastavení parametrů uzlu sledování.

{
"enable_speed": true,
}
Název Typ Description
enable_speed bool Označuje, zda chcete vypočítat rychlost pro zjištěné lidi nebo ne. enable_speed ve výchozím nastavení je nastaveno na True . Důrazně doporučujeme povolit jak rychlost, tak orientaci, aby bylo možné co nejlépe odhadnout hodnoty.

Konfigurace a výstup operací prostorové analýzy

Konfigurace zóny pro cognitiveservices Account. Vision. spatialanalysis-personcount

Toto je příklad vstupu JSON pro parametr SPACEANALYTICS_CONFIG, který konfiguruje zónu. Pro tuto operaci můžete nakonfigurovat více zón.

{
  "zones": [
    {
      "name": "lobbycamera",
      "polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
      "events": [
        {
          "type": "count",
          "config": {
            "trigger": "event",
            "threshold": 16.00,
            "focus": "footprint"
          }
        }
      ]
    }
  ]
}
Název Typ Description
zones list Seznam zón.
name řetězec Popisný název této zóny.
polygon list Každá dvojice hodnot představuje x, y pro vrcholy mnohoúhelníku. Mnohoúhelník představuje oblasti, ve kterých jsou lidé sledováni nebo počítány, a body mnohoúhelníku jsou založeny na normalizovaných souřadnicích (0-1), kde je levý horní roh (0,0, 0,0) a pravý dolní roh je (1,0, 1,0).
threshold float Pokud je osoba větší než tento počet pixelů v zóně, dojde k odchozímu přenosu událostí.
type řetězec Pro cognitiveservices Account. Vision. spatialanalysis-personcount by to mělo být count .
trigger řetězec Typ triggeru pro odeslání události. Podporované hodnoty jsou event pro odesílání událostí při změně počtu nebo interval pro pravidelné posílání událostí bez ohledu na to, jestli se počet změnil nebo ne.
output_frequency int Rychlost, s jakou jsou události odchozí Když output_frequency je = X, každá událost X je výstupní, ex. output_frequency = 2 znamená, že každá další událost je výstup. output_frequencyJe použitelný pro i event interval .
focus řetězec Umístění bodu v ohraničujícím poli osoby používané k výpočtu událostí. Hodnota fokusu může být footprint (nároky na osobu), (v ohraničujícím poli ve středu osoby) (v bottom_center center ohraničujícím poli středu).

Konfigurace řádku pro cognitiveservices Account. Vision. spatialanalysis-personcrossingline

Toto je příklad vstupu JSON pro parametr SPACEANALYTICS_CONFIG, který konfiguruje čáru. Pro tuto operaci můžete nakonfigurovat více překřížených čar.

{
   "lines": [
       {
           "name": "doorcamera",
           "line": {
               "start": {
                   "x": 0,
                   "y": 0.5
               },
               "end": {
                   "x": 1,
                   "y": 0.5
               }
           },
           "events": [
               {
                   "type": "linecrossing",
                   "config": {
                       "trigger": "event",
                       "threshold": 16.00,
                       "focus": "footprint"
                   }
               }
           ]
       }
   ]
}
Název Typ Description
lines list Seznam řádků
name řetězec Popisný název tohoto řádku
line list Definice řádku Toto je směrná čára, která vám umožní pochopit "vstup" vs. "Exit".
start dvojice hodnot souřadnice x, y pro počáteční bod řádku Hodnoty float označují polohu vrcholu vzhledem k hornímu a levému rohu. Chcete-li vypočítat absolutní hodnoty x, y, vynásobte tyto hodnoty velikostí rámečku.
end dvojice hodnot souřadnice x, y pro koncový bod řádku Hodnoty float označují polohu vrcholu vzhledem k hornímu a levému rohu. Chcete-li vypočítat absolutní hodnoty x, y, vynásobte tyto hodnoty velikostí rámečku.
threshold float Pokud je osoba větší než tento počet pixelů v zóně, dojde k odchozímu přenosu událostí. Výchozí hodnota je 16. To je doporučená hodnota pro dosažení maximální přesnosti.
type řetězec Pro cognitiveservices Account. Vision. spatialanalysis-personcrossingline by to mělo být linecrossing .
trigger řetězec Typ triggeru pro odeslání události.
Podporované hodnoty: událost: aktivuje se, když někdo přeškrtne řádek.
focus řetězec Umístění bodu v ohraničujícím poli osoby používané k výpočtu událostí. Hodnota fokusu může být footprint (nároky na osobu), (v ohraničujícím poli ve středu osoby) (v bottom_center center ohraničujícím poli středu). Výchozí hodnota je.

Konfigurace zóny pro cognitiveservices Account. Vision. spatialanalysis-personcrossingpolygon

Toto je příklad vstupu JSON pro parametr SPACEANALYTICS_CONFIG, který konfiguruje zónu. Pro tuto operaci můžete nakonfigurovat více zón.

{
"zones":[
   {
       "name": "queuecamera",
       "polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
       "events":[{
           "type": "zonecrossing",
           "config":{
               "trigger": "event",
               "threshold": 48.00,
               "focus": "footprint"
               }
           }]
   },
   {
       "name": "queuecamera1",
       "polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
       "events":[{
           "type": "zonedwelltime",
           "config":{
               "trigger": "event",
               "threshold": 16.00,
               "focus": "footprint"
               }
           }]
   }]
}
Název Typ Description
zones list Seznam zón.
name řetězec Popisný název této zóny.
polygon list Každá dvojice hodnot představuje x, y pro vrcholy mnohoúhelníku. Mnohoúhelník představuje oblasti, ve kterých jsou lidé sledováni nebo počítáni. Hodnoty float označují polohu vrcholu vzhledem k hornímu a levému rohu. Chcete-li vypočítat absolutní hodnoty x, y, vynásobte tyto hodnoty velikostí rámečku.
target_side int Určuje stranu v zóně definované nástrojem polygon k měření toho, jak dlouhá lidé čelí této straně v zóně. ' dwellTimeForTargetSide ' bude mít za výsledek odhadovaný čas. Každá strana je očíslovanou hranou mezi dvěma vrcholy mnohoúhelníku, které představují vaši zónu. Například hrana mezi prvními dvěma vrcholy mnohoúhelníku představuje první stranu, ' Side ' = 1. Hodnota target_side je mezi, [0,N-1] kde N je počet stran polygon . Toto je volitelné pole.
threshold float Pokud je osoba větší než tento počet pixelů v zóně, dojde k odchozímu přenosu událostí. Výchozí hodnota je 48, pokud je typ zonecrossing a 16, pokud je čas DwellTime. Tyto hodnoty jsou doporučené pro dosažení maximální přesnosti.
type řetězec Pro cognitiveservices Account. Vision. spatialanalysis-personcrossingpolygon by to mělo být zonecrossing nebo zonedwelltime .
trigger řetězec Typ triggeru pro odeslání události
Podporované hodnoty: Event: aktivuje se, když někdo zadá nebo ukončí zónu.
focus řetězec Umístění bodu v ohraničujícím poli osoby používané k výpočtu událostí. Hodnota zaměření může být (stopa osoby), (spodní střed ohraničující rámečku osoby) (střed ohraničující footprint bottom_center center rámeček osoby). Výchozí hodnota je stopa.

Konfigurace zóny pro cognitiveservices.vision.spatialanalysis-persondistance

Toto je příklad vstupu JSON pro parametr SPACEANALYTICS_CONFIG, který konfiguruje zónu pro cognitiveservices.vision.spatialanalysis-persondistance. Pro tuto operaci můžete nakonfigurovat více zón.

{
"zones":[{
   "name": "lobbycamera",
   "polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
   "events":[{
       "type": "persondistance",
       "config":{
           "trigger": "event",
           "output_frequency":1,
           "minimum_distance_threshold":6.0,
           "maximum_distance_threshold":35.0,
        "aggregation_method": "average"
           "threshold": 16.00,
           "focus": "footprint"
                   }
          }]
   }]
}
Název Typ Description
zones list Seznam zón
name řetězec Popisný název pro tuto zónu.
polygon list Každý pár hodnot představuje x,y pro vrcholy mnohoúhelníku. Mnohoúhelník představuje oblasti, ve kterých se počítají lidé, a měří se vzdálenost mezi lidmi. Hodnoty float představují pozici vrcholu vzhledem k levému hornímu rohu. Pokud chcete vypočítat absolutní hodnoty x, y, vynásobíte tyto hodnoty velikostí rámu.
threshold float Když je osoba větší než tento počet pixelů uvnitř zóny, dojde k regresi událostí.
type řetězec U cognitiveservices.vision.spatialanalysis-persondistance by to mělo být persondistance .
trigger řetězec Typ triggeru pro odeslání události. Podporované hodnoty jsou pro odesílání událostí při změně počtu nebo pravidelném odesílání událostí bez ohledu na to, jestli se event počet změnil nebo interval ne.
output_frequency int Rychlost, s jakou se události vystupuje. Když = X, dojde k regresi každé události output_frequency X, např. output_frequency = 2 znamená, že výstupem je každá jiná událost. output_frequencyplatí pro i event interval .
minimum_distance_threshold float Vzdálenost ve stopách, která aktivuje událost TooClose, když jsou lidé od sebe vzdáleni méně.
maximum_distance_threshold float Vzdálenost ve stopách, která aktivuje událost TooFar, když jsou lidé větší než tato vzdálenost.
aggregation_method řetězec Metoda agregovaného výsledku osob Tento aggregation_method platí pro i mode average .
focus řetězec Umístění bodu v ohraničující rámečku osoby použité k výpočtu událostí. Hodnota zaměření může být (stopa osoby), (spodní střed ohraničující rámečku osoby) (střed ohraničující footprint bottom_center center rámeček osoby).

Konfigurace pro cognitiveservices.vision.spatialanalysis

Toto je příklad vstupu JSON pro parametr SPACEANALYTICS_CONFIG, který konfiguruje čáru a zónu pro cognitiveservices.vision.spatialanalysis. Pro tuto operaci můžete nakonfigurovat více řádků nebo zón a každý řádek nebo zóna může mít různé události.

{
  "lines": [
    {
      "name": "doorcamera",
      "line": {
        "start": {
          "x": 0,
          "y": 0.5
        },
        "end": {
          "x": 1,
          "y": 0.5
        }
      },
      "events": [
        {
          "type": "linecrossing",
          "config": {
            "trigger": "event",
            "threshold": 16.00,
            "focus": "footprint"
          }
        }
      ]
    }
  ],
  "zones": [
    {
      "name": "lobbycamera",
      "polygon": [[0.3, 0.3],[0.3, 0.9],[0.6, 0.9],[0.6, 0.3],[0.3, 0.3]],
      "events": [
        {
          "type": "persondistance",
          "config": {
            "trigger": "event",
            "output_frequency": 1,
            "minimum_distance_threshold": 6.0,
            "maximum_distance_threshold": 35.0,
            "threshold": 16.00,
            "focus": "footprint"
          }
        },
        {
          "type": "count",
          "config": {
            "trigger": "event",
            "output_frequency": 1,
            "threshold": 16.00,
            "focus": "footprint"
          }
        },
        {
          "type": "zonecrossing",
          "config": {
            "threshold": 48.00,
            "focus": "footprint"
          }
        },
        {
          "type": "zonedwelltime",
          "config": {
            "threshold": 16.00,
            "focus": "footprint"
          }
        }
      ]
    }
  ]
}

Konfigurace kamery

Další informace o konfiguraci zón a čar najdete v pokynech pro umístění fotoaparátu.

Výstup operace prostorové analýzy

Události z každé operace se odestupuje do Azure IoT Hub ve formátu JSON.

Formát JSON pro rozhraní AI cognitiveservices.vision.spatialanalysis-personcount Přehledy

Ukázkový kód JSON pro výstup události touto operací.

{
    "events": [
        {
            "id": "b013c2059577418caa826844223bb50b",
            "type": "personCountEvent",
            "detectionIds": [
                "bc796b0fc2534bc59f13138af3dd7027",
                "60add228e5274158897c135905b5a019"
            ],
            "properties": {
                "personCount": 2
            },
            "zone": "lobbycamera",
            "trigger": "event"
        }
    ],
    "sourceInfo": {
        "id": "camera_id",
        "timestamp": "2020-08-24T06:06:57.224Z",
        "width": 608,
        "height": 342,
        "frameId": "1400",
        "cameraCalibrationInfo": {
            "status": "Calibrated",
            "cameraHeight": 10.306597709655762,
            "focalLength": 385.3199462890625,
            "tiltupAngle": 1.0969393253326416
        },
        "imagePath": ""
    },
    "detections": [
        {
            "type": "person",
            "id": "bc796b0fc2534bc59f13138af3dd7027",
            "region": {
                "type": "RECTANGLE",
                "points": [
                    {
                        "x": 0.612683747944079,
                        "y": 0.25340268765276636
                    },
                    {
                        "x": 0.7185954043739721,
                        "y": 0.6425260577285499
                    }
                ]
            },
            "confidence": 0.9559211134910583,
            "centerGroundPoint": {
                "x": 0.0,
                "y": 0.0
            },
            "metadata": {
            "attributes": {
                "face_mask": 0.99
            }
        }
        },
        {
            "type": "person",
            "id": "60add228e5274158897c135905b5a019",
            "region": {
                "type": "RECTANGLE",
                "points": [
                    {
                        "x": 0.22326200886776573,
                        "y": 0.17830915618361087
                    },
                    {
                        "x": 0.34922296122500773,
                        "y": 0.6297955429344847
                    }
                ]
            },
            "confidence": 0.9389744400978088,
            "centerGroundPoint": {
                "x": 0.0,
                "y": 0.0
            },
            "metadata":{
            "attributes": {
            "face_nomask": 0.99
            }
            }
       }
    ],
    "schemaVersion": "1.0"
}
Název pole události Typ Description
id řetězec ID události
type řetězec Typ události
detectionsId array Pole velikosti 1 jedinečného identifikátoru osoby, která tuto událost aktivoval
properties – kolekce Kolekce hodnot
trackinId řetězec Jedinečný identifikátor detekované osoby
zone řetězec Pole "name" mnohoúhelníku, které představuje zkřížené zóny
trigger řetězec Typ triggeru je "událost" nebo "interval" v závislosti na hodnotě v trigger SPACEANALYTICS_CONFIG
Detections Field Name Typ Description
id řetězec ID detekce
type řetězec Typ detekce
region – kolekce Kolekce hodnot
type řetězec Typ oblasti
points – kolekce Levé horní a dolní body, pokud je typ oblasti RECTANGLE
confidence float Spolehlivost algoritmu
face_mask float Hodnota spolehlivosti atributu s rozsahem (0–1) označuje, že detekovaná osoba má masku tváře.
face_nomask float Hodnota spolehlivosti atributu s rozsahem (0–1) označuje, že detekovaná osoba nemá masku obličeje.
Název pole SourceInfo Typ Description
id řetězec ID fotoaparátu
timestamp date Datum (UTC) při vysílání datové části JSON
width int Šířka snímku videa
height int Výška snímku videa
frameId int Identifikátor rámce
cameraCallibrationInfo – kolekce Kolekce hodnot
status řetězec Stav konstanty ve formátu state[;progress description] . Stav může být Calibrating , Recalibrating (pokud je povolené rekalibace) nebo Calibrated . Část popisu průběhu je platná jenom v případě, že je ve stavu a , která se používá k zobrazení průběhu aktuálního Calibrating Recalibrating procesu zpracování.
cameraHeight float Výška kamery nad zemí ve stopách To je odvozeno z automatického záchytu.
focalLength float Maximální délka kamery v pixelech. To je odvozeno z automatického záchytu.
tiltUpAngle float Úhel náklonu kamery od svislého směru. To je odvozeno z automatického záchytu.

Formát JSON pro cognitiveservices.vision.spatialanalysis-personcrossingline AI Přehledy

Ukázkový json pro výstup detekce podle této operace

{
    "events": [
        {
            "id": "3733eb36935e4d73800a9cf36185d5a2",
            "type": "personLineEvent",
            "detectionIds": [
                "90d55bfc64c54bfd98226697ad8445ca"
            ],
            "properties": {
                "trackingId": "90d55bfc64c54bfd98226697ad8445ca",
                "status": "CrossLeft"
            },
            "zone": "doorcamera"
        }
    ],
    "sourceInfo": {
        "id": "camera_id",
        "timestamp": "2020-08-24T06:06:53.261Z",
        "width": 608,
        "height": 342,
        "frameId": "1340",
        "imagePath": ""
    },
    "detections": [
        {
            "type": "person",
            "id": "90d55bfc64c54bfd98226697ad8445ca",
            "region": {
                "type": "RECTANGLE",
                "points": [
                    {
                        "x": 0.491627341822574,
                        "y": 0.2385801348769874
                    },
                    {
                        "x": 0.588894994635331,
                        "y": 0.6395559924387793
                    }
                ]
            },
            "confidence": 0.9005028605461121,
            "metadata": {
            "attributes": {
                "face_mask": 0.99
            }
        }
        }
    ],
    "schemaVersion": "1.0"
}
Název pole události Typ Description
id řetězec ID události
type řetězec Typ události
detectionsId array Pole velikosti 1 jedinečného identifikátoru osoby, která tuto událost aktivoval
properties – kolekce Kolekce hodnot
trackinId řetězec Jedinečný identifikátor detekované osoby
status řetězec Směr přecházení přímek, buď CrossLeft, nebo CrossRight. Směr je založený na představě, že stojí na "startu" a směřuje k "konci" čáry. CrossRight přechází zleva doprava. CrossLeft přechází zprava doleva.
orientationDirection řetězec Směr orientace detekované osoby po překročení čáry. Hodnota může být Left(Vlevo), Right (Vpravo) nebo Straight (Přímka). Tato hodnota je výstup, pokud enable_orientation je nastavená na True hodnotu v . CAMERACALIBRATOR_NODE_CONFIG
zone řetězec Pole "name" z křížené čáry
Detections Field Name Typ Description
id řetězec ID detekce
type řetězec Typ detekce
region – kolekce Kolekce hodnot
type řetězec Typ oblasti
points – kolekce Levé horní a dolní body, pokud je typ oblasti RECTANGLE
groundOrientationAngle float Úhel paprsku ve směru hodinových ručiček orientace osoby na odvozené základní rovině
mappedImageOrientation float Projektovaný úhel paprsku ve směru hodinových ručiček orientace osoby na prostoru 2D obrázku
speed float Odhadovaná rychlost detekované osoby Jednotka je foot per second (ft/s)
confidence float Spolehlivost algoritmu
face_mask float Hodnota spolehlivosti atributu s rozsahem (0–1) označuje, že detekovaná osoba má masku tváře.
face_nomask float Hodnota spolehlivosti atributu s rozsahem (0–1) označuje, že detekovaná osoba nemá masku obličeje.
Název pole SourceInfo Typ Description
id řetězec ID fotoaparátu
timestamp date Datum (UTC) při vysílání datové části JSON
width int Šířka snímku videa
height int Výška snímku videa
frameId int Identifikátor rámce

Důležité

Model AI detekuje osobu bez ohledu na to, jestli se tato osoba nachází směrem k fotoaparátu nebo mimo ji. Model AI nespouští rozpoznávání obličeje a nevysílá žádné biometrické informace.

Formát JSON pro cognitiveservices.vision.spatialanalysis-personcrossingpolygon AI Přehledy

Ukázkový json pro výstup detekce podle této operace s zonecrossing typem SPACEANALYTICS_CONFIG.

{
    "events": [
        {
            "id": "f095d6fe8cfb4ffaa8c934882fb257a5",
            "type": "personZoneEnterExitEvent",
            "detectionIds": [
                "afcc2e2a32a6480288e24381f9c5d00e"
            ],
            "properties": {
                "trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
                "status": "Enter",
                "side": "1"
            },
            "zone": "queuecamera"
        }
    ],
    "sourceInfo": {
        "id": "camera_id",
        "timestamp": "2020-08-24T06:15:09.680Z",
        "width": 608,
        "height": 342,
        "frameId": "428",
        "imagePath": ""
    },
    "detections": [
        {
            "type": "person",
            "id": "afcc2e2a32a6480288e24381f9c5d00e",
            "region": {
                "type": "RECTANGLE",
                "points": [
                    {
                        "x": 0.8135572734631991,
                        "y": 0.6653949670624315
                    },
                    {
                        "x": 0.9937645761590255,
                        "y": 0.9925406829655519
                    }
                ]
            },
            "confidence": 0.6267998814582825,
        "metadata": {
        "attributes": {
        "face_mask": 0.99
        }
        }
           
        }
    ],
    "schemaVersion": "1.0"
}

Ukázkový json pro výstup detekce podle této operace s zonedwelltime typem SPACEANALYTICS_CONFIG.

{
    "events": [
        {
            "id": "f095d6fe8cfb4ffaa8c934882fb257a5",
            "type": "personZoneDwellTimeEvent",
            "detectionIds": [
                "afcc2e2a32a6480288e24381f9c5d00e"
            ],
            "properties": {
                "trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
                "status": "Exit",
                "side": "1",
                      "dwellTime": 7132.0,
                      "dwellFrames": 20            
            },
            "zone": "queuecamera"
        }
    ],
    "sourceInfo": {
        "id": "camera_id",
        "timestamp": "2020-08-24T06:15:09.680Z",
        "width": 608,
        "height": 342,
        "frameId": "428",
        "imagePath": ""
    },
    "detections": [
        {
            "type": "person",
            "id": "afcc2e2a32a6480288e24381f9c5d00e",
            "region": {
                "type": "RECTANGLE",
                "points": [
                    {
                        "x": 0.8135572734631991,
                        "y": 0.6653949670624315
                    },
                    {
                        "x": 0.9937645761590255,
                        "y": 0.9925406829655519
                    }
                ]
            },
            "confidence": 0.6267998814582825,
            "metadataType": "",
             "metadata": { 
                     "groundOrientationAngle": 1.2,
                     "mappedImageOrientation": 0.3,
                     "speed": 1.2
               },
        }
    ],
    "schemaVersion": "1.0"
}
Název pole události Typ Description
id řetězec ID události
type řetězec Typ události. Hodnotou může být personZoneDwellTimeEvent nebo personZoneEnterExitEvent.
detectionsId array Pole velikosti 1 jedinečného identifikátoru osoby, která tuto událost aktivoval
properties – kolekce Kolekce hodnot
trackinId řetězec Jedinečný identifikátor detekované osoby
status řetězec Směr mnohoúhelníkových přechodů, buď Enter, nebo Exit
side int Číslo strany mnohoúhelníku, který osoba protála. Každá strana je očíslovanou hranou mezi dvěma vrcholy mnohoúhelníku, které představují vaši zónu. Hrana mezi prvními dvěma vrcholy mnohoúhelníku představuje první stranu. ' Side ' je prázdné, pokud událost není přidružena k určité straně z důvodu překrytí. Například k ukončení došlo, když osoba zmizí, ale neviděla se nad stranou zóny, nebo když se osoba objevila v zóně, ale neviděla se stranou.
dwellTime float Počet milisekund, které reprezentují čas strávený osobou v zóně. Toto pole je k dispozici, pokud je typ události personZoneDwellTimeEvent
dwellFrames int Počet snímků, které osoba strávila v zóně. Toto pole je k dispozici, pokud je typ události personZoneDwellTimeEvent
dwellTimeForTargetSide float Počet milisekund, které reprezentují čas strávený osobou v zóně a které byly namířeny na target_side . Toto pole je k dispozici enable_orientation , pokud je True v CAMERACALIBRATOR_NODE_CONFIG a hodnota target_side je nastavena v SPACEANALYTICS_CONFIG
avgSpeed float Průměrná rychlost osoby v zóně. Jednotka je foot per second (ft/s)
minSpeed float Minimální rychlost osoby v zóně. Jednotka je foot per second (ft/s)
zone řetězec Pole Name (název) mnohoúhelníku, které představuje zónu, která byla překročena.
Název pole detekce Typ Description
id řetězec ID detekce
type řetězec Typ detekce
region – kolekce Kolekce hodnot
type řetězec Typ oblasti
points – kolekce Levý horní a dolní pravý bod, pokud je typ oblasti obdélník
groundOrientationAngle float Radian úhel směru orientace osoby na odvozenou rovinu
mappedImageOrientation float Radianý úhel orientace osoby na 2D prostoru obrázku v úhlu hodinových ručiček
speed float Odhadovaná rychlost zjištěné osoby. Jednotka je foot per second (ft/s)
confidence float Spolehlivost algoritmu
face_mask float Hodnota spolehlivosti atributu s rozsahem (0-1) označuje zjištěnou osobu, která má formu o přítvářku.
face_nomask float Hodnota spolehlivosti atributu s rozsahem (0-1) znamená, že zjištěná osoba nepoužívá masku obličeje.

formát JSON pro cognitiveservices account. vision. spatialanalysis-persondistance AI Přehledy

Ukázka JSON pro detekci výstupu pomocí této operace.

{
    "events": [
        {
            "id": "9c15619926ef417aa93c1faf00717d36",
            "type": "personDistanceEvent",
            "detectionIds": [
                "9037c65fa3b74070869ee5110fcd23ca",
                "7ad7f43fd1a64971ae1a30dbeeffc38a"
            ],
            "properties": {
                "personCount": 5,
                "averageDistance": 20.807043981552123,
                "minimumDistanceThreshold": 6.0,
                "maximumDistanceThreshold": "Infinity",
                "eventName": "TooClose",
                "distanceViolationPersonCount": 2
            },
            "zone": "lobbycamera",
            "trigger": "event"
        }
    ],
    "sourceInfo": {
        "id": "camera_id",
        "timestamp": "2020-08-24T06:17:25.309Z",
        "width": 608,
        "height": 342,
        "frameId": "1199",
        "cameraCalibrationInfo": {
            "status": "Calibrated",
            "cameraHeight": 12.9940824508667,
            "focalLength": 401.2800598144531,
            "tiltupAngle": 1.057669997215271
        },
        "imagePath": ""
    },
    "detections": [
        {
            "type": "person",
            "id": "9037c65fa3b74070869ee5110fcd23ca",
            "region": {
                "type": "RECTANGLE",
                "points": [
                    {
                        "x": 0.39988183975219727,
                        "y": 0.2719132942065858
                    },
                    {
                        "x": 0.5051516984638414,
                        "y": 0.6488402517218339
                    }
                ]
            },
            "confidence": 0.948630690574646,
            "centerGroundPoint": {
                "x": -1.4638760089874268,
                "y": 18.29732322692871
            },
            "metadataType": ""
        },
        {
            "type": "person",
            "id": "7ad7f43fd1a64971ae1a30dbeeffc38a",
            "region": {
                "type": "RECTANGLE",
                "points": [
                    {
                        "x": 0.5200299714740954,
                        "y": 0.2875368218672903
                    },
                    {
                        "x": 0.6457497446160567,
                        "y": 0.6183311060855263
                    }
                ]
            },
            "confidence": 0.8235412240028381,
            "centerGroundPoint": {
                "x": 2.6310102939605713,
                "y": 18.635927200317383
            },
            "metadataType": ""
        }
    ],
    "schemaVersion": "1.0"
}
Název pole události Typ Description
id řetězec ID události
type řetězec Typ události
detectionsId array Pole o velikosti 1 jedinečného identifikátoru detekce osob, která aktivovala tuto událost
properties – kolekce Kolekce hodnot
personCount int Počet lidí zjištěných při vygenerování události
averageDistance float Průměrná vzdálenost mezi všemi zjištěnými lidmi ve stopách
minimumDistanceThreshold float Vzdálenost ve stopách, která aktivuje událost "TooClose", pokud jsou lidé menší než vzdálenost.
maximumDistanceThreshold float Vzdálenost ve stopách, která spustí událost "TooFar", pokud jsou lidé větší než vzdálenost od sebe.
eventName řetězec Název události je TooClose minimumDistanceThreshold porušená, TooFar Pokud maximumDistanceThreshold je porušená, nebo unknown když se automatická kalibrace nedokončila.
distanceViolationPersonCount int Počet lidí zjištěných při porušení minimumDistanceThreshold nebo maximumDistanceThreshold
zone řetězec Pole Name (název) mnohoúhelníku, které představuje zónu monitorovanou pro distancing mezi lidmi
trigger řetězec Typ triggeru je Event nebo interval v závislosti na hodnotě trigger v SPACEANALYTICS_CONFIG
Název pole detekce Typ Description
id řetězec ID detekce
type řetězec Typ detekce
region – kolekce Kolekce hodnot
type řetězec Typ oblasti
points – kolekce Levý horní a dolní pravý bod, pokud je typ oblasti obdélník
confidence float Spolehlivost algoritmu
centerGroundPoint 2 hodnoty float x, y hodnoty se souřadnicemi odvozených umístění osoby na zemi ve stopách. x a y jsou souřadnicemi roviny podlahy za předpokladu, že je podlahová úroveň. Umístění kamery je původní.

Při výpočtu centerGroundPoint x je vzdálenost od kamery k osobě podél čáry kolmé k rovině obrazu kamery. y je vzdálenost od kamery k osobě podél čáry rovnoběžná s rovinou obrazu kamery.

Příklad středového bodu na střed

V tomto příkladu centerGroundPoint je {x: 4, y: 5} . To znamená, že někdo 4 nohy od kamery a 5 metrů napravo od ruky, a to v horní části místnosti.

Název pole SourceInfo Typ Description
id řetězec ID fotoaparátu
timestamp date Datum (UTC) při vysílání datové části JSON
width int Šířka snímku videa
height int Výška snímku videa
frameId int Identifikátor rámce
cameraCallibrationInfo – kolekce Kolekce hodnot
status řetězec Stav konstanty ve formátu state[;progress description] . Stav může být Calibrating , Recalibrating (pokud je povolené rekalibace) nebo Calibrated . Část popisu průběhu je platná jenom v případě, že je ve stavu a , která se používá k zobrazení průběhu aktuálního Calibrating Recalibrating procesu zpracování.
cameraHeight float Výška kamery nad zemí ve stopách To je odvozeno z automatického vychytání.
focalLength float Maximální délka kamery v pixelech. To je odvozeno z automatického vychytání.
tiltUpAngle float Úhel náklonu kamery od svislého směru. To je odvozeno z automatického vychytání.

Formát JSON pro cognitiveservices.vision.spatialanalysis AI Přehledy

Výstup této operace závisí na konfiguraci , například pokud je pro tuto operaci nakonfigurovaná událost, bude výstup events zonecrossing stejný jako cognitiveservices.vision.spatialanalysis-personcrossingpolygon .

Použití výstupu vygenerované kontejnerem

Možná budete chtít do své aplikace integrovat detekci prostorové analýzy nebo události. Tady je několik přístupů ke zvážení:

  • Pomocí sady SDK centra událostí Azure pro zvolený programovací jazyk se připojte ke koncovému bodu Azure IoT Hub a přijíměte události. Další informace najdete v tématu Čtení zpráv ze zařízení do cloudu z integrovaného koncového bodu.
  • Nastavte směrování zpráv na svém Azure IoT Hub odesílání událostí do jiných koncových bodů nebo ukládání událostí do úložiště dat. Další IoT Hub v tématu Směrování zpráv.
  • Nastavení úlohy Azure Stream Analytics zpracování událostí v reálném čase při jejich doručení a vytváření vizualizací.

Nasazení operací prostorové analýzy ve velkém měřítku (více fotoaparátů)

Pokud chcete získat nejlepší výkon a využití GPU, můžete nasadit jakékoli operace prostorové analýzy na více fotoaparátech pomocí instancí grafu. Níže je uvedený příklad spuštění operace cognitiveservices.vision.spatialanalysis-personcrossingline na 15 fotoaparátech.

  "properties.desired": {
      "globalSettings": {
          "PlatformTelemetryEnabled": false,
          "CustomerTelemetryEnabled": true
      },
      "graphs": {
        "personzonelinecrossing": {
        "operationId": "cognitiveservices.vision.spatialanalysis-personcrossingline",
        "version": 1,
        "enabled": true,
        "sharedNodes": {
            "shared_detector0": {
                "node": "PersonCrossingLineGraph.detector",
                "parameters": {
                    "DETECTOR_NODE_CONFIG": "{ \"gpu_index\": 0, \"batch_size\": 7, \"do_calibration\": true}",
                }
            },
            "shared_calibrator0": {
                "node": "PersonCrossingLineGraph/cameracalibrator",
                "parameters": {
                    "CAMERACALIBRATOR_NODE_CONFIG": "{ \"gpu_index\": 0, \"do_calibration\": true, \"enable_zone_placement\": true}",
                    "CALIBRATION_CONFIG": "{\"enable_recalibration\": true, \"quality_check_frequency_seconds\": 86400}",
                }
        },
        "parameters": {
            "VIDEO_DECODE_GPU_INDEX": 0,
            "VIDEO_IS_LIVE": true
        },
        "instances": {
            "1": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 1>",
                    "VIDEO_SOURCE_ID": "camera 1",
                    "SPACEANALYTICS_CONFIG": "{\"zones\":[{\"name\":\"queue\",\"polygon\":[[0,0],[1,0],[0,1],[1,1],[0,0]]}]}"
                }
            },
            "2": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 2>",
                    "VIDEO_SOURCE_ID": "camera 2",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "3": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 3>",
                    "VIDEO_SOURCE_ID": "camera 3",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "4": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 4>",
                    "VIDEO_SOURCE_ID": "camera 4",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "5": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 5>",
                    "VIDEO_SOURCE_ID": "camera 5",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "6": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 6>",
                    "VIDEO_SOURCE_ID": "camera 6",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "7": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 7>",
                    "VIDEO_SOURCE_ID": "camera 7",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "8": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 8>",
                    "VIDEO_SOURCE_ID": "camera 8",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "9": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 9>",
                    "VIDEO_SOURCE_ID": "camera 9",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "10": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 10>",
                    "VIDEO_SOURCE_ID": "camera 10",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "11": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 11>",
                    "VIDEO_SOURCE_ID": "camera 11",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "12": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 12>",
                    "VIDEO_SOURCE_ID": "camera 12",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "13": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 13>",
                    "VIDEO_SOURCE_ID": "camera 13",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "14": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 14>",
                    "VIDEO_SOURCE_ID": "camera 14",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            },
            "15": {
                "sharedNodeMap": {
                    "PersonCrossingLineGraph/detector": "shared_detector0",
            "PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
                },
                "parameters": {
                    "VIDEO_URL": "<Replace RTSP URL for camera 15>",
                    "VIDEO_SOURCE_ID": "camera 15",
                    "SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
                }
            }
          }
        },
      }
  }
Název Typ Description
batch_size int Pokud mají všechny fotoaparáty stejné rozlišení, nastavte na počet fotoaparátů, které se v této operaci budou používat, jinak nastavte na hodnotu 1 nebo ponechte výchozí batch_size nastavení (1), což značí, že se žádná dávka batch_size nepodporuje.

Další kroky