Uzamsal Analiz işlemleri
Önemli
30 Mart 2025 tarihinde Azure AI Vision Spatial Analysis kullanımdan kaldırılacaktır. Lütfen belirtilen tarihten önce Azure AI Video Indexer'a veya başka bir açık kaynak çözümüne geçin. Azure AI Video Indexer'ın daha zengin avantajlarından yararlanmak için geçişi daha erken yapmanızı öneririz. Kullandığınız tanıdık özelliklere ek olarak, Azure AI Vision Spatial Analysis ile Azure AI Video Indexer arasında hızlı bir karşılaştırma aşağıda verilmiştir.
Özellik | Azure Yapay Zeka Görüntü İşleme Uzamsal Analizi | Azure Yapay Zeka Video Indexer |
---|---|---|
Edge desteği | Yes | Yes |
Nesne Algılama | Yalnızca Kişi ve Araç algılama | 1000'den fazla nesneyi algılar |
Ses/Konuşma İşleme | Desteklenmez | Desteklenir (konuşma transkripsiyonu, çeviri ve özetleme içerir) Desteklenir >(konuşma transkripsiyonu ve yaklaşım analizini içerir) |
Olay Algılama ve İzleme | Desteklenen (kişileri ve araçları izleme, olay algılama) | Edge'de henüz desteklenmiyor. Bulutta kısmen desteklenir. |
Azure Arc Desteği | Desteklenmez | Yerel destek |
Odak Alanı | Özel izleme ile görsel analiz | Hem ses hem de görsel içeriğin kapsamlı analizi |
30 Mart 2025'e kadar Azure AI Vision Uzamsal Analizi'ni kullanmaya devam edebilir veya belirtilen tarihten önce Azure AI Video Indexer'a geçiş yapabilirsiniz. 30 Mart 2025'in ardından Uzamsal Analiz kapsayıcısı artık desteklenmeyecektir ve yeni akışları işlemeyi durduracaktır.
Uzamsal Analiz, kamera cihazlarından video akışlarını gerçek zamanlı olarak analiz etmenizi sağlar. Yapılandırdığınız her kamera cihazı için Uzamsal Analiz işlemleri, Azure IoT Hub örneğine gönderilen JSON iletilerinin çıkış akışını oluşturur.
Uzamsal Analiz kapsayıcısı aşağıdaki işlemleri uygular. Bu işlemleri kapsayıcınızın dağıtım bildiriminde yapılandırabilirsiniz.
İşlem Tanımlayıcısı | Açıklama |
---|---|
cognitiveservices.vision.spatialanalysis-personcount |
Kameranın görüş alanında belirli bir bölgedeki kişileri sayar. PersonCount'un doğru toplamı kaydetmesi için bölgenin tamamen tek bir kamera tarafından kaplanması gerekir. İlk personCountEvent olayını ve ardından sayı değiştiğinde personCountEvent olaylarını yayar. |
cognitiveservices.vision.spatialanalysis-personcrossingline |
Bir kişinin kameranın görüş alanında belirlenen bir çizgiyi ne zaman geçtiğini izler. Kişi çizgiyi geçtiğinde ve yön bilgisi sağladığında bir personLineEvent olayı yayar. |
cognitiveservices.vision.spatialanalysis-personcrossingpolygon |
Bir kişi belirlenen bölgeye girdiğinde veya bölgeden çıktığında bir kişiZoneEnterExitEvent olayı yayar ve çaprazlanan bölgenin tarafıyla yön bilgisi sağlar. Kişi bölgeden çıktığında bir kişiZoneDwellTimeEvent yayar ve hem yön bilgisi hem de kişinin bölge içinde harcadığı milisaniye sayısını sağlar. |
cognitiveservices.vision.spatialanalysis-persondistance |
kişilerin minimum mesafe kuralını ihlal ettiğinde izler. Her mesafe ihlalinin konumuyla düzenli aralıklarla bir personDistanceEvent yayar. |
cognitiveservices.vision.spatialanalysis |
Yukarıda bahsedilen tüm senaryoları çalıştırmak için kullanılabilen genel işlem. Bu seçenek, aynı kamerada birden çok senaryo çalıştırmak veya sistem kaynaklarını (örneğin GPU) daha verimli kullanmak istediğinizde daha kullanışlıdır. |
Yukarıdaki işlemlerin tümü hizmetin sürümünde de kullanılabilir .debug
(örneğin, cognitiveservices.vision.spatialanalysis-personcount.debug
). Hata ayıklama, işlenirken video karelerini görselleştirme özelliğine sahiptir. Video karelerinin ve olayların görselleştirmesini etkinleştirmek için konak bilgisayarda çalıştırmanız xhost +
gerekir.
Önemli
Azure AI Vision AI modelleri, video çekimlerinde insan varlığını algılar ve bulur ve insan vücudu çevresinde sınırlayıcı bir kutu oluşturur. Yapay zeka modelleri, kişilerin kimliklerini veya demografik bilgilerini keşfetmeye çalışmaz.
İşlem parametreleri
Uzamsal Analiz işlemlerinin her biri için gereken parametreler aşağıdadır.
İşlem parametreleri | Açıklama |
---|---|
Operation ID |
Yukarıdaki tablodan İşlem Tanımlayıcısı. |
enabled |
Boole değeri: true veya false |
VIDEO_URL |
Kamera cihazının RTSP url'si (Örnek: rtsp://username:password@url ). Uzamsal Analiz, RTSP, http veya mp4 aracılığıyla H.264 kodlanmış akışını destekler. Video_URL, AES şifrelemesi kullanılarak karartılmış bir base64 dize değeri olarak sağlanabilir ve video URL'si gizlenirse KEY_ENV ve IV_ENV ortam değişkenleri olarak sağlanması gerekir. Anahtar ve şifreleme oluşturmaya yönelik örnek yardımcı programı burada bulabilirsiniz. |
VIDEO_SOURCE_ID |
Kamera cihazı veya video akışı için kolay bir ad. Bu, olay JSON çıkışıyla döndürülür. |
VIDEO_IS_LIVE |
Kamera cihazları için true; false değerini seçin. |
VIDEO_DECODE_GPU_INDEX |
Video çerçevesinin kodunu çözmek için hangi GPU. Varsayılan olarak 0'dır. ve CAMERACALIBRATOR_NODE_CONFIG gibi DETECTOR_NODE_CONFIG diğer düğüm yapılandırmasındaki ile aynı gpu_index olmalıdır. |
INPUT_VIDEO_WIDTH |
Video/akışın çerçeve genişliğini girin (örneğin, 1920). Bu isteğe bağlı bir alandır ve sağlanırsa çerçeve en boy oranı korunarak bu boyuta ölçeklendirilir. |
DETECTOR_NODE_CONFIG |
Algılayıcı düğümünü hangi GPU'da çalıştıracaklarını gösteren JSON. Aşağıdaki biçimde olmalıdır: "{ \"gpu_index\": 0 }", |
TRACKER_NODE_CONFIG |
İzleyici düğümünde hızın hesaplanıp hesaplanmayacağını gösteren JSON. Aşağıdaki biçimde olmalıdır: "{ \"enable_speed\": true }", |
CAMERA_CONFIG |
Birden çok kamera için ayarlanmış kamera parametrelerini gösteren JSON. Kullandığınız beceri kalibrasyon gerektiriyorsa ve kamera parametresine zaten sahipseniz, bunları doğrudan sağlamak için bu yapılandırmayı kullanabilirsiniz. Şu biçimde olmalıdır: "{ \"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 her kamerayı tanımlamak için kullanılır. Yayımladığımız etkinlikten source_info elde edilebilir. Yalnızca içinde DETECTOR_NODE_CONFIG olduğunda do_calibration=false geçerlilik kazanır. |
CAMERACALIBRATOR_NODE_CONFIG |
Kamera calibrator düğümünü çalıştıracak GPU'nun hangisi olduğunu ve kalibrasyon kullanılıp kullanılmayacağını gösteren JSON. Aşağıdaki biçimde olmalıdır: "{ \"gpu_index\": 0, \"do_calibration\": true, \"enable_orientation\": true}", |
CALIBRATION_CONFIG |
Kamera kalibrasyonunun nasıl çalıştığını denetlemek için parametreleri gösteren JSON. Aşağıdaki biçimde olmalıdır: "{\"enable_recalibration\": true, \"quality_check_frequency_seconds\": 86400}", |
SPACEANALYTICS_CONFIG |
Aşağıda açıklandığı gibi bölge ve çizgi için JSON yapılandırması. |
ENABLE_FACE_MASK_CLASSIFIER |
True video akışında yüz maskesi takan kişileri algılamayı etkinleştirmek, False devre dışı bırakmak için. Varsayılan olarak bu devre dışıdır. Yüz maskesi algılama için giriş video genişliği parametresinin 1920 "INPUT_VIDEO_WIDTH": 1920 olması gerekir. Algılanan kişilerin kameraya bakmadığını veya kameradan çok uzak olduğunu algılarsa yüz maskesi özniteliği döndürülmeyecektir. Daha fazla bilgi için bkz. kamera yerleşimi. |
STATIONARY_TARGET_REMOVER_CONFIG |
Sabit hedef kaldırma parametrelerini belirten JSON, mankenler veya resimlerdeki kişiler gibi uzun süreli sabit hatalı pozitif hedefleri öğrenme ve yoksayma özelliği ekler. Yapılandırma aşağıdaki biçimde olmalıdır: "{\"enable\": true, \"bbox_dist_threshold-in_pixels\": 5, \"buffer_length_in_seconds\": 3600, \"filter_ratio\": 0.2 }" |
Algılayıcı düğümü parametre ayarları
Aşağıda, tüm Uzamsal Çözümleme işlemleri için parametrelere bir örnek DETECTOR_NODE_CONFIG
verilmiştir.
{
"gpu_index": 0,
"enable_breakpad": false
}
Adı | Tür | Veri Akışı Açıklaması |
---|---|---|
gpu_index |
Dize | Bu işlemin çalıştırılacağı GPU dizini. |
enable_breakpad |
ikili | Hata ayıklama kullanımı için kilitlenme dökümü oluşturmak için kullanılan kesme defterinin etkinleştirilip etkinleştirilmeydiğini gösterir. Varsayılan olarak budur false . olarak true ayarlarsanız kapsayıcının HostConfig createOptions bölümüne de eklemeniz "CapAdd": ["SYS_PTRACE"] gerekir. Varsayılan olarak, kilitlenme dökümü RealTimePersonTracking AppCenter uygulamasına yüklenir. Kilitlenme dökümlerinin kendi AppCenter uygulamanıza yüklenmesini istiyorsanız, ortam değişkenini uygulamanızın uygulama gizli dizisiyle RTPT_APPCENTER_APP_SECRET geçersiz kılabilirsiniz. |
Kamera kalibrasyon düğümü parametre ayarları
Aşağıda, tüm uzamsal analiz işlemleri için parametrelere bir örnek CAMERACALIBRATOR_NODE_CONFIG
verilmiştir.
{
"gpu_index": 0,
"do_calibration": true,
"enable_breakpad": false,
"enable_orientation": true
}
Adı | Tür | Veri Akışı Açıklaması |
---|---|---|
do_calibration |
Dize | Kalibrasyon özelliğinin açık olduğunu gösterir. do_calibration cognitiveservices.vision.spatialanalysis-persondistance öğesinin düzgün çalışması için doğru olmalıdır. do_calibration varsayılan olarak olarak True ayarlanır. |
enable_breakpad |
ikili | Hata ayıklama kullanımı için kilitlenme dökümü oluşturmak için kullanılan kesme defterinin etkinleştirilip etkinleştirilmeydiğini gösterir. Varsayılan olarak budur false . olarak true ayarlarsanız kapsayıcının HostConfig createOptions bölümüne de eklemeniz "CapAdd": ["SYS_PTRACE"] gerekir. Varsayılan olarak, kilitlenme dökümü RealTimePersonTracking AppCenter uygulamasına yüklenir. Kilitlenme dökümlerinin kendi AppCenter uygulamanıza yüklenmesini istiyorsanız, ortam değişkenini uygulamanızın uygulama gizli dizisiyle RTPT_APPCENTER_APP_SECRET geçersiz kılabilirsiniz. |
enable_orientation |
ikili | Algılanan kişilerin yönlendirmesini hesaplamak isteyip istemediğinizi gösterir. enable_orientation varsayılan olarak olarak True ayarlanır. |
Kalibrasyon yapılandırması
Bu, tüm uzamsal analiz işlemleri için parametrelerin CALIBRATION_CONFIG
bir örneğidir.
{
"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
}
Adı | Tür | Açıklama |
---|---|---|
enable_recalibration |
ikili | Otomatik yeniden ölçeklendirmenin açık olup olmadığını gösterir. Varsayılan true değeridir. |
calibration_quality_check_frequency_seconds |
int | Yeniden ölçeklendirme gerekip gerekmediğini belirlemek için her kalite denetimi arasındaki en az saniye sayısı. Varsayılan değer ( 86400 24 saat). Yalnızca olduğunda enable_recalibration=True kullanılır. |
calibration_quality_check_sample_collect_frequency_seconds |
int | Yeniden hesaplama ve kalite denetimi için yeni veri örnekleri toplama arasında en az saniye sayısı. Varsayılan değer ( 300 5 dakika). Yalnızca olduğunda enable_recalibration=True kullanılır. |
calibration_quality_check_one_round_sample_collect_num |
int | Örnek toplama turu başına toplayacak yeni veri örneklerinin en az sayısı. Varsayılan 10 değeridir. Yalnızca olduğunda enable_recalibration=True kullanılır. |
calibration_quality_check_queue_max_size |
int | Kamera modeli ayarlandığında depolanacak en fazla veri örneği sayısı. Varsayılan 1000 değeridir. Yalnızca olduğunda enable_recalibration=True kullanılır. |
calibration_event_frequency_seconds |
int | Kamera kalibrasyon olaylarının çıkış sıklığı (saniye). değeri -1 , kamera ayarı bilgisi değiştirilmediği sürece kamera kalibrasyonunun gönderilmemesi gerektiğini belirtir. Varsayılan -1 değeridir. |
Kamera ayarı çıkışı
Aşağıda, etkinleştirildiyse kamera ayarından elde edilen çıkışın bir örneği verilmiştir. Üç nokta, listedeki aynı türde nesneleri daha fazla gösterir.
{
"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
}
]
}
}
ayrıntıları için bkz. Uzamsal analiz işlemi çıktısısource_info
.
ZonePlacementInfo Alan Adı | Type | Açıklama |
---|---|---|
optimalZonePolygon |
nesne | Kamera görüntüsünde, en iyi sonuçlar için operasyonlarınıza yönelik çizgilerin veya bölgelerin yerleştirilebildiği çokgen. Her değer çifti, çokgen köşeleri için x,y değerini temsil eder. Çokgen, insanların izlendiği veya sayıldığı alanları temsil eder ve çokgen noktaları normalleştirilmiş koordinatlara (0-1) dayanır; burada sol üst köşe (0,0, 0,0) ve sağ alt köşe (1,0, 1,0) olur. |
fairZonePolygon |
nesne | Kamera görüntüsünde, operasyonlarınız için çizgilerin veya bölgelerin iyi bir şekilde yerleştirilebildiği ancak en uygun sonuçlara sahip olmadığı çokgen. İçeriğin ayrıntılı açıklaması için yukarıya bakın optimalZonePolygon . |
uniformlySpacedPersonBoundingBoxes |
listele | Gerçek uzayda tekdüzen olarak dağıtılan kamera görüntüsündeki sınırlayıcı kişi kutularının listesi. Değerler normalleştirilmiş koordinatları (0-1) temel alır. |
personBoundingBoxGroundPoints |
listele | Kat düzleminde kameraya göre koordinatların listesi. Her koordinat, aynı dizine sahip içindeki sınırlayıcı kutunun uniformlySpacedPersonBoundingBoxes sağ alt kısmına karşılık gelir. Kat düzlemindeki centerGroundPointX/centerGroundPointY koordinatların nasıl hesapıldığı hakkında daha fazla bilgi için cognitiveservices.vision.spatialanalysis-persondistance Yapay Zeka İçgörüleri için JSON biçimi altındaki alanlara bakın. |
Video çerçevesinde görselleştirilmiş bölge yerleşimi bilgi çıkışı örneği:
Bölge yerleştirme bilgileri yapılandırmalarınız için öneriler sağlar, ancak en iyi sonuçlar için Kamera yapılandırması yönergelerine uyulmalıdır.
İzleyici düğümü parametre ayarları
İzleyici düğümü parametre ayarları aracılığıyla hız hesaplamasını yapılandırabilirsiniz.
{
"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
}
Adı | Tür | Açıklama |
---|---|---|
enable_speed |
ikili | Algılanan kişilerin hızını hesaplamak isteyip istemediğinizi gösterir. enable_speed varsayılan olarak olarak True ayarlanır. En iyi tahmini değerlere sahip olmak için hem hızı hem de yönlendirmeyi etkinleştirmeniz kesinlikle önerilir. |
remove_stationary_objects |
ikili | Sabit nesneleri kaldırmak isteyip istemediğinizi gösterir. remove_stationary_objects varsayılan olarak True olarak ayarlanır. |
stationary_objects_dist_threshold_in_pixels |
int | İki algılama kutusunu aynı algılama olarak ele alıp alamayacağına karar vermek için mahalle uzaklığı eşiği. stationary_objects_dist_threshold_in_pixels varsayılan olarak 5 olarak ayarlanır. |
stationary_objects_buffer_length_in_seconds |
int | Bir hedefin sabit hedef olup olmadığına karar vermek için sistemin geriye bakması gereken saniye cinsinden minimum süre. stationary_objects_buffer_length_in_seconds varsayılan olarak 3600 olarak ayarlanır. |
stationary_objects_filter_ratio |
kayan noktalı sayı | Bir hedef aynı konumda (içinde stationary_objects_dist_threshold_in_pixels tanımlanır) stationary_objects_filter_ratio sürekli olarak algılanırsa (0,2, zaman aralığının %20'sini stationary_objects_buffer_length_in_seconds ifade eder), sabit hedef olarak değerlendirilir. stationary_objects_filter_ratio varsayılan olarak 0,2 olarak ayarlanır. |
Uzamsal Analiz işlemleri yapılandırması ve çıkışı
Kişi sayısı için bölge yapılandırması
Aşağıda, bir bölgeyi yapılandıran SPACEANALYTICS_CONFIG parametresi için bir JSON girişi örneği verilmiştir. Bu işlem için birden çok bölge yapılandırabilirsiniz.
{
"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"
}
}
]
}
]
}
Adı | Tür | Tanım |
---|---|---|
zones |
listele | Bölgelerin listesi. |
name |
Dize | Bu bölge için kolay ad. |
polygon |
listele | Her değer çifti, çokgen köşeleri için x,y değerini temsil eder. Çokgen, insanların izlendiği veya sayıldığı alanları temsil eder. Çokgen noktalar, sol üst köşenin (0,0, 0,0) ve sağ alt köşenin (1,0, 1,0) olduğu normalleştirilmiş koordinatları (0-1) temel alır. |
threshold |
kayan noktalı sayı | Kişi bölge içindeki bu piksel sayısından büyük olduğunda olaylar çıkışlanır. Bu isteğe bağlı bir alandır ve değer oran (0-1) olarak ayarlanır. Örneğin, görüntü genişliği = 512 olan bir videoda 0,0253 değeri 13 piksel olur (0,0253 X 512 = ~13). |
type |
Dize | cognitiveservices.vision.spatialanalysis-personcount için bu olmalıdırcount . |
trigger |
Dize | Olay gönderme tetikleyicisi türü. Desteklenen değerler, event sayının değişip değişmediğine bakılmaksızın, sayım değiştiğinde olayları göndermeye veya interval olayları düzenli aralıklarla göndermeye yöneliktir. |
output_frequency |
int | Olayların çıkış hızı. = X olduğunda output_frequency , her X olayı çıkışlanır, örneğin. output_frequency = 2, diğer her olayın çıkış olduğu anlamına gelir. output_frequency hem hem interval de event için geçerlidir. |
focus |
Dize | Olayları hesaplamak için kullanılan kişinin sınırlayıcı kutusu içindeki nokta konumu. Odağın değeri (kişinin ayak izi), bottom_center (kişinin sınırlayıcı kutusunun alt merkezi) center (kişinin sınırlayıcı kutusunun merkezi) olabilir footprint . |
Personcrossingline için satır yapılandırması
Aşağıda, bir satırı yapılandıran parametre için SPACEANALYTICS_CONFIG
bir JSON girişi örneği verilmiştir. Bu işlem için birden çok kesişen çizgi yapılandırabilirsiniz.
{
"lines": [
{
"name": "doorcamera",
"line": {
"start": {
"x": 0,
"y": 0.5
},
"end": {
"x": 1,
"y": 0.5
}
},
"events": [
{
"type": "linecrossing",
"config": {
"trigger": "event",
"focus": "footprint"
}
}
]
}
]
}
Adı | Tür | Tanım |
---|---|---|
lines |
listele | Satır listesi. |
name |
Dize | Bu satır için kolay ad. |
line |
listele | Satırın tanımı. Bu, "giriş" ile "çıkış" karşılaştırmasını anlamanıza olanak sağlayan bir yön çizgisidir. |
start |
değer çifti | x, y koordinatları satırın başlangıç noktası için. Kayan değer, köşenin sol üst köşeye göre konumunu temsil eder. Mutlak x, y değerlerini hesaplamak için bu değerleri çerçeve boyutuyla çarpacaksınız. |
end |
değer çifti | x, satırın bitiş noktası için y koordinatları. Kayan değer, köşenin sol üst köşeye göre konumunu temsil eder. Mutlak x, y değerlerini hesaplamak için bu değerleri çerçeve boyutuyla çarpacaksınız. |
threshold |
kayan noktalı sayı | Kişi bölge içindeki bu piksel sayısından büyük olduğunda olaylar çıkışlanır. Bu isteğe bağlı bir alandır ve değer oran (0-1) olarak ayarlanır. Örneğin, görüntü genişliği = 512 olan bir videoda 0,0253 değeri 13 piksel olur (0,0253 X 512 = ~13). |
type |
Dize | cognitiveservices.vision.spatialanalysis-personcrossingline için bu olmalıdırlinecrossing . |
trigger |
Dize | Olay gönderme tetikleyicisi türü. Desteklenen Değerler: "event": birisi çizgiyi geçtiğinde tetiklenir. |
focus |
Dize | Olayları hesaplamak için kullanılan kişinin sınırlayıcı kutusu içindeki nokta konumu. Odağın değeri (kişinin ayak izi), bottom_center (kişinin sınırlayıcı kutusunun alt merkezi) center (kişinin sınırlayıcı kutusunun merkezi) olabilir footprint . Varsayılan değer ayak izidir. |
Personcrossingpolygon için bölge yapılandırması
Bu, bir bölgeyi yapılandıran parametre için SPACEANALYTICS_CONFIG
bir JSON girişi örneğidir. Bu işlem için birden çok bölge yapılandırabilirsiniz.
{
"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"
}
}]
}]
}
Adı | Tür | Tanım |
---|---|---|
zones |
listele | Bölgelerin listesi. |
name |
Dize | Bu bölge için kolay ad. |
polygon |
listele | Her değer çifti, çokgen köşeleri için x,y değerini temsil eder. Çokgen, insanların izlendiği veya sayıldığı alanları temsil eder. Kayan değer, köşenin sol üst köşeye göre konumunu temsil eder. Mutlak x, y değerlerini hesaplamak için bu değerleri çerçeve boyutuyla çarpacaksınız. |
target_side |
int | İnsanların bölgedeyken o tarafa ne kadar süreyle karşı karşıya olduğunu ölçmek için tarafından polygon tanımlanan bölgenin bir tarafını belirtir. 'dwellTimeForTargetSide' tahmini süreyi gösterir. Her kenar, bölgenizi temsil eden çokgenin iki köşesi arasında numaralandırılmış bir kenardır. Örneğin, çokgenin ilk iki köşesi arasındaki kenar ilk tarafı temsil eder: 'side'=1. değeritarget_side , öğesinin N kenarlarının sayısı arasında [0,N-1] yer alırpolygon . Bu, isteğe bağlı bir alandır. |
threshold |
kayan noktalı sayı | Kişi bölge içindeki bu piksel sayısından büyük olduğunda olaylar çıkışlanır. Bu isteğe bağlı bir alandır ve değer oran (0-1) olarak ayarlanır. Örneğin, görüntü genişliği = 512 olan bir videoda 0,074 değeri 38 piksel olur (0,074 X 512 = ~38). |
type |
Dize | cognitiveservices.vision.spatialanalysis-personcrossingpolygon için bu veya zonedwelltime olmalıdırzonecrossing . |
trigger |
Dize | Olay gönderme tetikleyicisi türü Desteklenen Değerler: "event": birisi bölgeye girdiğinde veya bölgeden çıktığında tetikler. |
focus |
Dize | Olayları hesaplamak için kullanılan kişinin sınırlayıcı kutusu içindeki nokta konumu. Odağın değeri (kişinin ayak izi), bottom_center (kişinin sınırlayıcı kutusunun alt merkezi) center (kişinin sınırlayıcı kutusunun merkezi) olabilir footprint . Varsayılan değer ayak izidir. |
Kişilik için bölge yapılandırması
Bu, cognitiveservices.vision.spatialanalysis-persondistance için bir bölge yapılandıran parametreye yönelik bir JSON girişi SPACEANALYTICS_CONFIG
örneğidir. Bu işlem için birden çok bölge yapılandırabilirsiniz.
{
"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"
}
}]
}]
}
Adı | Tür | Tanım |
---|---|---|
zones |
listele | Bölgelerin listesi. |
name |
Dize | Bu bölge için kolay ad. |
polygon |
listele | Her değer çifti, çokgen köşeleri için x,y değerini temsil eder. Çokgen, insanların sayıldığı ve insanlar arasındaki mesafenin ölçüldiği alanları temsil eder. Kayan değer, köşenin sol üst köşeye göre konumunu temsil eder. Mutlak x, y değerlerini hesaplamak için bu değerleri çerçeve boyutuyla çarpacaksınız. |
threshold |
kayan noktalı sayı | Kişi bölge içindeki bu piksel sayısından büyük olduğunda olaylar çıkışlanır. Bu isteğe bağlı bir alandır ve değer oran (0-1) olarak ayarlanır. Örneğin, görüntü genişliği = 512 olan bir videoda 0,0253 değeri 13 piksel olur (0,0253 X 512 = ~13). |
type |
Dize | cognitiveservices.vision.spatialanalysis-persondistance için bu olmalıdırpersondistance . |
trigger |
Dize | Olay gönderme tetikleyicisi türü. Desteklenen değerler, event sayının değişip değişmediğine bakılmaksızın, sayım değiştiğinde olayları göndermeye veya interval olayları düzenli aralıklarla göndermeye yöneliktir. |
output_frequency |
int | Olayların çıkış hızı. = X olduğunda output_frequency , her X olayı çıkışlanır, örneğin. output_frequency = 2, diğer her olayın çıkış olduğu anlamına gelir. output_frequency hem hem interval de event için geçerlidir. |
minimum_distance_threshold |
kayan noktalı sayı | İnsanlar bu mesafeden daha az uzakta olduğunda "TooClose" olayını tetikleyecek bir ayak uzaklığı. |
maximum_distance_threshold |
kayan noktalı sayı | İnsanlar bu mesafeden daha büyük olduğunda bir "TooFar" olayını tetikleyecek bir ayak uzaklığı. |
aggregation_method |
Dize | Toplama persondistance sonucu yöntemi. aggregation_method hem hem de mode average için geçerlidir. |
focus |
Dize | Olayları hesaplamak için kullanılan kişinin sınırlayıcı kutusu içindeki nokta konumu. Odağın değeri (kişinin ayak izi), bottom_center (kişinin sınırlayıcı kutusunun alt merkezi) center (kişinin sınırlayıcı kutusunun merkezi) olabilir footprint . |
Uzamsal analiz yapılandırması
Aşağıda cognitiveservices.vision.spatialanalysis için SPACEANALYTICS_CONFIG
bir çizgi ve bölge yapılandıran parametreye yönelik bir JSON girişi örneği verilmiştir. Bu işlem için birden çok satır/bölge yapılandırabilirsiniz ve her satır/bölge farklı olaylara sahip olabilir.
{
"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"
}
}
]
}
]
}
Kamera yapılandırması
Bölgeleri ve çizgileri yapılandırma hakkında daha fazla bilgi edinmek için kamera yerleştirme yönergelerine bakın.
Uzamsal Analiz işlemi çıktısı
Her işlemdeki olaylar JSON biçiminde Azure IoT Hub'a çıkarılır.
Kişi sayısı Yapay Zeka İçgörüleri için JSON biçimi
Bu işlem tarafından bir olay çıktısı için örnek JSON.
{
"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"
}
Olay Alanı Adı | Type | Veri Akışı Açıklaması |
---|---|---|
id |
Dize | Olay Kodu |
type |
Dize | Olay türü |
detectionsId |
dizi | Bu olayı tetikleyen kişi algılamasının benzersiz tanımlayıcısının boyut 1 dizisi |
properties |
koleksiyonu | Değer koleksiyonu |
trackinId |
Dize | Algılanan kişinin benzersiz tanımlayıcısı |
zone |
Dize | Çaprazlanan bölgeyi temsil eden çokgenin "ad" alanı |
trigger |
Dize | Tetikleyici türü, içindeki değerine trigger bağlı olarak 'event' veya 'interval' SPACEANALYTICS_CONFIG |
Algılamalar Alan Adı | Type | Veri Akışı Açıklaması |
---|---|---|
id |
Dize | Algılama Kimliği |
type |
Dize | Algılama türü |
region |
koleksiyonu | Değer koleksiyonu |
type |
Dize | Bölge türü |
points |
koleksiyonu | Bölge türü RECTANGLE olduğunda sol üst ve alt sağ noktalar |
confidence |
kayan noktalı sayı | Algoritma güvenilirliği |
attributes |
dizi | Öznitelik dizisi. Her öznitelik etiket, görev ve güvenden oluşur |
label |
Dize | Öznitelik değeri (örneğin, {label: face_mask} algılanan kişinin yüz maskesi taktığını gösterir) |
confidence (attribute) |
kayan noktalı sayı | 0 ile 1 aralığındaki öznitelik güvenilirlik değeri (örneğin, {confidence: 0.9, label: face_nomask} algılanan kişinin yüz maskesi takmadığını gösterir) |
task |
Dize | Öznitelik sınıflandırma görevi/sınıfı |
SourceInfo Alan Adı | Type | Veri Akışı Açıklaması |
---|---|---|
id |
Dize | Kamera Kimliği |
timestamp |
tarih | JSON yükünün yayıldığı UTC tarihi |
width |
int | Video çerçevesi genişliği |
height |
int | Video kare yüksekliği |
frameId |
int | Çerçeve tanımlayıcısı |
cameraCallibrationInfo |
koleksiyonu | Değer koleksiyonu |
status |
Dize | Kalibrasyonun, biçimindeki state[;progress description] durumu. Durum , Recalibrating (yeniden ölçeklendirme etkinleştirildiyse) veya Calibrated olabilirCalibrating . İlerleme açıklaması bölümü yalnızca geçerli kalibrasyon işleminin ilerleme durumunu göstermek için kullanılan ve Recalibrating durumunda olduğunda Calibrating geçerlidir. |
cameraHeight |
kayan noktalı sayı | Kameranın yerden yüksekliği ayaklar içinde. Bu, otomatik ölçeklendirmeden çıkarılır. |
focalLength |
kayan noktalı sayı | Kameranın piksel cinsinden odak uzunluğu. Bu, otomatik ölçeklendirmeden çıkarılır. |
tiltUpAngle |
kayan noktalı sayı | Dikeyden kamera eğme açısı. Bu, otomatik ölçeklendirmeden çıkarılır. |
Personcrossingline Yapay Zeka İçgörüleri için JSON biçimi
Bu işlem tarafından algılama çıktısı için örnek JSON.
{
"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"
}
Olay Alanı Adı | Type | Veri Akışı Açıklaması |
---|---|---|
id |
Dize | Olay Kodu |
type |
Dize | Olay türü |
detectionsId |
dizi | Bu olayı tetikleyen kişi algılamasının benzersiz tanımlayıcısının boyut 1 dizisi |
properties |
koleksiyonu | Değer koleksiyonu |
trackinId |
Dize | Algılanan kişinin benzersiz tanımlayıcısı |
status |
Dize | 'CrossLeft' veya 'CrossRight' olan çizgi geçişlerinin yönü. Yön, çizginin "ucuna" bakan "başlangıçta" ayakta durmayı hayal etmeye dayanır. CrossRight soldan sağa doğru geçiyor. CrossLeft sağdan sola geçiyor. |
orientationDirection |
Dize | Çizgiyi geçtikten sonra algılanan kişinin yönlendirme yönü. Değer 'Sol', 'Sağ veya 'Düz' olabilir. bu değer, içinde olarak ayarlandıysa enable_orientation True çıkıştır CAMERACALIBRATOR_NODE_CONFIG |
zone |
Dize | Çapraz çizginin "ad" alanı |
Algılamalar Alan Adı | Type | Veri Akışı Açıklaması |
---|---|---|
id |
Dize | Algılama Kimliği |
type |
Dize | Algılama türü |
region |
koleksiyonu | Değer koleksiyonu |
type |
Dize | Bölge türü |
points |
koleksiyonu | Bölge türü RECTANGLE olduğunda sol üst ve alt sağ noktalar |
groundOrientationAngle |
kayan noktalı sayı | Kişinin çıkarımlı zemin düzleminde yönünün saat yönünde radyan açısı |
mappedImageOrientation |
kayan noktalı sayı | 2B görüntü alanında kişinin yönünün saat yönünde yansıtılan radyan açısı |
speed |
kayan noktalı sayı | Algılanan kişinin tahmini hızı. Birim şu şekildedir: foot per second (ft/s) |
confidence |
kayan noktalı sayı | Algoritma güvenilirliği |
attributes |
dizi | Öznitelik dizisi. Her öznitelik etiket, görev ve güvenden oluşur |
label |
Dize | Öznitelik değeri (örneğin, {label: face_mask} algılanan kişinin yüz maskesi taktığını gösterir) |
confidence (attribute) |
kayan noktalı sayı | 0 ile 1 aralığındaki öznitelik güvenilirlik değeri (örneğin, {confidence: 0.9, label: face_nomask} algılanan kişinin yüz maskesi takmadığını gösterir) |
task |
Dize | Öznitelik sınıflandırma görevi/sınıfı |
SourceInfo Alan Adı | Type | Veri Akışı Açıklaması |
---|---|---|
id |
Dize | Kamera Kimliği |
timestamp |
tarih | JSON yükünün yayıldığı UTC tarihi |
width |
int | Video çerçevesi genişliği |
height |
int | Video kare yüksekliği |
frameId |
int | Çerçeve tanımlayıcısı |
Önemli
Yapay zeka modeli, kişinin kameraya doğru mu yoksa kameradan uzak mı olduğuna bakılmaksızın bir kişiyi algılar. Yapay zeka modeli yüz tanımayı çalıştırmaz ve biyometrik bilgi yaymaz.
Personcrossingpolygon Yapay Zeka İçgörüleri için JSON biçimi
Tür SPACEANALYTICS_CONFIG ile zonecrossing
bu işlemin algılama çıkışı için örnek JSON.
{
"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"
}
Tür SPACEANALYTICS_CONFIG ile zonedwelltime
bu işlemin algılama çıkışı için örnek JSON.
{
"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"
}
Olay Alanı Adı | Type | Veri Akışı Açıklaması |
---|---|---|
id |
Dize | Olay Kodu |
type |
Dize | Olay türü. Değer personZoneDwellTimeEvent veya personZoneEnterExitEvent olabilir |
detectionsId |
dizi | Bu olayı tetikleyen kişi algılamasının benzersiz tanımlayıcısının boyut 1 dizisi |
properties |
koleksiyonu | Değer koleksiyonu |
trackinId |
Dize | Algılanan kişinin benzersiz tanımlayıcısı |
status |
Dize | 'Enter' veya 'Exit' gibi çokgen geçişlerin yönü |
side |
int | Kişinin çapraz yaptığı çokgen tarafının sayısı. Her kenar, bölgenizi temsil eden çokgenin iki köşesi arasında numaralandırılmış bir kenardır. Çokgenin ilk iki köşesi arasındaki kenar birinci tarafı temsil eder. Olay, tıkanıklık nedeniyle belirli bir tarafla ilişkilendirilmezse 'Yan' boş olur. Örneğin, bir kişi kaybolduğunda ancak bölgenin bir kenarından geçerken görünmediğinde bir çıkış oluştu veya bir kişi bölgede göründüğünde ancak bir yandan geçerken görünmediğinde bir giriş oluştu. |
dwellTime |
kayan noktalı sayı | Kişinin bölgede harcadığı süreyi temsil eden milisaniye sayısı. Olay türü personZoneDwellTimeEvent olduğunda bu alan sağlanır |
dwellFrames |
int | Kişinin bölgede harcadığı çerçeve sayısı. Olay türü personZoneDwellTimeEvent olduğunda bu alan sağlanır |
dwellTimeForTargetSide |
kayan noktalı sayı | Kişinin bölgede harcadığı ve öğesine dönük target_side olduğu süreyi temsil eden milisaniye sayısı. Bu alan, içinde CAMERACALIBRATOR_NODE_CONFIG olduğunda enable_orientation True ve değeri target_side SPACEANALYTICS_CONFIG |
avgSpeed |
kayan noktalı sayı | Bölgedeki kişinin ortalama hızı. Birim şu şekildedir: foot per second (ft/s) |
minSpeed |
kayan noktalı sayı | Bölgedeki kişinin en düşük hızı. Birim şu şekildedir: foot per second (ft/s) |
zone |
Dize | Çaprazlanan bölgeyi temsil eden çokgenin "ad" alanı |
Algılamalar Alan Adı | Type | Veri Akışı Açıklaması |
---|---|---|
id |
Dize | Algılama Kimliği |
type |
Dize | Algılama türü |
region |
koleksiyonu | Değer koleksiyonu |
type |
Dize | Bölge türü |
points |
koleksiyonu | Bölge türü RECTANGLE olduğunda sol üst ve alt sağ noktalar |
groundOrientationAngle |
kayan noktalı sayı | Kişinin çıkarımlı zemin düzleminde yönünün saat yönünde radyan açısı |
mappedImageOrientation |
kayan noktalı sayı | 2B görüntü alanında kişinin yönünün saat yönünde yansıtılan radyan açısı |
speed |
kayan noktalı sayı | Algılanan kişinin tahmini hızı. Birim şu şekildedir: foot per second (ft/s) |
confidence |
kayan noktalı sayı | Algoritma güvenilirliği |
attributes |
dizi | Öznitelik dizisi. Her öznitelik etiket, görev ve güvenden oluşur |
label |
Dize | Öznitelik değeri (örneğin, {label: face_mask} algılanan kişinin yüz maskesi taktığını gösterir) |
confidence (attribute) |
kayan noktalı sayı | 0 ile 1 aralığındaki öznitelik güvenilirlik değeri (örneğin, {confidence: 0.9, label: face_nomask} algılanan kişinin yüz maskesi takmadığını gösterir) |
task |
Dize | Öznitelik sınıflandırma görevi/sınıfı |
Kişilik Yapay Zeka İçgörüleri için JSON biçimi
Bu işlem tarafından algılama çıktısı için örnek JSON.
{
"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"
}
Olay Alanı Adı | Type | Veri Akışı Açıklaması |
---|---|---|
id |
Dize | Olay Kodu |
type |
Dize | Olay türü |
detectionsId |
dizi | Bu olayı tetikleyen kişi algılamasının benzersiz tanımlayıcısının boyut 1 dizisi |
properties |
koleksiyonu | Değer koleksiyonu |
personCount |
int | Olay yayıldığında algılanan kişi sayısı |
averageDistance |
kayan noktalı sayı | Algılanan tüm kişiler arasındaki ortalama uzaklık ayakları |
minimumDistanceThreshold |
kayan noktalı sayı | İnsanlar bu mesafeden daha az uzakta olduğunda bir "TooClose" olayını tetikleyecek olan ayak mesafesi. |
maximumDistanceThreshold |
kayan noktalı sayı | İnsanlar birbirinden uzaklığı aştığında bir "TooFar" olayını tetikleyecek olan ayak mesafesi. |
eventName |
Dize | Olay adı TooClose ihlal edildiğinde, TooFar ihlal edildiğinde maximumDistanceThreshold veya unknown otomatik ölçeklendirme tamamlanmadığında ile birliktedir minimumDistanceThreshold |
distanceViolationPersonCount |
int | veya ihlalinde minimumDistanceThreshold algılanan kişi sayısı maximumDistanceThreshold |
zone |
Dize | Çokgenin, kişiler arasında mesafelendirme için izlenen bölgeyi temsil eden "ad" alanı |
trigger |
Dize | Tetikleyici türü, içindeki değerine trigger bağlı olarak 'event' veya 'interval' SPACEANALYTICS_CONFIG |
Algılamalar Alan Adı | Type | Veri Akışı Açıklaması |
---|---|---|
id |
Dize | Algılama Kimliği |
type |
Dize | Algılama türü |
region |
koleksiyonu | Değer koleksiyonu |
type |
Dize | Bölge türü |
points |
koleksiyonu | Bölge türü RECTANGLE olduğunda sol üst ve alt sağ noktalar |
confidence |
kayan noktalı sayı | Algoritma güvenilirliği |
centerGroundPointX/centerGroundPointY |
2 kayan değer | x , y kişinin yerdeki çıkarım konumunun koordinatlarını ayaklar halinde içeren değerler. x ve y zeminin seviye olduğunu varsayarsak, kat düzleminde koordinatlardır. Kameranın konumu çıkış noktasıdır. |
içinde centerGroundPoint
, x
kameradan kamera görüntü düzlemine dik olan kişiye olan uzaklık bileşenidir. y
, kamera görüntü düzlemine paralel mesafenin bileşenidir.
Bu örnekte, centerGroundPoint
şeklindedir {centerGroundPointX: 4, centerGroundPointY: 5}
. Bu, kameranın 1,5 metre ilerisinde ve 1,5 metre sağa, yukarıdan aşağıya bakan bir kişi olduğu anlamına gelir.
SourceInfo Alan Adı | Type | Veri Akışı Açıklaması |
---|---|---|
id |
Dize | Kamera Kimliği |
timestamp |
tarih | JSON yükünün yayıldığı UTC tarihi |
width |
int | Video çerçevesi genişliği |
height |
int | Video kare yüksekliği |
frameId |
int | Çerçeve tanımlayıcısı |
cameraCallibrationInfo |
koleksiyonu | Değer koleksiyonu |
status |
Dize | Kalibrasyonun, biçimindeki state[;progress description] durumu. Durum , Recalibrating (yeniden ölçeklendirme etkinleştirildiyse) veya Calibrated olabilirCalibrating . İlerleme açıklaması bölümü yalnızca geçerli kalibrasyon işleminin ilerleme durumunu göstermek için kullanılan ve Recalibrating durumunda olduğunda Calibrating geçerlidir. |
cameraHeight |
kayan noktalı sayı | Kameranın yerden yüksekliği ayaklar içinde. Bu, otomatik ölçeklendirmeden çıkarılır. |
focalLength |
kayan noktalı sayı | Kameranın piksel cinsinden odak uzunluğu. Bu, otomatik ölçeklendirmeden çıkarılır. |
tiltUpAngle |
kayan noktalı sayı | Dikeyden kamera eğme açısı. Bu, otomatik ölçeklendirmeden çıkarılır. |
Uzamsalanaliz Yapay Zeka İçgörüleri için JSON biçimi
Bu işlemin çıktısı yapılandırılan events
öğesine bağlıdır, örneğin bu işlem için yapılandırılmış bir zonecrossing
olay varsa çıkış ile cognitiveservices.vision.spatialanalysis-personcrossingpolygon
aynı olur.
Kapsayıcı tarafından oluşturulan çıkışı kullanma
Uzamsal Analiz algılamayı veya olayları uygulamanızla tümleştirmek isteyebilirsiniz. Dikkate alınması gereken birkaç yaklaşım şunlardır:
- Azure IoT Hub uç noktasına bağlanmak ve olayları almak için seçtiğiniz programlama dili için Azure Event Hubs SDK'sını kullanın. Daha fazla bilgi için bkz . Yerleşik uç noktadan cihazdan buluta iletileri okuma.
- Olayları diğer uç noktalara göndermek veya olayları veri depolama alanınıza kaydetmek için Azure IoT Hub'ınızda İleti Yönlendirme'yi ayarlayın. Daha fazla bilgi için bkz . IoT Hub İleti Yönlendirme.
- Gelen olayları gerçek zamanlı olarak işlemek ve görselleştirmeler oluşturmak için bir Azure Stream Analytics işi ayarlayın.
Uzamsal Analiz işlemlerini büyük ölçekte dağıtma (birden çok kamera)
GPU'ların en iyi performansını ve kullanımını elde etmek için graf örneklerini kullanarak uzamsal analiz işlemlerini birden çok kameraya dağıtabilirsiniz. Aşağıda, işlemi 15 kamerada cognitiveservices.vision.spatialanalysis-personcrossingline
çalıştırmak için örnek bir yapılandırma verilmiştir.
"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>"
}
}
}
},
}
}
Adı | Tür | Açıklama |
---|---|---|
batch_size |
int | Kameraların tümü aynı çözünürlüğe sahipse, bu işlemde kullanılacak kamera sayısına ayarlayın batch_size , aksi takdirde 1 olarak ayarlayın batch_size veya varsayılan (1) olarak bırakın; bu, toplu işlemin desteklenmediğini gösterir. |