Vertex AI Vision Hareket Filtresi

1. Hedefler

Genel Bakış

Bu codelab'de, hareket filtreleme özelliğiyle video göndermeyi göstermek için uçtan uca bir Vertex AI Vision uygulaması oluşturmaya odaklanılmaktadır. Bu eğitimde, hareket filtresi yapılandırmasındaki farklı parametreleri inceleyeceğiz:

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

Neler öğreneceksiniz?

  • Yayın için videoları nasıl içe aktarırım?
  • Hareket filtresinde bulunan farklı özellikler ve bunların nasıl kullanılacağı
  • Hareket Filtresi'nin istatistiklerini nerede kontrol edebilirsiniz?
  • Ayarı videonuza göre ayarlama

2. Başlamadan Önce

  1. Google Cloud Console'da, proje seçici sayfasında bir Google Cloud projesi oluşturun veya mevcut bir projeyi seçin. 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 projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğ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, bu ada göre Hizmet hesabı kimliği alanını 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 şu rolleri verin: Vision AI > Vision AI Düzenleyici, Compute Engine > Compute Instance Admin (beta), Storage > Storage Object Viewer † . Rol seçimi listesinde bir rol seçin. Ek roller için Başka rol ekle'yi tıklayın ve her ek rolü ekleyin. Not: Rol alanı, hizmet hesabınızın projenizde hangi kaynaklara erişebileceğini etkiler. Bu rolleri daha sonra iptal edebilir veya ek roller verebilirsiniz. Üretim ortamlarında Sahip, Düzenleyici veya Görüntüleyici rollerini vermeyin. Bunun yerine, ihtiyaçlarınızı karşılayan 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 gereklidir.

Hizmet hesabı anahtarı oluşturma:

  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 ve 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 CLI'yı yükleyin ve ilk kullanıma hazırlayın.

† Yalnızca bir Cloud Storage paketinden örnek video dosyası kopyalıyorsanız rol gerekir.

3. Hareket Filtresi

Hareket filtresi, hareket etkinlikleri içeren hareket ve ürün video 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 seçeneği vardır.

  1. Hareket hassasiyeti: Hareketin ne kadar hassas bir şekilde tetiklenmesi gerektiği.
  2. Minimum etkinlik uzunluğu: Hareket etkinliğinin kaydedileceği minimum uzunluk.
  3. Yeniden inceleme aralığı: Hareket etkinliği algılanmadan önce video kaydının ne kadar süreyle başlaması gerektiği.
  4. Bekleme süresi: Bir hareket etkinliği sona erdikten sonra belirtilen süre boyunca bekleme süresi uygulanır. Soğuma 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ılan bölge. (İlerleyen bölümlerde ayrıntılı olarak açıklanacaktır)

Hareket hassasiyeti

vaictl komutunda motion_detection_sensitivity işaretini kullanın.
Dize. Varsayılan ortam. Düşük, orta veya yüksek seçeneklerinden birini belirleyebilir.

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

Öte yandan, düşük hassasiyet, ışık parazitine karşı daha az hassastır. Bu ayar, dış ortam gibi daha fazla ışık parazitinin olduğu ve daha fazla gürültü olabileceği için video kalitesinin daha düşük olduğu durumlarda idealdir. Bu ayar, tüm filtrelemeler arasında en agresif olanı olduğundan küçük nesnelerin hareketlerini göz ardı edebilir.

Minimum etkinlik süresi

vaictl komutunda min_event_length_in_seconds işaretini kullanın.
Tam sayı. Varsayılan değer 10 saniyedir. 0 saniye ile 3.600 saniye arasında değişir.

Karede bir hareketli etkinlik segmenti algılandığında ayrıştırılacak hareketli etkinlik videolarının minimum süresi.

Yeniden inceleme aralığı

vaictl komutunda look_back_window_in_seconds işaretini kullanın.
Tam sayı. Varsayılan değer 3 saniyedir. 0 saniye ile 3.600 saniye arasında değişir.

Yeniden inceleme aralığı, 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 saniye ile 3.600 saniye arasında değişir.

Soğuma süresi, hareket etkinliği yakalandıktan sonra hareket algılamanın ne kadar süreyle duraklatılacağını ifade eder. Bekleme süresi boyunca hareket algılamak için herhangi bir hesaplama yapılmaz.

4. Temel hareket filtresi örneği

Vaictl SDK Manual

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 dosyası kaynağınızı (örneğin, 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, kaynak) 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: Yer kodunuz. Örneğin, us-central1. Daha fazla bilgi için Bulut konumları konusuna bakın.
  • LOCAL_FILE: Yerel bir video dosyasının dosya adı. Örneğin, street_vehicles_people.mp4.
  • –loop işareti: İsteğe bağlıdır. Akışı 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 hassasiyeti.
  • MIN_EVENT_LENGTH: Hareket etkinliklerinin minimum uzunluğu.
  • LOOK_BACK_WINDOW: Bir hareket etkinliğindeki ilk hareketten önce yakalanacak süre.
  • COOL_DOWN_PERIOD: Hareket etkinliği yakalandıktan sonra hareket algılamanın duraklatılacağı süre.
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 ise 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'yi kullanabilirsiniz. Cloud Console'da Vision AI API'yi etkinleştirerek başlayın.

Yeni bir yayın kaydetme

  1. Vertex AI Vision'ın sol panelinde akışlar sekmesini tıklayın.
  2. Kaydol'u tıklayın.
  3. Akış adı bölümüne motion-detection-stream girin.
  4. Bölgeye us-central1 girin.
  5. Kaydol'u tıklayın.

Sonuçları yayına gönderme

Bu komut, bir video dosyasını akışa aktarır. –loop işaretini kullanırsanız komutu durdurana kadar video akışta döngüye alınır. Bu komutu, yayın akışının devam etmesi için arka plan işi olarak çalıştıracağız.

Arka plan görevi yapmak için başlangıca nohup, 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 ingest işleminin başlatılması ile videonun kontrol panelinde görünmesi arasında yaklaşık 100 saniye geçebilir.

Akış alımı kullanıma sunulduktan sonra, trafik akışı akışını seçerek Vertex AI Vision kontrol panelinin Akışlar sekmesinde video feed'ini görebilirsiniz.

Yayınlar sekmesine gidin

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

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

Arka plan görevi yapmak için başlangıca nohup, sona & 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 alanı

Bu bölümde, hareket algılama bölgesinin kullanımını ve nasıl yapılandırılacağını ayrıntılı olarak ele alacağız. Bu bölge, ilgilenmediğiniz alanlardan gelen hareketi maskeleyerek hareket algılamayı iyileştirmek için tasarlanmıştır.

Hareket algılama bölgesinin iki türü vardır: (1) Hareket algılamanın yalnızca açıklama eklenen alanda çalıştığı pozitif bölgeler; (2) Hareket algılamanın açıklama eklenen alandaki hareketleri yok saydığı negatif bölgeler.

Bölge açıklaması

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

Bölge açıklaması, kullanıcının karede gizlemek veya odaklanmak istediği bölgeleri belirten bir dize girişi olacaktır. Kullanıcının bölgeye not eklemesi için bölgedeki her düğümün x ve y eksenlerinin resim koordinatlarını belirtmesi gerekir. Bir bölgenin poligon oluşturması için üç veya daha fazla düğüm içermesi gerekir. Bir karede birden fazla bölge olabilir. Bölgeler birbiriyle çakışıyorsa her iki bölgenin kapsadığı alan yine kapsanır.

Bölge açıklamasının belirli bir giriş söz dizimi vardır.

  • Tek bir düğümü belirtmek için : kullanarak bir resim koordinasyonunun x ve y eksenini 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 bağlamak üzere ; simgesini kullanın. Örneğin, (0,0), (100,0), (100,100) ve (0, 100) düğümlerinin bulunduğu bir bölge 0:0;100:0;100:100;0:100 olarak gösterilir. Düğümleri her zaman birbirine bağlanan düğümler olarak girin. Sıra saat yönünde veya saat yönünün tersine olabilir.

Hareket algılama alanı - kare*Dört düğümlü kare bölge.

Hareket algılama alanı - üçgen*Üç düğümlü bir üçgen bölge.

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

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

Resimden koordinat almak için online olarak kullanabileceğiniz bazı araçlar vardır. Örneğin, Wolfram - Get Coordinates from Image (Wolfram - Resimden Koordinat Alma) başlıklı makaleyi inceleyin.

Açıklama eklenmiş bölgeyi hariç tutma

Bölgede veya bölge dışında hareketi algılamayı yapılandırmak için vaictl komutunda exclude_annotated_zone işaretini kullanın.
Boole. Varsayılan değer false'tur.

Hariç tutulan bölge, kullanıcının hareket algılamada açıklama eklenen bölgeyi hariç tutmak isteyip istemediğini belirten bir Boole girişidir.

  • true olarak ayarlanırsa açıklama eklenen bölge, negatif bölge olarak işlev görür. Açıklama eklenen bölgelerdeki hareketler algılanmaz.

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

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

Hareket algılama alanı - dahil etme seçeneği *Yalnızca giriş bölgelerinde hareket algılama ç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 videoyu kullanacağız. Normal hareket filtresi ayarında, hareket filtresi hareket eden ağacı "video boyunca sürekli hareket ediyor" olarak kaydettiği için videoda yalnızca orijinal videonun süresine sahip bir hareket etkinliği üretilir. Ancak hareket algılama bölgesi sayesinde ağaçtan gelen hareketi düzgün bir şekilde maskeleyip arabalardan ve yayalardan gelen harekete odaklanabiliriz.

Video hazırlama

Örnek videoda (gs://cloud-samples-data/vertex-ai-vision/dynamic-background-fall.mp4) www.changedetection.net adresinden alınmış ağaç, araba ve yaya görüntüleri yer alıyor.

Video kredisi: N. Goyette, P.-M. Jodoin, F. Porikli, J. Konrad ve P. Ishwar, changedetection.net: A new change detection benchmark dataset, in Proc. IEEE Workshop on Change Detection (CDW-2012) at CVPR-2012, Providence, RI, 16-21 Jun., 2012

Ortam değişkeni hazırlama

Google Cloud proje 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ölgesi için farklı kullanım türlerini görmek üzere 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 açıklama eklenmiş bölgenin dışında tutun. *Yalnızca giriş bölgelerinin dışında hareket algılama çalıştırın.

Hareket algılamayı sokağa odaklayın.

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

Hareket algılama bölgesi: Örnek videodaki açıklama eklenmiş bölgede hareket algılama işlemini çalıştırın. *Yalnızca giriş bölgelerinin dışında hareket algılama çalıştırın.

Hareket filtresiyle video akışı gönderme

Hareket etkinliklerini Cloud Console'a gönderme

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

Yeni bir yayın kaydetme

  1. Vertex AI Vision'ın sol panelinde akışlar sekmesini tıklayın.
  2. Kaydol'u tıklayın.
  3. Akış adı bölümüne motion-detection-stream girin.
  4. Bölgeye us-central1 girin.
  5. Kaydol'u tıklayın.

Sonuçları yayına gönderme

Bu komut, bir video dosyasını akışa aktarır. –loop işaretini kullanırsanız komutu durdurana kadar video akışta döngüye alınır. Bu komutu, yayın akışının devam etmesi için arka plan işi olarak çalıştıracağız.

Arka plan görevi yapmak için başlangıca nohup, 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 ingest işleminin başlatılması ile videonun kontrol panelinde görünmesi arasında yaklaşık 100 saniye geçebilir.

Akış alımı kullanıma sunulduktan sonra, trafik akışı akışını seçerek Vertex AI Vision kontrol panelinin Akışlar sekmesinde video feed'ini görebilirsiniz.

Yayınlar sekmesine gidin

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

Bu komut, bir video dosyasını akışa aktarır. –loop işaretini kullanırsanız komutu durdurana kadar video akışta döngüye alınır. Bu komutu, yayın akışının devam etmesi için arka plan işi olarak çalıştıracağız.

Arka plan görevi yapmak için başlangıca nohup, 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 tuşlarına basarak 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?

Yalnızca okuyun Okuyun ve alıştırmaları tamamlayın

Bu codelab ne kadar faydalı oldu?

Çok faydalı Kısmen faydalı