1. Hedefler
Genel Bakış
Bu codelab'de, etkinlik yönetimi özelliğiyle etkinlik göndermek için uçtan uca bir Vertex AI Vision uygulaması oluşturmaya odaklanılacaktır. Aşağıdaki öğelerin yakalanmasına dayalı etkinlikler oluşturmak için önceden eğitilmiş Specialized modelinin Occupancy analytics 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 videoları nasıl içe aktarırım?
- 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
- Doluluk analizi modelinin verilerini işleyen bir Cloud Functions işlevi oluşturma
- Pub/Sub konusu ve aboneliği oluşturma
- Etkinlikleri Pub/Sub konusu üzerinden göndermek için etkinlik yönetimi nasıl ayarlanır?
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. Akış için video dosyası alma
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ölge alanına "us-central1" girin.
- Kaydol'u tıklayın.
Akışın kaydedilmesi birkaç dakika sürer.
Ö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 .
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, yayın akışının devam etmesi için arka plan işi olarak çalıştıracağız.
- ( 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).
4. Cloud Functions işlevi oluşturma
Modelin verilerini ayrıştırmak ve daha sonra etkinlik kanalı üzerinden gönderilecek etkinlikler oluşturmak için bir Cloud Function'a ihtiyacımız olacak.
Cloud Functions hakkında daha fazla bilgiyi burada bulabilirsiniz.
Modelinizi dinleyen bir Cloud Functions işlevi oluşturun
- Cloud Functions kullanıcı arayüzü oluşturma sayfasına gidin.
- İşlev adını ayarlayın. Bu ad daha sonra Etkinlik Yönetimi ayarlarında bu Cloud Functions işlevine başvurmak için kullanılır.
- Bölgenin başvurunuzla eşleştiğinden emin olun.
- Tetikleyici ayarlarını düzenleyin ve kaydedin.
- "Kod" bölümüne gitmek için sonraki düğmesini tıklayın.

- Cloud Functions işlevinizi düzenleyin. Node.js çalışma zamanı içeren 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);
}
- İşlevi dağıtmak için "Dağıt" düğmesini tıklayın.
5. Pub/Sub konusu ve aboneliği oluşturma
Uygulamaya, etkinliği gönderebileceği bir Pub/Sub konusu sağlamamız gerekir. Etkinlikleri almak için bir Pub/Sub aboneliğinin yapılandırılmış optiğe abone olması gerekir.
Pub/Sub konusu hakkında ve abonelik hakkında daha fazla bilgi edinebilirsiniz.
Pub/Sub konusu oluşturma
Pub/Sub konusu oluşturmak için gcloud CLI'yı kullanabilirsiniz: (SUBSCRIPTION_ID'yi 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'yı kullanabilirsiniz: (SUBSCRIPTION_ID ve TOPIC_ID'yi 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 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ü: 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.
7. Etkinlik Yönetimi'ni yapılandırma
Süre 02:00
Modeli, sonradan işleme için daha önce oluşturulan Cloud Functions işlevine bağlarız. Cloud Functions işlevi, modelin çıkışını serbestçe ayrıştırabilir ve ihtiyacınıza uygun etkinlikler oluşturabilir. Ardından, daha önce 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 süre içinde aynı etkinlikle dolmasını önlemeye yardımcı olacak minimum bir aralık da belirleyebilirsiniz.
İşleme sonrası için Cloud Functions işlevini seçme
- Yan menüyü açmak için uygulama grafiğinizdeki veri işleme düğümünü(doluluk analizi) tıklayın.
- Sonraki işlem açılır listesinde Cloud Functions işlevinizi (işlev adıyla tanımlanır) seçin.
- Uygulama grafiği, değişikliklerinizi otomatik olarak kaydeder.

Etkinlik Kanalını Yapılandırma
- Yan menüyü açmak için uygulama grafiğinizdeki veri işleme düğümünü(doluluk analizi) tıklayın.
- Etkinlik Bildirimi bölümünde "ETKİNLİK BİLDİRİMİ AYARLA"yı tıklayın.

- Açılır listeden Pub/Sub Konunuzu seçin.
- (İsteğe bağlı) Etkinlik yayınlama için minimum aralığı/sıklığı ayarlayın.

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

9. Pub/Sub aboneliğindeki etkinlikleri/mesajları doğrulama
Video verilerini işleme uygulamanıza aktardıktan sonra, Cloud Functions işlevi, doluluk analizi modeli çıktıları açıklama eklediğinde etkinlik oluşturmalıdır. Ardından bu etkinlikler, Pub/Sub konunuz üzerinden mesaj olarak yayınlanmalı ve aboneliğiniz tarafından alınmalıdır.
Aşağıdaki adımlarda, çekme aboneliğiniz olduğu varsayılmaktadır.
- Projenizde Pub/Sub abonelik listesini açın ve ilgili aboneliği bulun. Pub/Sub abonelik listesi sayfasına gitme
- "Mesaj" sekmesine gidin.
- "Çek" düğmesini tıklayın.
- İletinizi tabloda görüntüleyin.

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