Etkinlik Yönetimi ile Vertex AI Vision Occupancy Analytics Uygulaması

1. Hedefler

Genel Bakış

Bu codelab'de, etkinlik yönetimi özelliğiyle etkinlik göndermek için uçtan uca Vertex AI Vision uygulaması oluşturmaya odaklanacağız. Önceden eğitilmiş Özel model Doluluk analizi'ni kullanırız. aşağıdaki verilerin yakalanmasına dayalı etkinlikler oluşturmak için yerleşik özellikler:

  • Belirli bir çizgide yoldan geçen araç sayısını ve kişileri sayın.
  • 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 videoları besleme
  • Vertex AI Vision'da uygulama oluşturma
  • Doluluk Analizi'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
  • Occupancy Analytics modelinin verilerini işleyen bir Cloud Functions işlevi oluşturma
  • Pub/Sub konusu oluşturma ve abonelik.
  • Pub/Sub konusu üzerinden etkinlik göndermek için etkinlik yönetimini ayarlama.

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. Video dosyasını akış için alma

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ına "traffic-stream" yazın
  4. Bölgeye "us-central1" yazın
  5. Kayıt düğmesini tıklayın

Akışın kaydedilmesi birkaç dakika sürer.

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

Akışı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 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
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ış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, 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 &

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

Kullanıcı arayüzünde canlı yayınlanan video görünümüGoogle Cloud Console'daki akışa aktarılan videonun canlı görünümü. Video kredisi: Elizabeth Mavor, Pixabay'da (pikselleme eklendi).

4. Cloud Functions işlevi oluşturma

Modelin verilerini özetlemek ve verileri analiz etmek için daha sonra etkinlik kanalı üzerinden gönderilecek etkinlikler oluşturabilirsiniz.

Cloud Functions işlevi hakkında daha fazla bilgiyi burada bulabilirsiniz.

Modelinizi dinleyen bir Cloud Functions işlevi oluşturma

  1. Cloud Functions işlevi kullanıcı arayüzü oluşturma sayfasına gidin.
  2. Daha sonra Etkinlik Yönetimi ayarlarında bu Cloud Functions işlevine atıfta bulunulacak olan işlev adını belirleyin.
  3. Bölgenin uygulamanızla eşleştiğinden emin olun.
  4. Ayarlayın, ardından tetikleyici ayarlarını kaydedin.
  5. "Kod"a gitmek için sonraki düğmesini tıklayın bölümü. Cloud Functions işlevi oluşturma örneği yüklenemedi.
  6. Cloud Functions işlevinizi düzenleyin. Node.js çalışma zamanıyla ilgili bir örneği aşağıda bulabilirsiniz.
/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.hello_http = (req, res) => {
 // Logging statement can be read with cmd `gcloud functions logs read {$functionName}`.
 // For more about logging, please see https://cloud.google.com/functions/docs/monitoring

 // The processor output will be stored in req.body.
 const messageString = constructMessage(req.body);

 // Send your message to operator output with res HTTP response context.
 res.status(200).send(messageString);
};

function constructMessage(data) {
 /**
  * Typically, your processor output should contains appPlatformMetadata & it's designed output.
  * For example here, if your output is of tyoe OccupancyCountingPredictionResult, you will need
  * to construct the return annotation as such. 
  */

 // access appPlatformMetat.
 const appPlatformMetadata = data.appPlatformMetadata;

 // access annotations.
 const annotations = data.annotations.map(annotation => {
  // This is a mock OccupancyCountingPredictionResult annotation.
  return {"annotation" : {"track_info": {"track_id": "12345"}}};
 });

 const events = [];
 for(const annotation of annotations) {
   events.push({
       "event_message": "Detection event",
       "payload" : {
         "description" : "object detected"
       },
       "event_id" : "track_id_12345"
     });
 }

  /**
   * Typically, your cloud function should return a string represent a JSON which has two fields:
   * "annotations" must follow the specification of the target model.
   * "events" should be of type "AppPlatformEventBody".
   */
 const messageJson = {
   "annotations": annotations,
   "events": events,
 };
 return JSON.stringify(messageJson);
}
  1. "Dağıt"ı tıklayın işlevi dağıtma düğmesidir.

5. Pub/Sub konusu oluştur ve abonelik

Etkinliği gönderebileceği uygulamaya bir Pub/Sub konusu sağlamamız gerekir. Etkinlikleri almak için bir Pub/Sub aboneliğinin yapılandırılmış optik özelliğine abone olması gerekir.

Pub/Sub konusu hakkında buradan, abonelik hakkında ise buradan daha fazla bilgi edinebilirsiniz.

Pub/Sub Konusu Oluşturma

Pub/Sub konusu oluşturmak için gcloud CLI şu komutu kullanabilirsiniz: (SUBSCRIPTION_ID değerini, kurulumunuzdaki gerçek değerle değiştirmeniz gerekir)

gcloud pubsub topics create TOPIC_ID

Alternatif olarak Pub/Sub kullanıcı arayüzünü kullanabilirsiniz.

Pub/Sub Aboneliği Oluşturma

Pub/Sub aboneliği oluşturmak için gcloud CLI öğesini kullanabilirsiniz: (SUBSCRIPTION_ID ve TOPIC_ID öğelerini, kurulumunuzdaki gerçek değerle değiştirmeniz gerekir)

gcloud pubsub subscriptions create SUBSCRIPTION_ID \
    --topic=TOPIC_ID \

Alternatif olarak Pub/Sub kullanıcı arayüzünü kullanabilirsiniz.

6. Uygulama oluşturma

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

  • Veri besleme: Video feed'i bir akışa beslenir.
  • Veri analizi: Beslemeden sonra 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 konsolunda uygulamalar bir grafik olarak gösterilir.

Boş uygulama oluşturma

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

Google Cloud Console'da uygulama oluşturun.

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

Uygulamalar sekmesine gidin

  1. Oluştur ekle 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 üç düğümü uygulama grafiğine ekleyebilirsiniz:

  1. Besleme düğümü: Verileri kullanan akış kaynağı.
  2. İşleme düğümü: Beslenen veriler üzerinde işlem yapan doluluk analizi modeli.
  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 modellerinden elde edilen çıkarımları 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örüntüle'yi seçin. Bu işlem, sizi işleme ardışık düzeninin grafik görselleştirmesine yönlendirir.

Veri kullanımı düğümü ekleme

  1. Bir giriş akışı düğümü eklemek için yan menünün Bağlayıcılar bölümündeki Akışlar'ı seçin.
  2. Açılan Akış menüsünün Kaynak bölümünde Akış ekle'yi seçin.
  3. Akış ekle menüsünde Yeni yayınlar kaydet'i seçin ve akış adı olarak trafik akışı ekleyin.
  4. Akışı 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. Kişiler ve Araçlar varsayılan seçimlerini değiştirmeden bırakın.
  3. Çizgi geçişi'ne Çizgi ekleyin. Ayrılan veya giren arabaları ya da kişileri algılamanız gereken çizgiler ç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. Aktif bir bölge çizilmişse tıkanıklığı tespit etmek için bekleme süresi ayarları ekleyin.
  • (Ş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's Media Warehouse menüsünden Connect domain'i (Depoyu bağla) tıklayın.
  3. Depo bağla menüsünde Yeni depo oluştur'u seçin. Depo trafik deposuna bir ad verin ve TTL süresini 14 gün olarak bırakın.
  4. Depoyu eklemek için Oluştur düğmesini tıklayın.

7. Etkinlik Yönetimini Yapılandırma

Süre 02:00

İşleme sonrası için modeli daha önce oluşturulan Cloud Functions işlevine bağlayacağız. Bu işlemde Cloud Functions işlevi modelin çıkışını rahatça inceleyip ihtiyaçlarınıza uygun etkinlikler oluşturabilir. Ardından, önceden oluşturulan Pub/Sub konusunu hedefimiz olarak yapılandırarak etkinlik kanalını yapılandıracağız. Ayrıca, etkinlik kanalınızın kısa bir süre içinde aynı etkinlikle dolu olmasını önlemek için minimum bir aralık da belirleyebilirsiniz.

İşleme sonrası için Cloud Functions işlevi seçme

  1. Yan menüyü açmak için uygulama grafiğinizdeki veri işleme düğümünü(doluluk analizi) tıklayın.
  2. İşleme sonrası açılır listesinden Cloud Functions işlevinizi (işlev adıyla tanımlanır) seçin.
  3. Uygulama grafiği, değişikliklerinizi otomatik olarak kaydeder.

İşleme sonrası yapılandırma örneği yüklenemedi

Etkinlik Kanalını Yapılandırma

  1. Yan menüyü açmak için uygulama grafiğinizdeki veri işleme düğümünü(doluluk analizi) tıklayın.
  2. "ETKİNLİK BİLDİRİMİ OLUŞTUR"u tıklayın seçeneğini belirleyin. Etkinlik Bildirimi örneği yüklenemedi.
  3. Açılır menüden Pub/Sub konunuzu seçin.
  4. (isteğe bağlı) Etkinlik yayınlama için minimum aralık/sıklığı ayarlayın.

Etkinlik Bildirimi iletişim kutusu örneği yüklenemedi

8. 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. Listede, 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 Dağıt'ı seçin. Dağıtma 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.

9. Pub/Sub aboneliğinde Etkinlikleri/Mesajları Doğrulama

Video verilerini işleme uygulamanıza aldıktan sonra Cloud Functions işlevi, doluluk analizi modeli ek açıklama çıktıktan sonra etkinlik oluşturmalıdır. Ardından bu etkinlikler, Pub/Sub konunuz ve (aboneliğiniz tarafından alındı.)

Aşağıdaki adımlarda, bir pull aboneliğiniz olduğu varsayılmıştır.

  1. Projenizde Pub/Sub Aboneliği listesini açın ve bulun. Pub/Sub abonelik listesi sayfasına gidin
  2. "Mesaj"a git sekmesinden erişebilirsiniz.
  3. "Çek"i tıklayın düğmesini tıklayın.
  4. İletinizi tabloda görüntüleyin. pub/sub abonelik mesaj resmi yüklenirken hata oluştu.

Alternatif olarak, kullanıcı arayüzü olmadan nasıl mesaj alacağınızı öğrenebilirsiniz. Abonelik sayfasına git

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 tutup tek tek kaynakları 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 okuma Okuyun ve alıştırmaları tamamlayın

Bu codelab'i ne kadar faydalı buldunuz?

Çok faydalı Yararlı