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
- 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
- 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.
- Compute Engine ve Vision AI API'lerini etkinleştirin. API'leri etkinleştirme
Bir hizmet hesabı oluşturun:
- Google Cloud Console'da Hizmet hesabı oluştur sayfasına gidin. Hizmet hesabı oluştur'a gidin
- Projenizi seçin.
- 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ı.
- Oluştur ve devam et'i tıklayın.
- 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.
- Devam'ı tıklayın.
- 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:
- Google Cloud konsolunda, oluşturduğunuz hizmet hesabının e-posta adresini tıklayın.
- Anahtarlar'ı tıklayın.
- Anahtar ekle'yi, ardından Yeni anahtar oluştur'u tıklayın.
- Oluştur'u tıklayın. Bilgisayarınıza bir JSON anahtar dosyası indirilir.
- Kapat'ı tıklayın.
- 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.
- Hareket hassasiyeti: Hareketin ne kadar hassas tetiklenmesi gerektiğini belirtir.
- Minimum etkinlik uzunluğu: Bir hareket etkinliğinin yakalanacağı minimum uzunluk.
- Yeniden inceleme aralığı: Hareket etkinliği algılanmadan önce videonun ne kadar süre içinde kaydedilmeye başlaması gerektiği.
- 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.
- 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
- 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
- Vertex AI Vision'ın sol panelindeki yayınlar sekmesini tıklayın.
- Kaydol'u tıklayın
- Akış adına
motion-detection-stream
yazın - Bölgede
us-central1
girin - 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.
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çin0: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.
*Dört düğümlü kare alt bölge.
*Üç 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.
*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ı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ı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ı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ı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
- Vertex AI Vision'ın sol panelindeki yayınlar sekmesini tıklayın.
- Kaydol'u tıklayın
- Akış adına
motion-detection-stream
yazın - Bölgede
us-central1
girin - 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.
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