Operace prostorové analýzy

Prostorová analýza umožňuje analyzovat streamy videa ze zařízení fotoaparátů v reálném čase. Pro každé zařízení fotoaparátu, které nakonfigurujete, operace Spatial Analysis vygenerují výstupní datový proud zpráv JSON odesílaných do vaší instance služby Azure IoT Hub.

Kontejner Spatial Analysis implementuje následující operace. Tyto operace můžete nakonfigurovat v manifestu nasazení kontejneru.

Identifikátor operace Popis
cognitiveservices.vision.spatialanalysis-personcount Spočítá lidi v určené zóně v oblasti zobrazení kamery. Zóna musí být plně pokryta jedinou kamerou, aby PersonCount zaznamenával přesný součet.
Vygeneruje počáteční událost personCountEvent a potom personCountEvent události při změně počtu.
cognitiveservices.vision.spatialanalysis-personcrossingline Sleduje, kdy osoba překročí určenou čáru v poli zobrazení kamery.
Vygeneruje událost personLineEvent , když osoba překročí čáru a poskytne směrové informace.
cognitiveservices.vision.spatialanalysis-personcrossingpolygon Vygeneruje událost personZoneEnterExitEvent , když osoba vstoupí nebo opustí určenou zónu a poskytuje směrové informace se stranou zóny, která byla překročena. Vygeneruje osobuZoneDwellTimeEvent , když osoba opustí zónu a poskytuje 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 minimální vzdálenosti.
Generuje osobuDistanceEvent pravidelně s umístěním každého porušení vzdálenosti.
cognitiveservices.vision.spatialanalysis Obecná operace, kterou lze použít ke spuštění všech výše uvedených scénářů. Tato možnost je užitečnější, když chcete spustit více scénářů na stejné kameře nebo efektivněji používat systémové prostředky (například GPU).

Všechny výše uvedené operace jsou také k dispozici ve .debug verzi služby (například cognitiveservices.vision.spatialanalysis-personcount.debug). Ladění má možnost vizualizovat snímky videa při jejich zpracování. Abyste umožnili vizualizaci snímků a událostí videa, budete muset spustit xhost + na hostitelském počítači.

Důležité

Modely Azure AI Vision AI detekují a vyhledá lidskou přítomnost ve videozáběrech a vypíše ohraničující rámeček kolem lidského těla. Modely AI se nepokoušnou zjistit identity nebo demografické údaje jednotlivců.

Provozní parametry

Následují parametry vyžadované jednotlivými operacemi prostorové analýzy.

Provozní parametry Popis
Operation ID Identifikátor operace z tabulky výše.
enabled Logická hodnota: true nebo false
VIDEO_URL Adresa URL RTSP pro zařízení fotoaparátu (příklad: rtsp://username:password@url). Spatial Analysis podporuje stream s kódováním H.264 prostřednictvím RTSP, http nebo mp4. Video_URL lze poskytnout jako obfuskovanou řetězcovou hodnotu base64 pomocí šifrování AES a pokud je adresa URL videa obfuskovaná KEY_ENV , je IV_ENV potřeba ji poskytnout jako proměnné prostředí. Tady najdete ukázkový nástroj pro generování klíčů a šifrování.
VIDEO_SOURCE_ID Popisný název pro zařízení fotoaparátu nebo video stream. Vrátí se s výstupem JSON události.
VIDEO_IS_LIVE True pro kamerová zařízení; false for recorded videos.
VIDEO_DECODE_GPU_INDEX Který GPU má dekódovat rámeček videa. Ve výchozím nastavení je to 0. Měla by být stejná jako v konfiguraci jiného gpu_index uzlu jako DETECTOR_NODE_CONFIG a CAMERACALIBRATOR_NODE_CONFIG.
INPUT_VIDEO_WIDTH Šířka rámečku vstupního videa nebo streamu (například 1920). Jedná se o volitelné pole a pokud je k dispozici, bude rámec při zachování poměru stran škálován na tuto dimenzi.
DETECTOR_NODE_CONFIG JSON označující, na kterém GPU se má spustit uzel detektoru. Měla by být v následujícím formátu: "{ \"gpu_index\": 0 }",
TRACKER_NODE_CONFIG JSON označující, jestli se má výpočetní rychlost provádět v uzlu sledování, nebo ne. Měla by být v následujícím formátu: "{ \"enable_speed\": true }",
CAMERA_CONFIG JSON označující kalibrované parametry fotoaparátu pro více fotoaparátů Pokud použitá dovednost vyžaduje kalibraci a už máte parametr fotoaparátu, můžete tuto konfiguraci použít k jejich přímému poskytnutí. Měla by být v následujícím formátu: "{ \"cameras\": [{\"source_id\": \"endcomputer.0.persondistancegraph.detector+end_computer1\", \"camera_height\": 13.105561256408691, \"camera_focal_length\": 297.60003662109375, \"camera_tiltup_angle\": 0.9738943576812744}] }", source_id slouží k identifikaci jednotlivých fotoaparátů. Může se dostat z source_info události, kterou jsme publikovali. Projeví se pouze tehdy, když do_calibration=false v DETECTOR_NODE_CONFIG.
CAMERACALIBRATOR_NODE_CONFIG JSON označující, na kterém GPU se má spustit uzel kalibrátoru kamery a jestli se má použít kalibrace, nebo ne. Měla 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í fungování kalibrace kamery Měla 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 povolit detekci lidí, kteří mají ve video streamu masky tváří, False zakažte ho. Ve výchozím nastavení je tato možnost zakázaná. Detekce masky tváře vyžaduje vstupní parametr šířky videa 1920 "INPUT_VIDEO_WIDTH": 1920. Atribut masky tváře se nevrátí, pokud zjištění lidé nemají přístup k fotoaparátu nebo jsou příliš daleko od něj. Další informace najdete v umístění kamery.
STATIONARY_TARGET_REMOVER_CONFIG JSON označující parametry pro odebrání statického cíle, který přidává schopnost učit se a ignorovat dlouhodobé statické falešně pozitivní cíle, jako jsou manýry nebo lidé na obrázcích. Konfigurace by měla být v následujícím formátu: "{\"enable\": true, \"bbox_dist_threshold-in_pixels\": 5, \"buffer_length_in_seconds\": 3600, \"filter_ratio\": 0.2 }"

Nastavení parametrů uzlu detektoru

Následuje příklad DETECTOR_NODE_CONFIG parametrů pro všechny operace prostorové analýzy.

{
"gpu_index": 0,
"enable_breakpad": false
}
Name Typ Description
gpu_index string Index GPU, na kterém bude tato operace spuštěna.
enable_breakpad bool Určuje, jestli se má povolit breakpad, který se používá k vygenerování výpisu stavu systému pro použití ladění. false Je to ve výchozím nastavení. Pokud ho nastavíte na true, musíte také 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 stavu systému nahrály do vlastní aplikace AppCenter, můžete proměnnou RTPT_APPCENTER_APP_SECRET prostředí přepsat tajným kódem aplikace.

nastavení parametrů uzlu kalibrace Kamera

Následuje 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
}
Name Typ Description
do_calibration string Označuje, že je zapnutá kalibrace. do_calibration musí být pravdivé pro správné fungování cognitiveservices.vision.spatialanalysis-persondistance . do_calibration je ve výchozím nastavení nastavena na Truehodnotu .
enable_breakpad bool Určuje, jestli se má povolit breakpad, který se používá k vygenerování výpisu stavu systému pro použití ladění. false Je to ve výchozím nastavení. Pokud ho nastavíte na true, musíte také 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 stavu systému nahrály do vlastní aplikace AppCenter, můžete proměnnou RTPT_APPCENTER_APP_SECRET prostředí přepsat tajným kódem aplikace.
enable_orientation bool Určuje, jestli chcete vypočítat orientaci detekovaných lidí, nebo ne. enable_orientation je ve výchozím nastavení nastavena na Truehodnotu .

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
}
Name Typ Popis
enable_recalibration bool Určuje, jestli je zapnuté automatické přerovnání. Výchozí hodnota je true.
calibration_quality_check_frequency_seconds int Minimální počet sekund mezi jednotlivými kontrolami kvality, abyste zjistili, jestli je potřeba přelibování nebo ne. Výchozí hodnota je 86400 (24 hodin). Používá se pouze v případech, kdy enable_recalibration=True.
calibration_quality_check_sample_collect_frequency_seconds int Minimální početsekundch Výchozí hodnota je 300 (5 minut). Používá se pouze v případech, kdy 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 za kruhovou kolekci vzorků. Výchozí hodnota je 10. Používá se pouze v případech, kdy enable_recalibration=True.
calibration_quality_check_queue_max_size int Maximální počet vzorků dat, které se mají uložit při kalibraci modelu fotoaparátu Výchozí hodnota je 1000. Používá se pouze v případech, kdy enable_recalibration=True.
calibration_event_frequency_seconds int Frekvence výstupu (v sekundách) událostí kalibrace kamery. Hodnota -1 značí, že kalibrace kamery by neměla být odeslána, pokud nebyly změněny informace o kalibraci kamery. Výchozí hodnota je -1.

Kamera výstup kalibrace

Následuje příklad výstupu z kalibrace kamery, pokud je povolená. Tři tečky označují více stejného typu objektů v seznamu.

{
  "type": "cameraCalibrationEvent",
  "sourceInfo": {
    "id": "camera1",
    "timestamp": "2021-04-20T21:15:59.100Z",
    "width": 512,
    "height": 288,
    "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 o operaci prostorové analýzy najdete v source_infočásti Výstup operace prostorové analýzy.

Název pole ZonePlacementInfo Typ Popis
optimalZonePolygon objekt Mnohoúhelník na obrázku kamery, kde čáry nebo zóny pro vaše operace mohou být umístěny pro optimální výsledky.
Každý pár 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 a polygonové body 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 objekt Mnohoúhelník na obrázku kamery, kde čáry nebo zóny pro vaše operace mohou být umístěny pro dobré, ale pravděpodobně ne optimální výsledky.
Podrobnější optimalZonePolygon vysvětlení obsahu najdete výše.
uniformlySpacedPersonBoundingBoxes list Seznam ohraničujících rámečků lidí v rámci obrázku kamery distribuovaný jednotně v reálném prostoru. Hodnoty jsou založeny na normalizovaných souřadnicích (0–1).
personBoundingBoxGroundPoints list Seznam souřadnic v rovině podlahy vzhledem k fotoaparátu. Každá souřadnice odpovídá pravému dolnímu okraji ohraničujícího rámečku uniformlySpacedPersonBoundingBoxes se stejným indexem.
centerGroundPointX/centerGroundPointY Další podrobnosti o výpočtu souřadnic v rovině podlahy najdete v polích ve formátu JSON pro cognitiveservices.vision.spatialanalysis-persondistance Přehledy AI části.

Příklad výstupu informací o umístění zóny vizualizovaného na rámečku videa: Zone placement info visualization

Informace o umístění zóny poskytují návrhy pro vaše konfigurace, ale pokyny v konfiguraci Kamera musí být stále dodrženy pro nejlepší výsledky.

Nastavení parametrů uzlu sledování

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

{
"enable_speed": true,
"remove_stationary_objects": true,
"stationary_objects_dist_threshold_in_pixels": 5,
"stationary_objects_buffer_length_in_seconds": 3600,
"stationary_objects_filter_ratio": 0.2
}
Name Typ Popis
enable_speed bool Určuje, jestli chcete vypočítat rychlost pro zjištěné lidi, nebo ne. enable_speed je ve výchozím nastavení nastavena na Truehodnotu . Důrazně doporučujeme povolit rychlost i orientaci, abyste měli nejlepší odhadované hodnoty.
remove_stationary_objects bool Určuje, zda chcete odebrat statické objekty. remove_stationary_objects je ve výchozím nastavení nastavena na Hodnotu True.
stationary_objects_dist_threshold_in_pixels int Prahová hodnota vzdálenosti sousedství, která určuje, jestli se dvě políčka detekce dají považovat za stejnou detekci. stationary_objects_dist_threshold_in_pixels je ve výchozím nastavení nastavená na hodnotu 5.
stationary_objects_buffer_length_in_seconds int Minimální doba v sekundách, po kterou se systém musí vrátit, aby se rozhodl, jestli je cíl statickým nebo ne. stationary_objects_buffer_length_in_seconds je ve výchozím nastavení nastaveno na hodnotu 3600.
stationary_objects_filter_ratio float (číslo s plovoucí řádovou čárkou) Pokud je cíl opakovaně zjištěn ve stejném umístění (definovaném v stationary_objects_dist_threshold_in_pixels) pro větší stationary_objects_filter_ratio (0,2 znamená 20 %) časového intervalu stationary_objects_buffer_length_in_seconds , bude považován za statický cíl. stationary_objects_filter_ratio je ve výchozím nastavení nastavena na hodnotu 0.2.

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

Konfigurace zóny pro personcount

Následuje 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",
            "focus": "footprint"
          }
        }
      ]
    }
  ]
}
Name Typ Description
zones list Seznam zón
name string Popisný název této zóny
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 jsou lidé sledováni nebo počítáni. Polygonové body 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 (číslo s plovoucí řádovou čárkou) Události jsou výchozí, pokud je osoba větší než tento počet pixelů uvnitř zóny. Jedná se o volitelné pole a hodnota je v poměru (0–1). Například hodnota 0,0253 bude na videu s šířkou obrázku 13 pixelů = 512 (0,0253 X 512 = ~13).
type string Pro cognitiveservices.vision.spatialanalysis-personcount by to mělo být count.
trigger string Typ triggeru pro odeslání události. Podporované hodnoty slouží event k odesílání událostí, když se počet mění nebo interval odesílá události pravidelně bez ohledu na to, jestli se počet změnil nebo ne.
output_frequency int Rychlost, s jakou se události ustupují. Když output_frequency = X, každá událost X je výchozí, např. output_frequency = 2 znamená, že každá jiná událost je výstup. Platí output_frequency pro obě event a interval.
focus string Umístění bodu v ohraničujícím poli osoby sloužící k výpočtu událostí. Hodnota fokusu může být footprint (stopa osoby), bottom_center (dolní střed ohraničujícího rámečku osoby) center (střed ohraničujícího rámečku osoby).

Konfigurace čáry pro personcrossingline

Následuje příklad vstupu JSON pro SPACEANALYTICS_CONFIG parametr, který konfiguruje řádek. Pro tuto operaci můžete nakonfigurovat více křížových čar.

{
   "lines": [
       {
           "name": "doorcamera",
           "line": {
               "start": {
                   "x": 0,
                   "y": 0.5
               },
               "end": {
                   "x": 1,
                   "y": 0.5
               }
           },
           "events": [
               {
                   "type": "linecrossing",
                   "config": {
                       "trigger": "event",
                       "focus": "footprint"
                   }
               }
           ]
       }
   ]
}
Name Typ Description
lines list Seznam řádků
name string Popisný název tohoto řádku
line list Definice řádku. Jedná se o směrovou čáru, která umožňuje pochopit "entry" vs. "exit".
start pár hodnot x, souřadnice y pro počáteční bod čáry. Hodnoty float představují pozici vrcholu vzhledem k levému hornímu rohu. Pokud chcete vypočítat absolutní x, hodnoty y, vynásobíte tyto hodnoty velikostí rámce.
end pár hodnot x, souřadnice y pro koncový bod čáry. Hodnoty float představují pozici vrcholu vzhledem k levému hornímu rohu. Pokud chcete vypočítat absolutní x, hodnoty y, vynásobíte tyto hodnoty velikostí rámce.
threshold float (číslo s plovoucí řádovou čárkou) Události jsou výchozí, pokud je osoba větší než tento počet pixelů uvnitř zóny. Jedná se o volitelné pole a hodnota je v poměru (0–1). Například hodnota 0,0253 bude na videu s šířkou obrázku 13 pixelů = 512 (0,0253 X 512 = ~13).
type string Pro cognitiveservices.vision.spatialanalysis-personcrossingline by to mělo být linecrossing.
trigger string Typ triggeru pro odeslání události.
Podporované hodnoty: "event": aktivuje se, když někdo překročí čáru.
focus string Umístění bodu v ohraničujícím poli osoby sloužící k výpočtu událostí. Hodnota fokusu může být footprint (stopa osoby), bottom_center (dolní střed ohraničujícího rámečku osoby) center (střed ohraničujícího rámečku osoby). Výchozí hodnota je stopa.

Konfigurace zóny pro personcrossingpolygon

Toto je příklad vstupu JSON pro SPACEANALYTICS_CONFIG parametr, 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",
               "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",
               "focus": "footprint"
               }
           }]
   }]
}
Name Typ Description
zones list Seznam zón
name string Popisný název této zóny
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 jsou lidé sledováni nebo počítáni. Hodnoty float představují pozici vrcholu vzhledem k levému hornímu rohu. Pokud chcete vypočítat absolutní x, hodnoty y, vynásobíte tyto hodnoty velikostí rámce.
target_side int Určuje stranu zóny definovanou měřením polygon , jak dlouho lidé čelí této straně v zóně. Funkce "přebývatTimeForTargetSide" vypíše odhadovaný čas. Každá strana je číslovaný okraj mezi dvěma vrcholy mnohoúhelníku, který představuje 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] tím, kde N je počet stran polygon. Toto je volitelné pole.
threshold float (číslo s plovoucí řádovou čárkou) Události jsou výchozí, pokud je osoba větší než tento počet pixelů uvnitř zóny. Jedná se o volitelné pole a hodnota je v poměru (0–1). Například hodnota 0,074 bude 38 pixelů na videu s šířkou obrázku = 512 (0,074 X 512 = ~38).
type string Pro cognitiveservices.vision.spatialanalysis-personcrossingpolygon by to mělo být zonecrossing nebo zonedwelltime.
trigger string Typ triggeru pro odeslání události
Podporované hodnoty: "event": aktivuje se, když někdo vstoupí do zóny nebo ji ukončí.
focus string Umístění bodu v ohraničujícím poli osoby sloužící k výpočtu událostí. Hodnota fokusu může být footprint (stopa osoby), bottom_center (dolní střed ohraničujícího rámečku osoby) center (střed ohraničujícího rámečku osoby). Výchozí hodnota je stopa.

Konfigurace zóny pro persondistance

Toto je příklad vstupu JSON pro SPACEANALYTICS_CONFIG parametr, 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",
           "focus": "footprint"
          }
          }]
   }]
}
Name Typ Description
zones list Seznam zón
name string Popisný název této zóny
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 jsou lidé počítáni, a vzdálenost mezi lidmi se měří. Hodnoty float představují pozici vrcholu vzhledem k levému hornímu rohu. Pokud chcete vypočítat absolutní x, hodnoty y, vynásobíte tyto hodnoty velikostí rámce.
threshold float (číslo s plovoucí řádovou čárkou) Události jsou výchozí, pokud je osoba větší než tento počet pixelů uvnitř zóny. Jedná se o volitelné pole a hodnota je v poměru (0–1). Například hodnota 0,0253 bude na videu s šířkou obrázku 13 pixelů = 512 (0,0253 X 512 = ~13).
type string V případě cognitiveservices.vision.spatialanalysis-persondistance by to mělo být persondistance.
trigger string Typ triggeru pro odeslání události. Podporované hodnoty slouží event k odesílání událostí, když se počet mění nebo interval odesílá události pravidelně bez ohledu na to, jestli se počet změnil nebo ne.
output_frequency int Rychlost, s jakou se události ustupují. Když output_frequency = X, každá událost X je výchozí, např. output_frequency = 2 znamená, že každá jiná událost je výstup. Platí output_frequency pro obě event a interval.
minimum_distance_threshold float (číslo s plovoucí řádovou čárkou) Vzdálenost ve stopách, která aktivuje událost "TooClose", když jsou lidé menší než tato vzdálenost od sebe.
maximum_distance_threshold float (číslo s plovoucí řádovou čárkou) Vzdálenost ve stopách, která aktivuje událost "TooFar", když jsou lidé větší než tato vzdálenost od sebe.
aggregation_method string Metoda agregovaného persondistance výsledku. Aggregation_method se vztahuje na oba mode a average.
focus string Umístění bodu v ohraničujícím poli osoby sloužící k výpočtu událostí. Hodnota fokusu může být footprint (stopa osoby), bottom_center (dolní střed ohraničujícího rámečku osoby) center (střed ohraničujícího rámečku osoby).

Konfigurace pro prostorovou analýzu

Následuje příklad vstupu JSON pro SPACEANALYTICS_CONFIG parametr, který konfiguruje řádek a zónu pro cognitiveservices.vision.spatialanalysis. Pro tuto operaci můžete nakonfigurovat více řádků a 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",
            "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,
            "focus": "footprint"
          }
        },
        {
          "type": "count",
          "config": {
            "trigger": "event",
            "output_frequency": 1,
            "focus": "footprint"
          }
        },
        {
          "type": "zonecrossing",
          "config": {
            "focus": "footprint"
          }
        },
        {
          "type": "zonedwelltime",
          "config": {
            "focus": "footprint"
          }
        }
      ]
    }
  ]
}

konfigurace Kamera

Další informace o konfiguraci zón a linek najdete v pokynech pro umístění kamery.

Výstup operace prostorové analýzy

Události z každé operace se vystupují do Azure IoT Hubu ve formátu JSON.

Formát JSON pro Přehledy AI osob

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,
            "metadata": {
                "centerGroundPointX": "2.6310102939605713",
                "centerGroundPointY": "0.0",
		"groundOrientationAngle": "1.3",
                "footprintX": "0.7306610584259033",
                "footprintY": "0.8814966493381893"
            },
           "attributes": [
                {
                    "label": "face_mask",
                    "confidence": 0.99,
                    "task": ""
                }
            ]
        },
        {
            "type": "person",
            "id": "60add228e5274158897c135905b5a019",
            "region": {
                "type": "RECTANGLE",
                "points": [
                    {
                        "x": 0.22326200886776573,
                        "y": 0.17830915618361087
                    },
                    {
                        "x": 0.34922296122500773,
                        "y": 0.6297955429344847
                    }
                ]
            },
            "confidence": 0.9389744400978088,
             "metadata": {
                "centerGroundPointX": "2.6310102939605713",
                "centerGroundPointY": "18.635927200317383",
		"groundOrientationAngle": "1.3",
                "footprintX": "0.7306610584259033",
                "footprintY": "0.8814966493381893"
            },
           "attributes": [
                {
                    "label": "face_mask",
                    "confidence": 0.99,
                    "task": ""
                }
            ]
       }
    ],
    "schemaVersion": "2.0"
}
Název pole události Typ Description
id string ID události
type string Typ události
detectionsId pole Pole velikosti 1 jedinečného identifikátoru detekce osoby, která tuto událost aktivovala
properties – kolekce Kolekce hodnot
trackinId string Jedinečný identifikátor zjištěné osoby
zone string Pole "name" mnohoúhelníku, které představuje překříženou zónu
trigger string Typ triggeru je událost nebo interval v závislosti na hodnotě trigger v SPACEANALYTICS_CONFIG
Název pole detekce Typ Description
id string ID detekce
type string Typ detekce
region – kolekce Kolekce hodnot
type string Typ oblasti
points – kolekce Horní levý a pravý dolní bod, pokud je typ oblasti OBDÉLNÍK
confidence float (číslo s plovoucí řádovou čárkou) Spolehlivost algoritmu
attributes pole Pole atributů Každý atribut se skládá z popisku, úkolu a spolehlivosti.
label string Hodnota atributu (například indikuje, {label: face_mask} že zjištěná osoba má masku obličeje)
confidence (attribute) float (číslo s plovoucí řádovou čárkou) Hodnota spolehlivosti atributu s rozsahem 0 až 1 (například indikuje, {confidence: 0.9, label: face_nomask} že zjištěná osoba nemá masku obličeje)
task string Úkol nebo třída klasifikace atributů
Název pole SourceInfo Typ Description
id string ID Kamera
timestamp datum Datum UTC, kdy se vygenerovala datová část JSON
width int Šířka rámečku videa
height int Výška rámečku videa
frameId int Identifikátor rámce
cameraCallibrationInfo – kolekce Kolekce hodnot
status string Stav kalibrace ve formátu state[;progress description]. Stav může být Calibrating, Recalibrating (pokud je povolená funkce realibrace) nebo Calibrated. Část popisu průběhu je platná pouze v případě, že je v Calibrating a Recalibrating stavu, která se používá k zobrazení průběhu aktuálního procesu kalibrace.
cameraHeight float (číslo s plovoucí řádovou čárkou) Výška kamery nad zemí v nohách. To je odvozeno z automatického zlalibování.
focalLength float (číslo s plovoucí řádovou čárkou) Délka fokusu v pixelech. To je odvozeno z automatického zlalibování.
tiltUpAngle float (číslo s plovoucí řádovou čárkou) Úhel naklonění kamery z svisle. To je odvozeno z automatického zlalibování.

Formát JSON pro Přehledy AI personcrossingline

Ukázkový JSON pro detekci výstupu 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": {
                "centerGroundPointX": "2.6310102939605713",
                "centerGroundPointY": "18.635927200317383",
		"groundOrientationAngle": "1.3",
                "trackingId": "90d55bfc64c54bfd98226697ad8445ca",
                "speed": "1.2",
                "footprintX": "0.7306610584259033",
                "footprintY": "0.8814966493381893"
            },
           "attributes": [
                {
                    "label": "face_mask",
                    "confidence": 0.99,
                    "task": ""
                }
            ]
        }
    ],
    "schemaVersion": "2.0"
}
Název pole události Typ Description
id string ID události
type string Typ události
detectionsId pole Pole velikosti 1 jedinečného identifikátoru detekce osoby, která tuto událost aktivovala
properties – kolekce Kolekce hodnot
trackinId string Jedinečný identifikátor zjištěné osoby
status string Směr překračování čar, buď "CrossLeft" nebo "CrossRight". Směr vychází z představy, že stojí na "startu" směrem ke "konci" čáry. CrossRight je přechod zleva doprava. CrossLeft je přechod zprava doleva.
orientationDirection string Směr orientace rozpoznané osoby po překročení čáry. Hodnota může být 'Left', 'Right, or 'Straight'. Tato hodnota je výstup, pokud enable_orientation je nastavená na True hodnotu in. CAMERACALIBRATOR_NODE_CONFIG
zone string Pole "name" řádku, který byl překročen
Název pole detekce Typ Description
id string ID detekce
type string Typ detekce
region – kolekce Kolekce hodnot
type string Typ oblasti
points – kolekce Horní levý a pravý dolní bod, pokud je typ oblasti OBDÉLNÍK
groundOrientationAngle float (číslo s plovoucí řádovou čárkou) Úhel směru hodinových ručiček orientace osoby na odvozené pozemní rovině
mappedImageOrientation float (číslo s plovoucí řádovou čárkou) Promítaný úhel směru hodinových ručiček orientace osoby v prostoru 2D obrázku
speed float (číslo s plovoucí řádovou čárkou) Odhadovaná rychlost zjištěné osoby. Jednotka je foot per second (ft/s)
confidence float (číslo s plovoucí řádovou čárkou) Spolehlivost algoritmu
attributes pole Pole atributů Každý atribut se skládá z popisku, úkolu a spolehlivosti.
label string Hodnota atributu (například indikuje, {label: face_mask} že zjištěná osoba má masku obličeje)
confidence (attribute) float (číslo s plovoucí řádovou čárkou) Hodnota spolehlivosti atributu s rozsahem 0 až 1 (například indikuje, {confidence: 0.9, label: face_nomask} že zjištěná osoba nemá masku obličeje)
task string Úkol nebo třída klasifikace atributů
Název pole SourceInfo Typ Description
id string ID Kamera
timestamp datum Datum UTC, kdy se vygenerovala datová část JSON
width int Šířka rámečku videa
height int Výška rámečku videa
frameId int Identifikátor rámce

Důležité

Model AI rozpozná osobu bez ohledu na to, jestli se osoba nachází směrem k fotoaparátu nebo mimo kameru. Model AI nespouští rozpoznávání tváře a nevydává žádné biometrické informace.

Formát JSON pro personcrossingpolygon Přehledy AI

Ukázkový KÓD JSON pro detekci výstupu této operace s typem zonecrossing 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": {
                "centerGroundPointX": "2.6310102939605713",
                "centerGroundPointY": "18.635927200317383",
		"groundOrientationAngle": "1.3",
                "trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
                "speed": "1.2",
                "footprintX": "0.7306610584259033",
                "footprintY": "0.8814966493381893"
            },
           "attributes": [
		{
		    "label": "face_mask",
		    "confidence": 0.99,
		    "task": ""
		}
            ]
	}
    ],
    "schemaVersion": "2.0"
}

Ukázkový KÓD JSON pro detekci výstupu této operace s typem zonedwelltime 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,
	    "metadata": {
                "centerGroundPointX": "2.6310102939605713",
                "centerGroundPointY": "18.635927200317383",
		"groundOrientationAngle": "1.2",
		"mappedImageOrientation": "0.3",
		"speed": "1.2",
		 "trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
                "footprintX": "0.7306610584259033",
                "footprintY": "0.8814966493381893"
            }
        }
    ],
    "schemaVersion": "2.0"
}
Název pole události Typ Description
id string ID události
type string Typ události. Hodnota může být personZoneDwellTimeEvent nebo personZoneEnterExitEvent.
detectionsId pole Pole velikosti 1 jedinečného identifikátoru detekce osoby, která tuto událost aktivovala
properties – kolekce Kolekce hodnot
trackinId string Jedinečný identifikátor zjištěné osoby
status string Směr mnohoúhelníkových přechodů, buď Enter, nebo Exit
side int Počet stran mnohoúhelníku, který člověk protínal. Každá strana je číslovaný okraj mezi dvěma vrcholy mnohoúhelníku, který představuje vaši zónu. Hrana mezi prvními dvěma vrcholy mnohoúhelníku představuje první stranu. "Side" je prázdný, pokud není událost přidružená ke konkrétní straně kvůli okluzi. Například k ukončení došlo, když osoba zmizela, ale nebyla vidět, že překročila stranu zóny, nebo došlo k vstupu, když se osoba objevila v zóně, ale neviděla přechod na stranu.
dwellTime float (číslo s plovoucí řádovou čárkou) Počet milisekund, které představují čas strávený osobou v zóně. Toto pole je zadáno, pokud je typ události personZoneDwellTimeEvent.
dwellFrames int Počet snímků, které osoba strávila v zóně. Toto pole je zadáno, pokud je typ události personZoneDwellTimeEvent.
dwellTimeForTargetSide float (číslo s plovoucí řádovou čárkou) Počet milisekund, které představují čas, kdy osoba strávila v zóně a byla vystavena target_side. Toto pole je zadané, pokud enable_orientation je True v CAMERACALIBRATOR_NODE_CONFIG a hodnota target_side je nastavena v SPACEANALYTICS_CONFIG
avgSpeed float (číslo s plovoucí řádovou čárkou) Průměrná rychlost osoby v zóně. Jednotka je foot per second (ft/s)
minSpeed float (číslo s plovoucí řádovou čárkou) Minimální rychlost osoby v zóně. Jednotka je foot per second (ft/s)
zone string Pole "name" mnohoúhelníku, které představuje překříženou zónu
Název pole detekce Typ Description
id string ID detekce
type string Typ detekce
region – kolekce Kolekce hodnot
type string Typ oblasti
points – kolekce Horní levý a pravý dolní bod, pokud je typ oblasti OBDÉLNÍK
groundOrientationAngle float (číslo s plovoucí řádovou čárkou) Úhel směru hodinových ručiček orientace osoby na odvozené pozemní rovině
mappedImageOrientation float (číslo s plovoucí řádovou čárkou) Promítaný úhel směru hodinových ručiček orientace osoby v prostoru 2D obrázku
speed float (číslo s plovoucí řádovou čárkou) Odhadovaná rychlost zjištěné osoby. Jednotka je foot per second (ft/s)
confidence float (číslo s plovoucí řádovou čárkou) Spolehlivost algoritmu
attributes pole Pole atributů Každý atribut se skládá z popisku, úkolu a spolehlivosti.
label string Hodnota atributu (například indikuje, {label: face_mask} že zjištěná osoba má masku obličeje)
confidence (attribute) float (číslo s plovoucí řádovou čárkou) Hodnota spolehlivosti atributu s rozsahem 0 až 1 (například indikuje, {confidence: 0.9, label: face_nomask} že zjištěná osoba nemá masku obličeje)
task string Úkol nebo třída klasifikace atributů

Formát JSON pro Přehledy AI osob

Ukázkový JSON pro detekci výstupu 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,
	    "metadata": {
                "centerGroundPointX": "-1.4638760089874268",
                "centerGroundPointY": "18.29732322692871",
		"groundOrientationAngle": "1.3",
                "footprintX": "0.7306610584259033",
                "footprintY": "0.8814966493381893"
            }
        },
        {
            "type": "person",
            "id": "7ad7f43fd1a64971ae1a30dbeeffc38a",
            "region": {
                "type": "RECTANGLE",
                "points": [
                    {
                        "x": 0.5200299714740954,
                        "y": 0.2875368218672903
                    },
                    {
                        "x": 0.6457497446160567,
                        "y": 0.6183311060855263
                    }
                ]
            },
            "confidence": 0.8235412240028381,
            "metadata": {
                "centerGroundPointX": "2.6310102939605713",
                "centerGroundPointY": "18.635927200317383",
		"groundOrientationAngle": "1.3",
                "footprintX": "0.7306610584259033",
                "footprintY": "0.8814966493381893"
            }
        }
    ],
    "schemaVersion": "2.0"
}
Název pole události Typ Description
id string ID události
type string Typ události
detectionsId pole Pole velikosti 1 jedinečného identifikátoru detekce osoby, která tuto událost aktivovala
properties – kolekce Kolekce hodnot
personCount int Počet osob zjištěných při vygenerování události
averageDistance float (číslo s plovoucí řádovou čárkou) Průměrná vzdálenost mezi všemi zjištěnými lidmi v nohách
minimumDistanceThreshold float (číslo s plovoucí řádovou čárkou) Vzdálenost ve stopách, která aktivuje událost "TooClose", když jsou lidé menší než tato vzdálenost od sebe.
maximumDistanceThreshold float (číslo s plovoucí řádovou čárkou) Vzdálenost ve stopách, která aktivuje událost "TooFar", když jsou lidé větší než vzdálenost od sebe.
eventName string Název události se TooCloseminimumDistanceThreshold porušuje, TooFar když maximumDistanceThreshold je porušený nebo unknown když se automatické ukončení neskončí
distanceViolationPersonCount int Počet osob, které byly zjištěny v porušení minimumDistanceThreshold nebo maximumDistanceThreshold
zone string Pole "název" mnohoúhelníku, které představuje zónu, která byla monitorována pro odlicování mezi lidmi
trigger string Typ triggeru je událost nebo interval v závislosti na hodnotě trigger v SPACEANALYTICS_CONFIG
Název pole detekce Typ Description
id string ID detekce
type string Typ detekce
region – kolekce Kolekce hodnot
type string Typ oblasti
points – kolekce Horní levý a pravý dolní bod, pokud je typ oblasti OBDÉLNÍK
confidence float (číslo s plovoucí řádovou čárkou) Spolehlivost algoritmu
centerGroundPointX/centerGroundPointY 2 hodnoty float x, y hodnoty se souřadnicemi odvozené polohy osoby na zemi v nohách. x a y jsou souřadnice na rovině podlahy, za předpokladu, že podlaha je úroveň. Umístění kamery je původem.

x Je centerGroundPointsoučástí vzdálenosti od kamery k osobě, která je kolmá k rovině obrazu kamery. y je komponenta vzdálenosti, která je paralelná s rovinou obrazu fotoaparátu.

Example center ground point

V tomto příkladu centerGroundPoint je {centerGroundPointX: 4, centerGroundPointY: 5}. To znamená, že je před kamerou čtyři stopy a 5 metrů vpravo a dívá se na místnost shora dolů.

Název pole SourceInfo Typ Description
id string ID Kamera
timestamp datum Datum UTC, kdy se vygenerovala datová část JSON
width int Šířka rámečku videa
height int Výška rámečku videa
frameId int Identifikátor rámce
cameraCallibrationInfo – kolekce Kolekce hodnot
status string Stav kalibrace ve formátu state[;progress description]. Stav může být Calibrating, Recalibrating (pokud je povolená funkce realibrace) nebo Calibrated. Část popisu průběhu je platná pouze v případě, že je v Calibrating a Recalibrating stavu, která se používá k zobrazení průběhu aktuálního procesu kalibrace.
cameraHeight float (číslo s plovoucí řádovou čárkou) Výška kamery nad zemí v nohách. To je odvozeno z automatického zlalibování.
focalLength float (číslo s plovoucí řádovou čárkou) Délka fokusu v pixelech. To je odvozeno z automatického zlalibování.
tiltUpAngle float (číslo s plovoucí řádovou čárkou) Úhel naklonění kamery z svisle. To je odvozeno z automatického zlalibování.

Formát JSON pro prostorovou analýzu Přehledy AI

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

Použití výstupu vygenerovaného kontejnerem

Do aplikace můžete chtít integrovat detekci prostorové analýzy nebo události. Tady je několik přístupů, které je potřeba vzít v úvahu:

  • Pomocí sady Azure Event Hubs SDK pro zvolený programovací jazyk se připojte ke koncovému bodu služby Azure IoT Hub a získejte události. Další informace najdete v tématu Čtení zpráv typu zařízení-cloud z integrovaného koncového bodu.
  • Nastavte směrování zpráv ve službě Azure IoT Hub tak, aby odesílaly události do jiných koncových bodů, nebo je uložily do úložiště dat. Další informace najdete v tématu Směrování zpráv služby IoT Hub.
  • Nastavte úlohu Azure Stream Analytics tak, aby zpracovávala události v reálném čase při jejich příchodu a vytváření vizualizací.

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

Pokud chcete dosáhnout co nejlepšího výkonu a využití grafických procesorů, můžete pomocí instancí grafu nasadit jakékoli operace prostorové analýzy na více fotoaparátech. Níže je ukázková konfigurace pro spuštění cognitiveservices.vision.spatialanalysis-personcrossingline operace 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>"
                }
            }
          }
        },
      }
  }
Name Typ Popis
batch_size int Pokud mají všechny kamery stejné rozlišení, nastavte batch_size počet fotoaparátů, které budou použity v této operaci, jinak je nastavená batch_size na hodnotu 1 nebo ponechat jako výchozí (1), což značí, že se nepodporuje žádná dávka.

Další kroky