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_CONFIGgibi 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_CONFIGolduğ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": 1920olması 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 trueayarlarsanız kapsayıcının HostConfig createOptionsbö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_calibrationcognitiveservices.vision.spatialanalysis-persondistance öğesinin düzgün çalışması için doğru olmalıdır. do_calibration varsayılan olarak olarak Trueayarlanı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 trueayarlarsanız kapsayıcının HostConfig createOptionsbö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 Trueayarlanı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=Truekullanı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=Truekullanı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=Truekullanı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=Truekullanı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 görselleştirmesi

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 Trueayarlanı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_pixelstanı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 intervalde 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 zonedwelltimeolmalı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 intervalde 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 averageiç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 CalibratedolabilirCalibrating. İ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_sideolduğu süreyi temsil eden milisaniye sayısı. Bu alan, içinde CAMERACALIBRATOR_NODE_CONFIG olduğunda enable_orientation True ve değeri target_sideSPACEANALYTICS_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.

Örnek orta zemin noktası

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 CalibratedolabilirCalibrating. İ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-personcrossingpolygonaynı 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.

Sonraki adımlar