Vertex AI Vision Trafik İzleme Uygulaması

1. Hedefler

Genel Bakış

Bu kod laboratuvarında, 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ğıdakileri yakalamak için önceden eğitilmiş özel model Doluluk analizi'nin yerleşik özelliklerini kullanacağız:

  • Belirli bir çizgide bir yoldan geçen araç ve kişi sayısını sayma
  • Yolun herhangi bir sabit bölgesindeki araç/kişi sayısını sayın.
  • Yolun herhangi bir yerindeki tıkanıklığı tespit etme.

Neler öğreneceksiniz?

  • Akış için video beslemesi yapacak bir sanal makine oluşturma
  • Vertex AI Vision'da uygulama oluşturma
  • Doluluk Analizleri'nde bulunan farklı özellikler ve bunların nasıl kullanılacağı
  • Uygulamayı dağıtma
  • Vertex AI Vision'ın Media Warehouse'ta depolama alanınızda video arama
  • Çıkışı BigQuery'ye bağlama, modelin json çıkışından analizler çıkarmak için SQL sorgusu yazma ve sonucu Looker Studio'da gerçek zamanlı olarak görselleştirme.

2. Başlamadan Önce

  1. Google Cloud Console'daki 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 projenizi silerek projeyle ilişkili tüm kaynakları kaldırabilirsiniz. Proje seçiciye gitme
  2. Cloud projenizde 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

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, 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 aşağıdaki rolleri verin: Vision AI > Vision AI Düzenleyicisi, Compute Engine > Compute Instance Yöneticisi (beta), Depolama > Depolama Nesnesi Görüntüleyicisi † . Rol seçin listesinde bir rol seçin. Başka roller için Başka rol ekle'yi tıklayın ve her rolü ekleyin. Not: Roll (Roll) 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 rollerini vermeyin. Bunun yerine, ihtiyaçlarınıza uygun bir önceden tanımlanmış rol veya özel rol verin.
  6. Devam'ı tıklayın.
  7. Hizmet hesabını oluşturma işlemini tamamlamak için Bitti'yi tıklayın. Tarayıcı pencerenizi kapatmayın. Bu adı sonraki adımda kullanacaksınız.

Bir hizmet hesabı anahtarı oluşturun:

  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, 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.

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

3. Video yayınlamak için sanal makine oluşturma

Doluluk Analizleri'nde uygulama oluşturmadan önce, uygulama tarafından daha sonra kullanılabilecek bir akış kaydetmeniz gerekir.

Bu eğitimde, bir video barındıran bir Compute Engine sanal makine örneği oluşturur ve bu akışlı video verilerini sanal makineden gönderirsiniz.

Linux sanal makinesi oluşturma

Compute Engine sanal makine örneğinden video göndermenin ilk adımı, sanal makine örneğini oluşturmaktır.

  1. Konsolda Sanal makine örnekleri sayfasına gidin. Sanal makine örneklerine git
  2. Projenizi seçin ve Devam'ı tıklayın.
  3. Create instance'ı (Örnek oluştur) tıklayın.
  4. Sanal makineniz için bir ad belirtin. Daha fazla bilgi için Kaynak adlandırma kuralı başlıklı makaleyi inceleyin.
  5. İsteğe bağlı: Bu sanal makinenin Alt bölgesini değiştirin. Compute Engine, birden çok alt bölgede kullanımı teşvik etmek için her bölgedeki alt bölgelerin listesini rastgele hale getirir.
  6. Kalan varsayılan seçenekleri kabul edin. Bu seçenekler hakkında daha fazla bilgi için Sanal makine oluşturma ve başlatma başlıklı makaleyi inceleyin.
  7. Sanal makineyi oluşturup başlatmak için Oluştur'u tıklayın.

Sanal makine ortamını ayarlama

Sanal makine başladıktan sonra, tarayıcınızdan sanal makineye SSH bağlantısı kurmak için konsolu kullanabilirsiniz. Ardından, videoyu canlı yayınınıza aktarmak için vaictl komut satırı aracını indirebilirsiniz.

Sanal makinenizle SSH bağlantısı oluşturun

  1. Konsolda Sanal makine örnekleri sayfasına gidin. Sanal makine örneklerine gitme
  2. Oluşturduğunuz örnek satırının Bağlan bölümünde SSH'yi tıklayın. Bu işlem, SSH bağlantısını yeni bir tarayıcı penceresinde açar. Kullanıcı arayüzündeki SSH seçeneği

vaictl komut satırı aracını indirin

  1. SSH-in-browser 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
  1. Aşağıdaki komutu çalıştırarak komut satırı aracını yükleyin:
sudo apt install ./visionai_0.0-4_amd64.deb
  1. Aşağıdaki komutu çalıştırarak yüklemeyi test edebilirsiniz:
vaictl --help

4. Video dosyasını akış için alma

Sanal makine ortamınızı ayarladıktan sonra bir örnek video dosyası kopyalayıp video verilerini doluluk analizi uygulamanıza aktarmak için vaictl'i kullanabilirsiniz.

Cloud Console'da Vision AI API'yi etkinleştirerek başlayın.

Yeni canlı yayın kaydetme

  1. Vertex AI Vision'ın sol panelindeki Yayınlar sekmesini tıklayın.
  2. Kaydol'u tıklayın.
  3. Akış adı alanına "traffic-stream" yazın.
  4. Bölge alanına "us-central1" yazın.
  5. Kaydol'u tıklayın.

Aktarımın kaydedilmesi birkaç dakika sürer.

Sanal makinenize örnek bir video kopyalama

  1. Sanal makinenizin SSH-in-browser penceresinde, aşağıdaki gsutil cp komutunu kullanarak örnek bir video 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 )(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 .

VM'den video aktarma ve yayınınıza veri besleme

  1. 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: Konum kimliğiniz. Örneğin, us-central1. Daha fazla bilgi için Cloud konumları konusuna bakın.
  • LOCAL_FILE: Yerel bir video dosyasının adı. Örneğin, street_vehicles_people.mp4.
  • –loop işareti: İsteğe bağlı. Akışla aktarmayı 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
  1. Bu komut, video dosyasını akışa aktarır. -loop işaretini kullanırsanız video, siz komutu durdurana kadar akışta tekrar tekrar oynatılır. Bu komutu, sanal makinenin bağlantısı kesildikten sonra bile aktarmaya 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)
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 besleme işleminin başlatılması ile videonun kontrol panelinde görünmesi yaklaşık 100 saniye sürebilir.

Akış beslemesi kullanılabilir hale geldikten sonra, Vertex AI Vision kontrol panelinin Akışlar sekmesinde traffic-stream akışını seçerek video feed'ini görebilirsiniz.

Akışlar sekmesine gidin

Kullanıcı arayüzünde canlı yayınlanan videoyu gösteren görünümGoogle Cloud Console'da yayına aktarılan videonun canlı görünümü. Video kredisi: Pixabay'deki Elizabeth Mavor (pikselleştirme eklendi).

5. Uygulama oluşturma

İlk adım, verilerinizi işleyen bir uygulama oluşturmaktır. Uygulamalar, aşağıdakileri birbirine bağlayan otomatik bir ardışık düzen olarak düşünülebilir:

  • Veri kullanımı: Video feed'i bir yayına aktarılır.
  • Veri analizi: Beslemeden sonra bir yapay zeka(bilgisayar görüşü) modeli eklenebilir.
  • Veri depolama: Video feed'inin iki sürümü (orijinal akış ve yapay zeka modeli tarafından işlenen akış), medya ambarında depolanabilir.

Google Cloud Console'da uygulamalar grafik olarak temsil edilir.

Boş uygulama oluşturma

Uygulama grafiğini doldurmadan önce önce boş bir uygulama oluşturmanız gerekir.

Google Cloud Console'da uygulama oluşturun.

  1. Google Cloud Console'a gidin.
  2. Vertex AI Vision kontrol panelinin Uygulamalar sekmesini açın.

Uygulamalar sekmesine gidin

  1. Ekle Oluştur düğmesini tıklayın.
  2. Uygulama adı olarak traffic-app yazın ve bölgenizi seçin.
  3. Oluştur'u tıklayın.

Uygulama bileşeni düğümleri ekleme

Boş uygulamayı oluşturduktan sonra uygulama grafiğine üç düğüm ekleyebilirsiniz:

  1. Besleme düğümü: Oluşturduğunuz bir Compute Engine sanal makine örneğinden gönderilen verileri alan akış kaynağı.
  2. İşleme düğümü: Beslenen veriler üzerinde işlem yapan doluluk analizi modelidir.
  3. Depolama düğümü: İşlenen videoları depolayan ve meta veri deposu olarak hizmet veren medya ambarı. Meta veri depoları, beslenen video verileriyle ilgili analiz bilgilerini ve yapay zeka modelleri tarafından çıkarılan bilgileri içerir.

Konsolda uygulamanıza bileşen düğümleri ekleyin.

  1. Vertex AI Vision kontrol panelinin Uygulamalar sekmesini açın. Uygulamalar sekmesine gidin
  2. Trafik uygulaması satırında Grafiği göster'i seçin. Bu işlem sizi işleme ardışık düzeninin grafik görselleştirmesine yönlendirir.

Veri besleme düğümü ekleme

  1. Giriş akışı düğümü eklemek için yan menünün Bağlayıcılar bölümünde Akışlar'ı seçin.
  2. Açılan Yayın menüsünün Kaynak bölümünde Yayın ekle'yi seçin.
  3. Akış ekle menüsünde Yeni akış kaydet'i seçin ve akış adı olarak traffic-stream yazın.
  4. Akışları uygulama grafiğine eklemek için Akış ekle'yi tıklayın.

Veri işleme düğümü ekleme

  1. Doluluk sayısı modeli düğümünü eklemek için yan menünün Özel modeller bölümünde doluluk analizi seçeneğini belirleyin.
  2. Varsayılan Kişiler ve Taşıtlar seçimlerini bırakın.
  3. Çizgi geçişi'ne Çizgi ekleyin. Giren veya çıkan arabaları ya da kişileri algılamanız gereken çizgileri çizmek için çok noktalı çizgi aracını kullanın.
  4. Bölgedeki kişileri/araçları saymak için aktif bölgeleri çizin.
  5. Etkin bir bölge çizilirse tıklama süresine ilişkin ayarlar ekleyerek tıklama sıklığını algılayın.
  • (Şu anda etkin alt bölge ve çizgi geçişi aynı anda desteklenmemektedir.) Aynı anda yalnızca bir özellik kullanın.)

3acdb6f1e8474e07.png ce63449d601995e9.png

194c54d2bbcf7e8a.png

Veri depolama düğümü ekleme

  1. Çıkış hedefi (depolama alanı) düğümünü eklemek için yan menünün Bağlayıcılar bölümünde Vertex AI Vision's Media Warehouse seçeneğini belirleyin.
  2. Vertex AI Vision'un Medya Deposu menüsünde Depoyu bağla'yı tıklayın.
  3. Depo bağla menüsünde Yeni depo oluştur'u seçin. Depoyu traffic-warehouse olarak adlandırın ve TTL süresini 14 günde bırakın.
  4. 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ısı eklediğinizde, bağlı tüm uygulama modeli çıkışları hedef tabloya alınır.

Kendi BigQuery tablonuzu oluşturup uygulamaya BigQuery bağlayıcısı eklerken bu tabloyu belirtebilir veya Vertex AI Vision uygulama platformunun tabloyu otomatik olarak oluşturması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şturma özelliğini 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.
  • 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 yapılmaz.
  1. Vertex AI Vision kontrol panelinin Uygulamalar sekmesini açın. Uygulamalar sekmesine gidin
  2. Listede uygulamanızın adının yanında bulunan Uygulamayı görüntüle'yi seçin.
  3. Uygulama oluşturucu sayfasında Bağlayıcılar bölümünden BigQuery'yi seçin.
  4. BigQuery yolu alanını boş bırakın. ee0b67d4ab2263d.png
  5. Mağaza meta verileri kaynağı: bölümünde yalnızca "doluluk Analytics"i seçin ve akışların işaretini kaldırın.

Nihai uygulama grafiği şu şekilde görünmelidir:

1787242465fd6da7.png

7. Uygulamanızı kullanıma sunma

Uçtan uca uygulamanızı gerekli tüm bileşenlerle derledikten sonra, uygulamayı kullanmanın son adımı uygulamayı dağıtmaktır.

  1. Vertex AI Vision kontrol panelinin Uygulamalar sekmesini açın. Uygulamalar sekmesine gidin
  2. Listedeki uygulama trafiği uygulamasının yanında Grafiği görüntüle'yi seçin.
  3. Uygulama grafiği oluşturucu sayfasında Dağıt düğmesini tıklayın.
  4. Aşağıdaki onay iletişim kutusunda Yayınla'yı 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. ee78bbf00e5db898.png

8. Depolama deposunda video içeriği arama

Video verilerini işleme uygulamanıza aktardıktan sonra, analiz edilen video verilerini görüntüleyebilir ve verileri doluluk analizi bilgilerine göre arayabilirsiniz.

  1. Vertex AI Vision kontrol panelinin Depolar sekmesini açın. Depo sekmesine gidin
  2. Listede traffic-warehouse deposunu bulup Öğeleri görüntüle'yi tıklayın.
  3. Kişi sayısı veya Araç sayısı bölümünde Min değerini 1, Maks değerini 5 olarak ayarlayın.
  4. Vertex AI Vision'ın Media Warehouse'ta depolanan işlenmiş video verilerini filtrelemek için Search'ü (Ara) tıklayın.

e636361b19738c8d.png

Google Cloud Console'daki arama ölçütleriyle eşleşen depolanan video verilerinin görünümü. Video kredisi: Pixabay'deki Elizabeth Mavor (arama ölçütleri uygulandı).

9. BigQuery tablosunda çıkışı 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 Sorgu'yu tıklayın

Aşağıdaki sorguyu yazın

Sorgu1: Her bir hattı dakikada geçen araç sayısını kontrol etmek için sorgu

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

2. Sorgu: Her bölgede 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 kod laboratuvarında yalnızca Query1 için örnek veriler ve görselleştirme gösterilmektedir. Sorgu2 için benzer bir işlem yapabilirsiniz.

e6fd891f3a46246.png

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

9e737ddb4d0d25b6.png

"Boyut" bölmesinde saat ekleyin ve zaman yapılandırmasını tarih-saat olarak değiştirin. "Döküm boyutu"na line_id ekleyin. b5da9704ccd8db.png

Yukarıdaki grafikte, her bir hattı 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ğiticide kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız kaynakları içeren projeyi silin veya projeyi saklayıp kaynakları tek tek silin.

Projeyi silme

Kaynakları tek tek silme

Kaynaklar

https://cloud.google.com/vision-ai/docs/overview

https://cloud.google.com/vision-ai/docs/occupancy-count-tutorial

Geri bildirim

Geri bildirim göndermek için burayı tıklayın

Anket

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

Yalnızca okuyun Okuyup alıştırmaları tamamlayın

Bu kod laboratuvarı ne kadar yararlı oldu?

Çok faydalı Kısmen faydalı