1. Hedefler
Genel Bakış
Bu codelab'de, anlık trafik video görüntülerini izlemek için uçtan uca bir Vertex AI Vision uygulaması oluşturmaya odaklanacağız. Aşağıdaki bilgileri yakalamak için önceden eğitilmiş Specialized modeli Occupancy analytics'in yerleşik özelliklerini kullanacağız:
- Belirli bir çizgide yolu geçen araç ve kişi sayısını hesaplayın.
- Yolun sabit bir bölgesindeki araç/kişi sayısını belirleyin.
- Yolun herhangi bir bölümünde trafik sıkışıklığı algılandığında
Neler öğreneceksiniz?
- Yayın için video alma amacıyla sanal makine oluşturma
- Vertex AI Vision'da uygulama oluşturma
- Doluluk analizi bölümünde bulunan farklı özellikler ve bunların nasıl kullanılacağı
- Uygulamayı dağıtma
- Vertex AI Vision'ın Media Warehouse'unda depolama alanınızdaki videoları arama
- Çıkışı BigQuery'ye bağlama, modelin JSON çıkışından analizler elde etmek için SQL sorgusu yazma ve sonucu Looker Studio'da gerçek zamanlı olarak görselleştirme.
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. Video yayınlamak için sanal makine oluşturma
Doluluk Analizi'nde bir uygulama oluşturmadan önce, daha sonra uygulama tarafından kullanılabilecek bir akış kaydetmeniz gerekir.
Bu eğitimde, video barındıran bir Compute Engine sanal makine örneği oluşturacak ve bu akışlı video verilerini sanal makineden göndereceksiniz.
Linux sanal makinesi oluşturma
Compute Engine sanal makine örneğinden video göndermenin ilk adımı, sanal makine örneğini oluşturmaktır.
- Konsolda VM instances (Sanal makine örnekleri) sayfasına gidin. Sanal makine örneklerine gitme
- Projenizi seçin ve Devam'ı tıklayın.
- Create instance'ı (Örnek oluştur) tıklayın.
- Sanal makineniz için bir Ad belirtin. Daha fazla bilgi için Kaynak adlandırma kuralı başlıklı makaleyi inceleyin.
- İsteğe bağlı: Bu sanal makinenin bölgesini değiştirin. Compute Engine, her bölgedeki alt bölgelerin listesini rastgele hale getirerek birden fazla alt bölgede kullanımı teşvik eder.
- Kalan varsayılan seçenekleri kabul edin. Bu seçenekler hakkında daha fazla bilgi için VM oluşturma ve başlatma başlıklı makaleyi inceleyin.
- Sanal makineyi oluşturup başlatmak için Oluştur'u tıklayın.
Sanal makine ortamını ayarlama
Sanal makine başlatıldıktan sonra, tarayıcınızdan sanal makineye SSH üzerinden bağlanmak için konsolu kullanabilirsiniz. Ardından, videoyu akışınıza aktarmak için vaictl komut satırı aracını indirebilirsiniz.
Sanal makinenize SSH bağlantısı oluşturma
- Konsolda VM instances (Sanal makine örnekleri) sayfasına gidin. Sanal makine örneklerine gitme
- Oluşturduğunuz örnek satırının Bağlan bölümünde SSH'ı tıklayın. Bu işlem, yeni bir tarayıcı penceresinde SSH bağlantısı açar.

vaictl komut satırı aracını indirin
- Tarayıcıda SSH penceresinde, aşağıdaki komutu kullanarak Vertex AI Vision (vaictl) komut satırı aracını indirin:
wget https://github.com/google/visionai/releases/download/v0.0.4/visionai_0.0-4_amd64.deb
- Aşağıdaki komutu çalıştırarak komut satırı aracını yükleyin:
sudo apt install ./visionai_0.0-4_amd64.deb
- Aşağıdaki komutu çalıştırarak kurulumu test edebilirsiniz:
vaictl --help
4. Akış için video dosyası alma
Sanal makine ortamınızı ayarladıktan sonra örnek bir video dosyası kopyalayabilir ve ardından video verilerini doluluk analizi uygulamanıza aktarmak için vaictl'yi kullanabilirsiniz.
Cloud Console'da Vision AI API'yi etkinleştirerek başlayın.
Yeni bir akış kaydetme
- Vertex AI Vision'ın sol panelinde akışlar sekmesini tıklayın.
- Kaydol'u tıklayın.
- Akış adı bölümüne "traffic-stream" girin.
- Bölgeye "us-central1" girin.
- Kaydol'u tıklayın.
Akışın kaydedilmesi birkaç dakika sürer.
VM'nize örnek video kopyalama
- Sanal makinenizin SSH-in-browser penceresinde, aşağıdaki gsutil cp komutuyla örnek bir videoyu kopyalayın. 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 .
Sanal makineden video akışı yapma ve akışınıza veri aktarma
- Bu yerel video dosyasını uygulama giriş akışına göndermek için aşağıdaki komutu kullanın. Aşağıdaki değişken değişikliklerini yapmanız gerekir:
- 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 export LOCAL_FILE=street_vehicles_people.mp4
- 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 arka plan işi olarak çalıştırırız. Böylece, sanal makinenin bağlantısı kesildikten sonra bile yayın devam eder.
- ( Arka plan işi yapmak için nohup'ı başlangıca ve "&" işaretini sona ekleyin)
nohup vaictl -p $PROJECT_ID \
-l $LOCATION_ID \
-c application-cluster-0 \
--service-endpoint visionai.googleapis.com \
send video-file to streams 'traffic-stream' --file-path $LOCAL_FILE --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.
Google Cloud Console'da akışa aktarılan videonun canlı görünümü. Video kredisi: Elizabeth Mavor, Pixabay'de (pikselleştirme eklendi).
5. Uygulama oluşturma
İlk adım, verilerinizi işleyen bir uygulama oluşturmaktır. Uygulama, aşağıdakileri birbirine bağlayan otomatik bir kanal olarak düşünülebilir:
- Veri kullanımı: Video feed'i bir akışa alınır.
- Veri analizi: Veri alımından sonra bir yapay zeka(bilgisayarla görme) modeli eklenebilir.
- Veri depolama: Video feed'inin iki sürümü (orijinal yayın ve yapay zeka modeli tarafından işlenen yayın) bir medya deposunda saklanabilir.
Google Cloud Console'da bir uygulama grafik olarak gösterilir.
Boş bir uygulama oluşturma
Uygulama grafiğini doldurmadan önce boş bir uygulama oluşturmanız gerekir.
Google Cloud Console'da bir uygulama oluşturun.
- Google Cloud Console'a gidin.
- Vertex AI Vision kontrol panelinin Uygulamalar sekmesini açın.
- Ekle Oluştur düğmesini tıklayın.
- Uygulama adı olarak traffic-app girin ve bölgenizi seçin.
- Oluştur'u tıklayın.
Uygulama bileşeni düğümleri ekleme
Boş uygulamayı oluşturduktan sonra uygulama grafiğine üç düğüm ekleyebilirsiniz:
- Alım düğümü: Oluşturduğunuz bir Compute Engine sanal makine örneğinden gönderilen verileri alan akış kaynağı.
- İşleme düğümü: Alınan veriler üzerinde işlem yapan doluluk analizi modeli.
- Depolama düğümü: İşlenmiş videoları depolayan ve meta veri deposu olarak kullanılan medya deposu. Meta veri depoları, alınan video verileriyle ilgili analiz bilgilerini ve yapay zeka modelleri tarafından çıkarılan bilgileri içerir.
Konsolda uygulamanıza bileşen düğümleri ekleyin.
- Vertex AI Vision kontrol panelinin Uygulamalar sekmesini açın. Uygulamalar sekmesine gidin
- Trafik-uygulama satırında Grafiği görüntüle'yi seçin. Bu işlem sizi işleme hattının grafik görselleştirmesine yönlendirir.
Veri kullanımı düğümü ekleme
- Giriş akışı düğümü eklemek için yan menünün Bağlayıcılar bölümünde Akışlar seçeneğini belirleyin.
- Açılan Yayın menüsünün Kaynak bölümünde Yayın ekle'yi seçin.
- Akış ekle menüsünde Yeni akışları kaydet'i seçin ve akış adı olarak traffic-stream'i ekleyin.
- Akışı uygulama grafiğine eklemek için Akış ekle'yi tıklayın.
Veri işleme düğümü ekleme
- Dolu olma sayısı modeli düğümünü eklemek için yan menünün Özel modeller bölümünde Dolu olma analizi seçeneğini belirleyin.
- Varsayılan seçimler olan Kişiler ve Araçlar'ı olduğu gibi bırakın.
- Çizgi geçişinde çizgiler ekleyin. Çok noktalı çizgi aracını kullanarak araçların veya insanların ayrılış ya da girişini algılamanız gereken yerlerde çizgiler çizin.
- Bu bölgedeki kişi/araç sayısını belirlemek için etkin bölgeleri çizin.
- Etkin bir bölge çizilirse yoğunluğu algılamak için bekleme süresi ayarları ekleyin.
- (Şu anda hem etkin bölge hem de çizgi geçişi aynı anda desteklenmemektedir. Tek seferde yalnızca bir özellik kullanın.)


Veri depolama düğümü ekleme
- Çıkış hedefi (depolama) düğümünü eklemek için yan menünün Bağlayıcılar bölümünde Vertex AI Vision'ın Media Warehouse'u seçeneğini belirleyin.
- Vertex AI Vision'ın Media Warehouse menüsünde Connect warehouse'u (Depoyu bağla) tıklayın.
- Depo bağla menüsünde Yeni depo oluştur'u seçin. Depo trafiğini "depo" olarak adlandırın ve TTL süresini 14 gün olarak bırakın.
- Depoyu eklemek için Oluştur düğmesini tıklayın.
6. Çıkışı BigQuery tablosuna bağlama
Vertex AI Vision uygulamanıza bir BigQuery bağlayıcı eklediğinizde, bağlı uygulama modeli çıkışlarının tümü hedef tabloya aktarılır.
Kendi BigQuery tablonuzu oluşturup uygulamaya BigQuery bağlayıcısı eklerken bu tabloyu belirtebilir veya tablonun Vertex AI Vision uygulama platformu tarafından otomatik olarak oluşturulmasına izin verebilirsiniz.
Otomatik tablo oluşturma
Vertex AI Vision uygulama platformunun tabloyu otomatik olarak oluşturmasına izin verirseniz BigQuery bağlayıcı düğümünü eklerken bu seçeneği belirtebilirsiniz.
Otomatik tablo oluşturmayı kullanmak istiyorsanız aşağıdaki veri kümesi ve tablo koşulları geçerlidir:
- Veri kümesi: Otomatik olarak oluşturulan veri kümesi adı visionai_dataset'tir.
- Tablo: Otomatik olarak oluşturulan tablo adı visionai_dataset.APPLICATION_ID'dir.
- Hata işleme:
- Aynı veri kümesi altında aynı ada sahip bir tablo varsa otomatik oluşturma işlemi gerçekleşmez.
- Vertex AI Vision kontrol panelinin Uygulamalar sekmesini açın. Uygulamalar sekmesine gidin
- Listeden uygulamanızın adının yanındaki Uygulamayı görüntüle'yi seçin.
- Uygulama oluşturucu sayfasında Bağlayıcılar bölümünden BigQuery'yi seçin.
- BigQuery yolu alanını boş bırakın.

- Şuradan mağaza meta verileri: bölümünde yalnızca "Doluluk analizi"ni seçin ve akışların işaretini kaldırın.
Son uygulama grafiği aşağıdaki gibi görünmelidir:

7. Uygulamanızı kullanıma sunma
Uçtan uca uygulamanızı gerekli tüm bileşenlerle oluşturduktan sonra, uygulamayı kullanmak için yapmanız gereken son adım dağıtmaktır.
- Vertex AI Vision kontrol panelinin Uygulamalar sekmesini açın. Uygulamalar sekmesine gidin
- Listede trafik-uygulama uygulamasının yanındaki Grafiği görüntüle'yi seçin.
- Uygulama grafiği oluşturucu sayfasında Dağıt düğmesini tıklayın.
- Açılan onay iletişim kutusunda Dağıt'ı seçin. Dağıtım işleminin tamamlanması birkaç dakika sürebilir. Dağıtım tamamlandıktan sonra düğümlerin yanında yeşil onay işaretleri görünür.

8. Depolama deposundaki video içeriklerini arama
Video verilerini işleme uygulamanıza aktardıktan sonra analiz edilen video verilerini görüntüleyebilir ve doluluk analizi bilgilerine göre verilerde arama yapabilirsiniz.
- Vertex AI Vision kontrol panelinin Warehouses (Depolar) sekmesini açın. Depolar sekmesine gidin
- Listede trafik deposunu bulun ve Öğeleri görüntüle'yi tıklayın.
- Kişi sayısı veya Araç sayısı bölümünde Min değerini 1'e, Maksimum değerini 5'e ayarlayın.
- Vertex AI Vision'ın Media Warehouse'unda depolanan işlenmiş video verilerini filtrelemek için Ara'yı tıklayın.

Google Cloud Console'da arama ölçütleriyle eşleşen depolanmış video verilerinin görünümü. Video kredisi: Elizabeth Mavor, Pixabay'de (arama ölçütleri uygulanmıştır).
9. Çıkışı BigQuery Tablosunda Analiz Etme
BigQuery'ye git
Veri kümesini seçin: visionai_dataset
Tabloyu seçin: APPLICATION_ID (bu örnekte traffic-app)
Tablo adının sağındaki üç noktayı ve ardından Sorgu'yu tıklayın.
Aşağıdaki sorguyu yazın
Sorgu1: Dakikada her çizgiyi geçen araç sayısını kontrol etme sorgusu
abc.sql
—- Get list of active marked lines for each timeframe
WITH line_array AS (
SELECT
t.ingestion_time AS ingestion_time,
JSON_QUERY_ARRAY(t.annotation.stats["crossingLineCounts"]) AS lines
FROM
`PROJ_ID.visionai_dataset.APP_ID` AS t
),
—- Flatten active lines to get individual entities details
flattened AS (
SELECT
line_array.ingestion_time,
JSON_VALUE(line.annotation.id) as line_id,
JSON_QUERY_ARRAY(line["positiveDirectionCounts"]) AS entities
FROM line_array, unnest(line_array.lines) as line
)
—- Generate aggregate vehicle count per zone w.r.t time
SELECT
STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time, line_id,
SUM(INT64(entity["count"])) as vehicle_count
FROM
flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, line_id
Sorgu 2: Her bölgedeki dakika başına araç sayısını kontrol etme sorgusu
—- Get list of active zones for each timeframe
WITH zone_array AS (
SELECT
t.ingestion_time AS ingestion_time,
JSON_QUERY_ARRAY(t.annotation.stats["activeZoneCounts"]) AS zones
FROM
`PROJ_ID.visionai_dataset.APP_ID` AS t
),
—- Flatten active zones to get individual entities details
flattened AS (
SELECT zone_array.ingestion_time, JSON_VALUE(zone.annotation.id) as zone_id,
JSON_QUERY_ARRAY(zone["counts"]) AS entities
FROM zone_array, unnest(zone_array.zones) as zone
)
—- Generate aggregate vehicle count per zone w.r.t time
SELECT
STRING(TIMESTAMP_TRUNC(ingestion_time, MINUTE) ) AS time,
zone_id,
SUM(INT64(entity["count"])) as vehicle_count
FROM flattened, UNNEST(flattened.entities) AS entity
WHERE JSON_VALUE(entity['entity']['labelString']) = 'Vehicle'
GROUP BY time, zone_id
Yukarıdaki sorgularda "Kişi" sayısını hesaplamak için "Araç"ı "Kişi" olarak değiştirebilirsiniz.
Bu codelab'de yalnızca Query1 için örnek veriler ve görselleştirme gösterilir. Sorgu2 için de benzer bir süreç izleyebilirsiniz.

Sağ taraftaki yan menüde Verileri Keşfet'i tıklayın ve Looker Studio ile keşfet'i seçin.

"Boyut" bölmesinde zamanı ekleyin ve zaman yapılandırmasını tarih-saat olarak değiştirin. "Döküm boyutu" bölümüne line_id ekleyin. 
Yukarıdaki grafikte, her bir çizgiyi dakikada geçen araç/kişi sayısı gösterilmektedir.
Koyu mavi ve açık mavi çubuklar, iki farklı satır kimliğini gösterir.
10. Tebrikler
Tebrikler, laboratuvarı tamamladınız.
Temizleme
Bu eğitimde kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini önlemek amacıyla kaynakları içeren projeyi silin veya projeyi koruyup tek tek kaynakları silin.
Projeyi silme
Tek tek kaynakları silme
Kaynaklar
https://cloud.google.com/vision-ai/docs/overview
https://cloud.google.com/vision-ai/docs/occupancy-count-tutorial
Geri bildirim
Geri bildirimde bulunmak için burayı tıklayın.