Vertex AI Vision Hareket Filtresi

1. Hedefler

Genel Bakış

Bu codelab'de, hareket filtreleme özelliğiyle video gönderme işlemini göstermek için uçtan uca Vertex AI Vision uygulaması oluşturmaya odaklanılmıştır. Bu eğiticide, 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 bölgesi

Neler öğreneceksiniz?

  • Akış için videoları besleme
  • Hareket Filtresinin farklı özellikleri ve bunların nasıl kullanılacağı
  • Hareket Filtresinin istatistikleri nerede kontrol edilir?
  • Bu ayarı videonuza göre nasıl değiştirebilirsiniz?

2. Başlamadan Önce

  1. Google Cloud konsolunun proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun. Not: Bu prosedürde oluşturduğunuz kaynakları tutmayı düşünmüyorsanız mevcut bir projeyi seçmek yerine bir proje oluşturun. Bu adımları tamamladıktan sonra projeyi silerek projeyle ilişkili tüm kaynakları kaldırabilirsiniz. Proje seçiciye git
  2. Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir 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

Bir hizmet hesabı oluşturun:

  1. Google Cloud Console'da Hizmet hesabı oluştur sayfasına gidin. Hizmet hesabı oluştur'a 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 şu rolleri verin: Vision AI > Vision AI Düzenleyici, Compute Engine > Compute Örnek Yöneticisi (beta), Depolama > Storage Nesne Görüntüleyici † . Rol seçin listesinden bir rol seçin. Ek roller için Başka bir rol ekle'yi tıklayın ve her bir rolü ekleyin. Not: Rol 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 rollerine izin vermeyin. Bunun yerine, ihtiyaçlarınıza uygun önceden tanımlanmış bir rol veya özel bir rol atayabilirsiniz.
  6. Devam'ı tıklayın.
  7. Hizmet hesabını oluşturmayı tamamlamak için Bitti'yi tıklayın. Tarayıcı pencerenizi kapatmayın. Sonraki adımda bu adı kullanacaksınız.

Bir hizmet hesabı anahtarı oluşturun:

  1. Google Cloud konsolunda, 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.

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

3. Hareket Filtresi

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

Hareket Filtresi Yapılandırması

Özelleştirme için hareket filtresinde 5 yapılandırma vardır.

  1. Hareket hassasiyeti: Hareketin ne kadar hassas tetiklenmesi gerektiğini belirtir.
  2. Minimum etkinlik uzunluğu: Bir hareket etkinliğinin yakalanacağı minimum uzunluk.
  3. Yeniden inceleme aralığı: Hareket etkinliği algılanmadan önce videonun ne kadar süre içinde kaydedilmeye başlaması gerektiği.
  4. Bekleme süresi: Hareket etkinliği sona erdikten sonra, belirtilen süre boyunca bekleme süresi gerçekleşir. Bekleme süresi boyunca hareket etkinlikleri tetiklenmez.
  5. Hareket algılama bölgesi: Kullanıcının, hareket algılamanın çalışması gereken yeri belirtmek için yapılandırdığı bölge. (Sonraki bölümde ayrıntılı olarak açıklanacaktır)

Hareket hassasiyeti

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

Hareket algılama hassasiyeti ne kadar yüksek olursa ses ve küçük hareketlere karşı o kadar hassastır. Bu ayar, hareket eden daha küçük nesnelerin (ör. uzaktan gelen insanlar) ve sabit ışıklandırmanın olduğu ayarlar için önerilir.

Diğer yandan, düşük hassasiyet, ışık parazitine 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 tüm seçenekler arasında en agresif filtreleme olduğundan küçük nesnelerin hareketlerini yok sayabilir.

Minimum etkinlik süresi

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

Karede bir hareket etkinliği segmenti algılandığında 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. 0 saniye ile 3.600 saniye arasında değişir.

Yeniden inceleme aralığı, bir hareket etkinliği algılanmadan önce önbelleğe alınan süredir. Bu özellik, hareket etkinlikleri algılanmadan birkaç saniye önce karede neler olduğunu görmek istediğimizde faydalıdır.

Bekleme süresi

Vaictl komutunda cool_down_period_in_seconds işaretini kullanın.
Tam sayı. Varsayılan 300 saniyedir. 0 saniye ile 3.600 saniye arasında değişir.

Bekleme süresi, bir hareket etkinliği yakalandıktan sonra hareket algılamanın ne kadar süreyle duraklatılacağıdır. Bekleme süresinde, hareketi algılamak için hesaplama yapılmaz.

4. Temel hareket filtresi örneği

Vaictl SDK Kılavuzu

Hareket filtreli 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 komutunu kullanarak ö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 )(kişilerin ve araçların bulunduğu 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 projenizin kimliği.
  • LOCATION_ID: Konum kimliğiniz. Örneğin, us-central1. Daha fazla bilgi için Bulut konumları başlıklı makaleyi inceleyin.
  • LOCAL_FILE: Yerel bir video dosyasının dosya adı. Örneğin, street_vehicles_people.mp4.
  • –loop flag: İsteğe bağlı. 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 ne kadar hassas olacağı.
  • MIN_EVENT_LENGTH: Hareket etkinliklerinin minimum uzunluğu.
  • LOOK_BACK_WINDOW: Bir 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 komutu hazırlama

Hareket filtresini giriş akışıyla kullanmak için iki seçenek vardır. İlk seçenek, hareket etkinliklerini Cloud Console'daki bir akışa göndermek. İ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 akış kaydet

  1. Vertex AI Vision'ın sol panelindeki yayınlar sekmesini tıklayın.
  2. Kaydol'u tıklayın
  3. Akış adına motion-detection-stream yazın
  4. Bölgede us-central1 girin
  5. Kayıt düğmesini tıklayın

Sonuçlar akışa gönderiliyor

Bu komut, video dosyasını 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şına nohup ve sonuna & 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

Valictl besleme işleminin başlatılması ve videonun kontrol panelinde gösterilmesi 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.

Akışlar sekmesine gidin

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

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

Arka plan işi yapmak için başına nohup ve sonuna & 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ını ve nasıl yapılandırılacağını ele alacağız. Bölgenin amacı, ilgilenmediğiniz alanlardan gelen hareketi maskeleyerek hareket algılamayı iyileştirmektir.

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

Alt bölge ek açıklaması

Bölge poligonlarının koordinatlarını girmek için vaictl komutunda zone_annotation işaretini kullanın.
Dizesi. Alt 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 çakışırsa her iki bölgenin kapsadığı alan yine kapsanır.

Alt bölge ek açıklamasına belirli bir giriş söz dizimi uygulanır.

  • Tek bir düğümü göstermek için görüntü koordinasyonunun x ve y eksenlerini : kullanarak bağlayın. Örneğin, sol üst köşedeki (0,0) düğümü 0:0 olarak gösterilir.
  • Tek bir alt bölgedeki tüm düğümleri göstermek için düğümleri bağlamak üzere ; kullanı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 bitişik düğümler olarak girin. Sıralama saat yönünde veya saat yönünün tersine olabilir.

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

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

  • Tek bir karede birden fazla alt bölge göstermek için - kullanarak farklı bölgeleri bağlayın. Örneğin hem (0,0), (100,0), (100,100), (0,100) hem de (120,120), (110,150), (200,160) verilerini girmek istersek 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.

Koordinatları resimden almaya yönelik bazı araçlar, koordinatları almanıza yardımcı olabilir. Örneğin, Wolfram - Resimden Koordinatları Alın konusuna bakın.

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

Bölge içinde 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 yanlış.

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

  • true olarak ayarlanırsa ek açıklamalı alt bölge, negatif bölge görevi görür. Ek açıklamalı alt 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ış değerine ayarlanırsa bölge, hareket algılamanın odaklanacağı pozitif bölge görevi görü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ğiyle hareket filtresi

Bu örnekte, örnek olarak ön planında sürekli hareket eden bir ağacın bulunduğu bir videodan yararlanacağız. Normal hareket filtresi ayarında, hareket filtresi hareketli ağacı "tüm video boyunca sürekli hareket ediyor" şeklinde kaydettiğinden, normal hareket filtresi ayarında video yalnızca orijinal videonun süresi boyunca tek bir hareket etkinliği oluşturur. Bununla birlikte, hareket algılama bölgesinin yardımıyla, ağaçtaki hareketi düzgün bir şekilde maskeleyerek arabalardan ve yayalardan gelen harekete odaklanabiliyoruz.

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 Detection karşılaştırma kümesi, Proc. IEEE Değişim Algılama Atölyesi (CDW-2012), CVPR-2012, Offernce, RI, 16-21 Haziran, 2012

Ortam değişkeni hazırlığı

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ölgesinin farklı kullanım türlerini görmek için aşağıdan seçim yapın.

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: Örnek videoda ek açıklamalı bölgeden hareket algılamayı hariç tutma *Hareket algılamayı yalnızca giriş bölgelerinin dışında çalıştırın.

Sokaktaki hareket algılamaya odaklanın.

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

Hareket algılama bölgesi: Örnek videoda açıklama eklenen bölgeden hareket algılamayı çalıştırma *Hareket algılamayı yalnızca giriş bölgelerinin dışında çalıştırın.

Hareket filtresiyle video akışı gönder

Hareket etkinliklerini 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 akış kaydet

  1. Vertex AI Vision'ın sol panelindeki yayınlar sekmesini tıklayın.
  2. Kaydol'u tıklayın
  3. Akış adına motion-detection-stream yazın
  4. Bölgede us-central1 girin
  5. Kayıt düğmesini tıklayın

Sonuçlar akışa gönderiliyor

Bu komut, video dosyasını 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şına nohup ve sonuna & 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

Valictl besleme işleminin başlatılması ve videonun kontrol panelinde gösterilmesi 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.

Akışlar sekmesine gidin

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

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

Arka plan işi yapmak için başına nohup ve sonuna & 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ğitimde kullanılan kaynaklar için Google Cloud hesabınızdan ücret alınmasını önlemek amacıyla vaictl SDK işlemini ctrl + z ile komut satırı üzerinden 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 bildirim göndermek için burayı tıklayın

Anket

Bu eğiticiden nasıl yararlanacaksınız?

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

Bu codelab'i ne kadar faydalı buldunuz?

Çok faydalı Yararlı