Vertex AI Vision Hareket Filtresi

1. Hedefler

Genel Bakış

Bu codelab'de, hareket filtreleme özelliğiyle video gönderme özelliğini göstermek için uçtan uca bir Vertex AI Vision uygulaması oluşturma üzerinde duruluyor. Bu eğitimde, hareket filtresi yapılandırmasında bulunan farklı parametreleri inceleyeceğiz:

  • Hareket algılama hassasiyeti
  • Minimum etkinlik süresi
  • Yeniden inceleme aralığı
  • Bekleme süresi
  • Hareket algılama bölgesi

Neler öğreneceksiniz?

  • Akış için videoları besleme
  • Hareket Filtresinin farklı özellikleri ve bunların nasıl kullanılacağı
  • Hareket filtresinin istatistiklerini nereden kontrol edebilirim?
  • Ayarı videonuza göre ayarlama

2. Başlamadan Önce

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun. Not: Bu prosedürde oluşturduğunuz kaynakları saklamayı düşünmüyorsanız mevcut projeyi seçmek yerine yeni bir proje oluşturun. Bu adımları tamamladıktan sonra projeyi silerek projeyle ilişkili tüm kaynakları kaldırabilirsiniz. Proje seçiciye gitme
  2. Cloud projenizde faturalandırmanın etkinleştirildiğinden emin olun. Projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğrenin.
  3. Compute Engine ve Vision AI API'lerini etkinleştirin. API'leri etkinleştirme

Hizmet hesabı oluşturun:

  1. Google Cloud Console'da Hizmet hesabı oluştur sayfasına gidin. Hizmet hesabı oluşturma sayfasına gidin.
  2. Projenizi seçin.
  3. Hizmet hesabı adı alanına bir ad girin. Google Cloud Console, Hizmet hesabı kimliği alanını bu ada göre doldurur. Hizmet hesabı açıklaması alanına bir açıklama girin. Örneğin, Hızlı başlangıç için hizmet hesabı.
  4. Oluştur ve devam et'i tıklayın.
  5. Projenize erişim sağlamak için hizmet hesabınıza aşağıdaki rolleri verin: Vision AI > Vision AI Düzenleyicisi, Compute Engine > Compute Instance Yöneticisi (beta), Depolama > Depolama Nesnesi Görüntüleyicisi † . Rol seçin listesinde bir rol seçin. Ek roller için Başka bir rol ekle'yi tıklayın ve her bir rolü ekleyin. Not: Roll (Roll) alanı, hizmet hesabınızın projenizde hangi kaynaklara erişebileceğini etkiler. Daha sonra bu rolleri iptal edebilir veya başka roller verebilirsiniz. Üretim ortamlarında Sahip, Düzenleyici veya Görüntüleyici rollerini vermeyin. Bunun yerine, ihtiyaçlarınıza uygun bir önceden tanımlanmış rol veya özel rol verin.
  6. Devam'ı tıklayın.
  7. Hizmet hesabını oluşturmayı tamamlamak için Bitti'yi tıklayın. Tarayıcı pencerenizi kapatmayın. Bu adı sonraki adımda kullanacaksınız.

Bir hizmet hesabı anahtarı oluşturun:

  1. Google Cloud Console'da, oluşturduğunuz hizmet hesabının e-posta adresini tıklayın.
  2. Anahtarlar'ı tıklayın.
  3. Anahtar ekle'yi, ardından Yeni anahtar oluştur'u tıklayın.
  4. Oluştur'u tıklayın. Bilgisayarınıza bir JSON anahtar dosyası indirilir.
  5. Kapat'ı tıklayın.
  6. Google Cloud KSA'yı yükleyin ve başlatın.

† Bu rol yalnızca bir Cloud Storage paketinden örnek video dosyası kopyalarsanız gereklidir.

3. Hareket Filtresi

Hareket filtresi, hareket ve hareket etkinlikleri içeren ürün videosu segmentlerini yakalar. Kullanıcı, hareket hassasiyetini, minimum etkinlik uzunluğunu, yeniden inceleme aralığını, bekleme süresini ve hareket algılama bölgesini ayarlayarak filtreyi kendi ihtiyaçlarına göre yapılandırabilir.

Hareket Filtresi Yapılandırması

Hareket filtresinde özelleştirme için 5 yapılandırma mevcuttur.

  1. Hareket hassasiyeti: Hareketin ne kadar hassas olması gerektiği.
  2. Minimum etkinlik uzunluğu: Hareket etkinliğinin yakalanacağı minimum uzunluk.
  3. Yeniden inceleme aralığı: Hareket etkinliği algılanmadan önce videonun kaydetmeye başlaması için gereken süre.
  4. Bekleme süresi: Bir hareket etkinliği sona erdikten sonra, belirtilen süre boyunca bekleme süresi uygulanır. Bekleme süresi boyunca hareket etkinlikleri tetiklenmez.
  5. Hareket algılama bölgesi: Hareket algılamanın nerede çalışacağını belirtmek için kullanıcı tarafından yapılandırılmış bölge. (Sonraki bölümde ayrıntılı olarak açıklanacaktır)

Hareket hassasiyeti

vaictl komutunda motion_detection_sensitivity işaretini kullanın.
Dize. Varsayılan medya. Düşük, orta veya yüksek arasından seçim yapabilirsiniz.

Hareket algılama hassasiyeti ne kadar yüksek olursa gürültüye ve küçük hareketlere o kadar duyarlı olur. Bu ayar, daha küçük hareketli nesnelerin (ör. uzaktaki kişiler) ve sabit aydınlatmanın olduğu ortamlar için önerilir.

Öte yandan düşük hassasiyet, ışık girişimine karşı daha az hassastır. Bu ayar, dış mekan gibi ortamlarda ışıklandırma parazitlerinin fazla olduğu durumlarda ve gürültünün daha fazla olduğu durumlarda düşük video kalitesi için idealdir. Bu ayar, en agresif filtreleme olduğundan küçük nesnelerin hareketlerini yoksayabilir.

Minimum etkinlik süresi

vaictl komutunda min_event_length_in_seconds işaretini kullanın.
Tam sayı. Varsayılan değer 10 saniyedir. 0 ila 3.600 saniye arasındadır.

Karede bir hareket etkinliği segmenti algılandıktan sonra ayrıştırılacak hareket etkinliği videolarının minimum süresi.

Yeniden inceleme aralığı

vaictl komutunda look_back_window_in_seconds işaretini kullanın.
Tam sayı. Varsayılan süre 3 saniyedir. Aralık 0 ila 3.600 saniyedir.

Yeniden inceleme aralığı, bir hareket etkinliği algılanmadan önce önbelleğe alınan süredir. Hareket etkinlikleri algılanmadan birkaç saniye önce karede neler olduğunu görmek istediğimizde bu özellikten yararlanabiliriz.

Bekleme süresi

Vaictl komutunda cool_down_period_in_seconds işaretini kullanın.
Tam sayı. Varsayılan değer 300 saniyedir. 0 ila 3.600 saniye arasındadır.

Bekleme süresi, bir hareket etkinliği yakalandıktan sonra hareket algılamanın duraklatılacağı süredir. Bekleme süresi boyunca hareket algılamak için herhangi bir hesaplama yapılmaz.

4. Temel hareket filtresi örneği

Vaictl SDK Kılavuzu

Hareket filtresi içeren giriş akışı için vaictl kılavuzunu kontrol etmek üzere aşağıdaki komutu kullanın.

vaictl send video-file applying motion-filter -h

Örnek video hazırlama

  1. Aşağıdaki gsutil cp komutuyla örnek bir videoyu kopyalayabilirsiniz. Aşağıdaki değişkeni değiştirin:
  • KAYNAK: Kullanılacak video dosyasının konumu. Kendi video dosyanızı (ör. gs://BUCKET_NAME/FILENAME.mp4) veya örnek videoyu (gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4)(insanlar ve araçlar içeren video, source) kullanabilirsiniz.
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4
gsutil cp $SOURCE .

Ortam değişkenlerini hazırlama

Sağlanan komut şablonunu kullanmak için aşağıdaki ortam değişkenlerini ayarlayın.

vaictl değişkenleri

  • PROJECT_ID: Google Cloud proje kimliğiniz.
  • LOCATION_ID: Konum kimliğiniz. Örneğin, us-central1. Daha fazla bilgi için Cloud konumları konusuna bakın.
  • LOCAL_FILE: Yerel bir video dosyasının adı. Örneğin, street_vehicles_people.mp4.
  • –loop işareti: İsteğe bağlı. Akışla aktarmayı simüle etmek için dosya verilerini döngüye alır.
export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1

Hareket filtresi değişkenleri

  • MOTION_SENSITIVITY: Hareket algılamanın ne kadar hassas olacağı.
  • MIN_EVENT_LENGTH: Hareket etkinliklerinin minimum uzunluğu.
  • LOOK_BACK_WINDOW: Hareket etkinliğindeki ilk hareketten önce yakalanacak süre.
  • COOL_DOWN_PERIOD: Bir hareket etkinliği yakalandıktan sonra hareket algılamanın duraklatılacağı dönem.
export MOTION_SENSITIVITY=<low or medium or high>
export MIN_EVENT_LENGTH=<0-3600>
export LOOK_BACK_WINDOW=<0-3600>
export COOL_DOWN_PERIOD=<0-3600>

Hareket filtresi komutunu hazırlama

Hareket filtresini giriş akışıyla kullanmanın iki yolu vardır. İlk seçenek, hareket etkinliklerini bulut konsolundaki bir akışa göndermektir. İkinci seçenek, hareket etkinliklerini yerel depolama alanına göndermektir.

Sonuçları Cloud Console'a gönderme

Çıkış video verilerini Cloud Console'a aktarmak için vaictl'i kullanabilirsiniz. Cloud Console'da Vision AI API'yi etkinleştirerek başlayın.

Yeni bir yayın kaydetme

  1. Vertex AI Vision'ın sol panelindeki yayınlar sekmesini tıklayın.
  2. Kaydol'u tıklayın
  3. Akış adı alanına motion-detection-stream
  4. Bölge alanına us-central1 yazın
  5. Kaydol'u tıklayın.

Sonuçlar akışa gönderiliyor

Bu komut, bir video dosyasını bir akışa aktarır. –loop işaretini kullanırsanız video, siz komutu durdurana kadar akışa tekrar dahil edilir. Aktarımın devam etmesi için bu komutu arka planda bir iş olarak çalıştıracağız.

Arka plan işi yapmak için başlangıca nohup ve sona & ekleyin.

INPUT_VIDEO=street_vehicles_people.mp4

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
  to streams motion-detection-stream --loop

Vaictl besleme işleminin başlatılması ile videonun kontrol panelinde görünmesi yaklaşık 100 saniye sürebilir.

Yayın besleme kullanılabilir hale geldikten sonra Vertex AI Vision kontrol panelinin Akışlar sekmesinde trafik akışı akışını seçerek video feed'ini görebilirsiniz.

Yayınlar sekmesine gidin

Sonuçları yerel depolama alanına gönderme

Bu komut, bir video dosyasını bir akışa aktarır.

Arka plan işi yapmak için başlangıçta nohup ve sonunda & ekleyin.

INPUT_VIDEO=street_vehicles_people.mp4
OUTPUT_PATH=<path_to_store_motion_events_on_local_disk>

nohup vaictl -p $PROJECT \
             -l $LOCATION_ID \
             -c application-cluster-0 \
             --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
  to mp4file --mp4-file-path=$OUTPUT_PATH --loop

5. Hareket algılama bölgesi

Bu bölümde, hareket algılama bölgesinin kullanımı ve nasıl yapılandırılacağı hakkında ayrıntılı bilgi vereceğiz. Bu bölge, ilgilenmediğiniz alanlardan gelen hareketleri maskeleyerek hareket algılamayı iyileştirmeyi amaçlar.

Hareket algılama bölgesi iki türdedir: (1) Hareket algılamanın yalnızca not eklenmiş alanda çalıştığı pozitif bölgeler; (2) Hareket algılamanın not eklenmiş alandaki tüm hareketleri yok saydığı negatif bölgeler.

Bölge notu

Bölge poligonlarının koordinatlarını girmek için vaictl komutunda zone_annotation işaretini kullanın.
Dizesi. Bölge ek açıklaması için varsayılan olarak boştur.

Alt bölge açıklaması, kullanıcının çerçevede gizlemek veya odaklanmak istediği bölgeleri belirten bir dize girişi olur. Alt bölgeye açıklama eklemek için kullanıcının bölgedeki her düğüm için x ve y ekseninin resim koordinatlarını belirtmesi gerekir. Bir alt bölgenin, bir poligon oluşturması için üç veya daha fazla düğüme sahip olması gerekir. Bir çerçevede birden fazla bölge olabilir. Bölgeler birbiriyle örtüşüyorsa her iki bölgenin de kapsadığı alan yine de kapsama alanında kalır.

Bölge ek açıklamalarında uyulması gereken belirli bir giriş söz dizimi vardır.

  • Tek bir düğümü belirtmek için : simgesini kullanarak resim koordinatının x ve y eksenlerini birbirine bağlayın. Örneğin, sol üst köşedeki (0,0) düğümü 0:0 olarak gösterilir.
  • Tek bir bölgedeki tüm düğümleri belirtmek için düğümleri ; ile bağlayın. Örneğin, (0,0), (100,0), (100,100) ve (0, 100) düğümleri olan bir alt bölge için 0:0;100:0;100:100;0:100 gösterilir. Düğümleri her zaman birbirine bağlı düğümler olarak yan yana girin. Sıralama hem saat yönünde hem de saat yönünün tersine olabilir.

Hareket algılama bölgesi - kare*Dört düğüme sahip kare bir bölge.

Hareket algılama bölgesi - üçgen*Üç düğüme sahip üçgen bölge.

  • Tek bir karede birden fazla bölgeyi belirtmek için farklı bölgeleri birbirine bağlamak üzere - simgesini kullanın. Örneğin, hem (0,0), (100,0), (100,100), (0,100) hem de (120,120), (110,150), (200,160) değerlerini girmek isterseniz giriş bölgesi ek açıklaması 0:0;100:0;100:100;0:100-120:120;110:150;200:160 olur.

Hareket algılama bölgesi - iki bölgeli bir kare*Bir çerçeve içinde iki bölge.

Resimdeki koordinatları bulmak için internette bu konuda yardımcı olabilecek bazı araçlar mevcuttur. Örneğin, Wolfram - Get Coordinates from Image (Wolfram - Resimden Koordinat Alma) başlıklı makaleyi inceleyin.

Ek açıklamalı alt bölgeyi hariç tut

Bölgede veya bölgenin dışında hareket algılamayı yapılandırmak için vaictl komutunda exclude_annotated_zone işaretini kullanın.
Boole. Varsayılan değer yanlıştır.

Ek açıklamalı alt bölgeyi hariç tut, kullanıcının hareket algılama sırasında açıklama eklenen bölgeyi hariç tutmak isteyip istemediğini belirten bir boole girişidir.

  • true olarak ayarlanırsa ek açıklamalı bölge negatif bölge olarak işlenir. Notlandırılmış bölgelerdeki hareketler algılanmaz.

Hareket algılama bölgesi - hariç tutma seçeneği *Hareket algılamayı yalnızca giriş bölgelerinin dışında çalıştırın.

  • Yanlış olarak ayarlanırsa bölge, hareket algılamanın odaklanacağı pozitif bir bölge olarak davranır.

Hareket algılama bölgesi - dahil etme seçeneği *Hareket algılamayı yalnızca giriş bölgelerinde çalıştırın.

6. Hareket algılama bölgesi örneği içeren hareket filtresi

Bu örnekte, ön planda sürekli hareket eden bir ağacın bulunduğu bir videoyu kullanacağız. Normal hareket filtresi ayarlarında, hareket filtresi hareket eden ağacı "tüm video boyunca sürekli hareket ediyor" olarak kaydettiği için videoda yalnızca orijinal videonun süresine sahip bir hareket etkinliği oluşturulur. Ancak hareket algılama bölgesinin yardımıyla ağaçtan gelen hareketi uygun şekilde maskeleyebilir ve arabalar ile yayalar tarafından oluşturulan harekete odaklanabiliriz.

Video hazırlama

Örnek video (gs://cloud-samples-data/vertex-ai-vision/dynamic-background-fall.mp4 ), www.changedetection.net adresinden gelen ağaçlar, arabalar ve yayaları içeriyor.

Video kredisi: N. Goyette, P.-M. Jodoin, F. Porikli, J. Konrad ve P. Ishwar, changedetection.net: A new change senseion karşılaştırmalı veri kümesi, Proc. IEEE Workshop on Change Detection (CDW-2012), CVPR-2012, Offernce, RI, 16-21 Haziran, 2012

Ortam değişkeni hazırlama

Google Cloud projesi değişkenleri.

export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1
export LOCAL_FILE=street_vehicles_people.mp4

Temel hareket filtresi yapılandırması.

export MOTION_SENSITIVITY=<low or medium or high>
export MIN_EVENT_LENGTH=<0-3600>
export LOOK_BACK_WINDOW=<0-3600>
export COOL_DOWN_PERIOD=<0-3600>

Hareket algılama bölgesi yapılandırması.

Hareket algılama bölgesinin farklı kullanım türlerini görmek için aşağıdakilerden birini seçin.

Hareket algılama için ağacı hariç tutun.

export ZONE_ANNOTATION="0:0;680:0;660:70;380:320;100:150"
export EXCLUDE_ANNOTATED_ZONE=true

Hareket algılama bölgesi - Hareket algılamayı örnek videodaki ek açıklamalı bölgeden hariç tutma *Hareket algılamayı yalnızca giriş bölgelerinin dışında çalıştırın.

Hareket algılamayı yola odaklayın.

export ZONE_ANNOTATION="0:300;780:300;780:480;0:480"
export EXCLUDE_ANNOTATED_ZONE=false

Hareket algılama bölgesi - örnek videoda ek açıklamalı bölgeden hareket algılama işlemini çalıştırma *Hareket algılamayı yalnızca giriş bölgelerinin dışında çalıştırın.

Hareket filtresiyle video akışı gönderme

Hareket etkinliklerini Cloud Console'a gönderme

Çıkıştaki video verilerini Cloud Console'a aktarmak için vaictl'i kullanabilirsiniz. Cloud Console'da Vision AI API'yi etkinleştirerek başlayın.

Yeni bir yayın kaydetme

  1. Vertex AI Vision'un sol panelindeki akışlar sekmesini tıklayın.
  2. Kaydol'u tıklayın.
  3. Akış adı alanına motion-detection-stream
  4. Bölge alanına us-central1 yazın
  5. Kaydol'u tıklayın.

Sonuçlar akışa gönderiliyor

Bu komut, bir video dosyasını bir akışa aktarır. –loop işaretini kullanırsanız video, siz komutu durdurana kadar akışa tekrar dahil edilir. Aktarımın devam etmesi için bu komutu arka planda bir iş olarak çalıştıracağız.

Arka plan işi yapmak için başlangıca nohup ve sona & ekleyin.

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
         --zone_annotation=ZONE_ANNOTATION \
         --exclude_annotated_zone=$EXCLUDE_ANNOTATED_ZONE \
  to streams motion-detection-stream --loop

Vaictl besleme işleminin başlatılması ile videonun kontrol panelinde görünmesi yaklaşık 100 saniye sürebilir.

Akış beslemesi kullanılabilir hale geldikten sonra, Vertex AI Vision kontrol panelinin Akışlar sekmesinde traffic-stream akışını seçerek video feed'ini görebilirsiniz.

Yayınlar sekmesine gidin

Sonuçları yerel depolama alanına gönderme

Bu komut, bir video dosyasını bir akışa aktarır. –loop işaretini kullanırsanız video, siz komutu durdurana kadar akışa tekrar dahil edilir. Bu komutu akışın devam etmesi için arka plan işi olarak çalıştıracağız.

Arka plan işi yapmak için başlangıca nohup ve sona & ekleyin.

OUTPUT_PATH=<path_to_store_motion_events>

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
         --zone_annotation=$ZONE_ANNOTATION \
         --exclude_annotated_zone=$EXCLUDE_ANNOTATED_ZONE \
  to mp4file --mp4-file-path=$OUTPUT_PATH --loop

7. Tebrikler

Tebrikler, laboratuvarı tamamladınız.

Temizleme

Bu eğiticide kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız ctrl + z ile komut satırından vaictl SDK işlemini sonlandırın.

Kaynaklar

https://cloud.google.com/vision-ai/docs/overview

https://cloud.google.com/vision-ai/docs/motion-filtering-model

https://cloud.google.com/vision-ai/docs/create-manage-streams

Geri bildirim

Geri bildirimde bulunmak için burayı tıklayın

Anket

Bu eğitimi nasıl kullanacaksınız?

Sadece okumayı Okuyun ve alıştırmaları tamamlayın

Bu kod laboratuvarı ne kadar yararlı oldu?

Çok faydalı Kısmen faydalı