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
- 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
- Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin.
- Compute Engine ve Vision AI API'lerini etkinleştirin. API'leri etkinleştirme
Hizmet hesabı oluşturun:
- Google Cloud Console'da Hizmet hesabı oluştur sayfasına gidin. Hizmet hesabı oluşturma sayfasına gidin
- Projenizi seçin.
- 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ı.
- 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 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.
- Devam'ı tıklayın.
- 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:
- Google Cloud Console'da, oluşturduğunuz hizmet hesabının e-posta adresini tıklayın.
- Anahtarlar'ı tıklayın.
- Anahtar ekle'yi ve 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 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.
- Hareket hassasiyeti: Hareketin ne kadar hassas bir şekilde tetiklenmesi gerektiği.
- Minimum etkinlik uzunluğu: Hareket etkinliğinin kaydedileceği minimum uzunluk.
- Yeniden inceleme aralığı: Hareket etkinliği algılanmadan önce video kaydının ne kadar süreyle başlaması gerektiği.
- 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.
- 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
- 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
- Vertex AI Vision'ın sol panelinde akışlar sekmesini tıklayın.
- Kaydol'u tıklayın.
- Akış adı bölümüne
motion-detection-streamgirin. - Bölgeye
us-central1girin. - 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.
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:0olarak 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ölge0:0;100:0;100:100;0:100olarak 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.
*Dört düğümlü kare bölge.
*Üç 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:160olur.
*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.
trueolarak ayarlanırsa açıklama eklenen bölge, negatif bölge olarak işlev görür. Açıklama eklenen bölgelerdeki hareketler algılanmaz.
*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.
*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
*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
*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
- Vertex AI Vision'ın sol panelinde akışlar sekmesini tıklayın.
- Kaydol'u tıklayın.
- Akış adı bölümüne
motion-detection-streamgirin. - Bölgeye
us-central1girin. - 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.
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.