Operace prostorové analýzy
Důležité
30. března 2025 bude azure AI Vision Spatial Analysis vyřazena. Před zadaným datem přejděte na Azure AI Video Indexer nebo jiné opensourcové řešení. Doporučujeme, abyste přechod provedli dříve, abyste získali bohatší výhody Azure AI Video Indexeru. Kromě známých funkcí, které používáte, je tady rychlé porovnání azure AI Vision Spatial Analysis a Azure AI Video Indexeru.
Funkce | Prostorová analýza Azure AI Vision | Azure AI Video Indexer |
---|---|---|
Podpora edge | Ano | Yes |
Rozpoznávání objektů | Pouze detekce osob a vozidel | Detekuje 1000+ objektů. |
Zpracování zvuku a řeči | Nepodporováno | Podporované (včetně přepisu řeči, překladu a shrnutí) Podporuje se >(včetně přepisu řeči a analýzy mínění) |
Detekce a sledování událostí | Podporováno (sledování osob a vozidel, detekce událostí) | V Edgi se zatím nepodporuje. Je částečně podporován v cloudu. |
Podpora služby Azure Arc | Nepodporováno | Nativní podpora |
Oblast zaměření | Vizuální analýza se specializovaným sledováním | Komplexní analýza zvukového i vizuálního obsahu |
Odteď do 30. března 2025 můžete dál používat Azure AI Vision Spatial Analysis nebo přejít na Azure AI Video Indexer před zadaným datem. Po 30. březnu 2025 se kontejner prostorové analýzy už nebude podporovat a přestane zpracovávat nové datové proudy.
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 kamery
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 True hodnotu . |
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 True hodnotu . |
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 . |
Výstup kalibrace kamery
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:
Informace o umístění zóny poskytují návrhy pro vaše konfigurace, ale pokyny v konfiguraci kamery 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 True hodnotu . 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 fotoaparátu
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 kamery |
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 kamery |
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 TooClose minimumDistanceThreshold 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 centerGroundPoint
součá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.
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 kamery |
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. |