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 odaklanacağız. Aşağıdakilerin yakalanmasına dayalı etkinlikler oluşturmak 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şileri sayın.
- Yolun sabit bir bölgesindeki araç/kişi sayısını sayma
- Yolun herhangi bir kısmında trafik sıkışıklığı algılanması
Neler öğreneceksiniz?
- Akış için videoları besleme
- Vertex AI Vision'da uygulama oluşturma
- Doluluk Analizleri'nde bulunan farklı özellikler ve bunların nasıl kullanılacağı
- Uygulamayı dağıtma
- Depolama alanınızdaki videoları Vertex AI Vision'un Medya Deposu'nda 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önetimini ayarlama.
2. Başlamadan Önce
- 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ı saklamayı düşünmüyorsanız mevcut projeyi seçmek yerine yeni bir proje oluşturun. Bu adımları tamamladıktan sonra projenizi silerek projeyle ilişkili tüm kaynakları kaldırabilirsiniz. Proje seçiciye gitme
- 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.
- 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, 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ı.
- 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 > İşlem Örnek Yöneticisi (beta), Depolama > Depolama Nesnesi Görüntüleyici † . Rol seçin listesinden 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. Bu rolleri iptal edebilir veya daha sonra ek roller verebilirsiniz. Üretim ortamlarında Sahip, Düzenleyici veya Görüntüleyici rollerine izin vermeyin. Bunun yerine, ihtiyaçlarınıza uygun bir önceden tanımlanmış rol veya özel rol verin.
- Devam'ı tıklayın.
- Hizmet hesabını oluşturma işlemini 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:
- Google Cloud Console'da, oluşturduğunuz hizmet hesabının e-posta adresini tıklayın.
- Anahtarlar'ı tıklayın.
- Anahtar ekle'yi, 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 KSA'yı yükleyin ve başlatın.
† Bu rol yalnızca bir Cloud Storage paketinden örnek video dosyası kopyalarsanız gereklidir.
3. Akış için video dosyası besleme
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
- Vertex AI Vision'ın sol panelindeki Yayınlar sekmesini tıklayın.
- Kaydol'u tıklayın
- Akış adı alanına "traffic-stream" yazın.
- Bölge alanına "us-central1" yazın.
- Kaydol'u tıklayın.
Aktarımı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 dosyanızı (ör. 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, source) kullanabilirsiniz.
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4 gsutil cp $SOURCE .
Akışınıza veri besleme
- 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 dosya 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
- 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 akışın 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 &
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.
Google Cloud Console'da yayına aktarılan videonun canlı görünümü. Video kredisi: Pixabay'deki Elizabeth Mavor (pikselleştirme eklendi).
4. Cloud Functions işlevi oluşturma
Modelin verilerini özetlemek ve daha sonra etkinlik kanalı üzerinden gönderilecek etkinlikler oluşturmak için bir Cloud Functions işlevine ihtiyacımız olacak.
Cloud Functions hakkında daha fazla bilgiyi burada bulabilirsiniz.
Modelinizi dinleyen bir Cloud Functions işlevi oluşturma
- Cloud Functions kullanıcı arayüzü oluşturma sayfasına gidin.
- Daha sonra Etkinlik Yönetimi ayarlarında bu Cloud Functions işlevine referans vermek için kullanılacak işlev adını ayarlayın.
- Bölgenin uygulamanızla eşleştiğinden emin olun.
- Tetikleyici ayarlarını düzenleyip kaydedin.
- "Kod" bölümüne gitmek için sonraki düğmeyi tıklayın.
- Cloud Functions işlevinizi düzenleyin. Node.js çalışma zamanı içeren bir örnek aşağıda verilmiştir.
/**
* 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ış optik abone olması gerekir.
Pub/Sub konusu hakkında daha fazla bilgiyi burada, abonelik hakkında daha fazla bilgiyi ise burada bulabilirsiniz.
Pub/Sub Konusu Oluşturma
Pub/Sub konusu oluşturmak için gcloud KSA'yı kullanabilirsiniz: (SUBSCRIPTION_ID değerini, ayarlarınızdaki gerçek değerle değiştirmeniz gerekir)
gcloud pubsub topics create TOPIC_ID
Alternatif olarak Pub/Sub kullanıcı arayüzünü de kullanabilirsiniz.
Pub/Sub aboneliği oluşturma
Pub/Sub aboneliği oluşturmak için gcloud KSA'yı kullanabilirsiniz: (SUBSCRIPTION_ID ve TOPIC_ID değerlerini, ayarlarınızdaki gerçek değerlerle değiştirmeniz gerekir.)
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \
Alternatif olarak Pub/Sub kullanıcı arayüzünü de kullanabilirsiniz.
6. 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 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ış) bir medya deposunda 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.
- 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 yazın ve bölgenizi seçin.
- Oluştur'u tıklayın.
Uygulama bileşeni düğümleri ekleme
Boş uygulamayı oluşturduktan sonra üç düğümü uygulama grafiğine ekleyebilirsiniz:
- Veri besleme düğümü: Verileri besleyen akış kaynağı.
- İşleme düğümü: Beslenen veriler üzerinde işlem yapan doluluk analizi modelidir.
- 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.
- Vertex AI Vision kontrol panelinin Uygulamalar sekmesini açın. Uygulamalar sekmesine gidin
- 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
- Giriş akışı düğümü eklemek için yan menünün Bağlayıcılar bölümünde Akışlar'ı seçin.
- 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ış kaydet'i seçin ve akış adı olarak traffic-stream yazın.
- Akışları uygulama grafiğine eklemek için Akış ekle'yi tıklayın.
Veri işleme düğümü ekleme
- 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.
- Varsayılan Kişiler ve Taşıtlar seçimlerini bırakın.
- Ç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.
- Bu bölgedeki kişileri/araçları saymak için etkin bölgeleri çizin.
- Etkin bir bölge çizilirse tıklama süresine ilişkin ayarlar ekleyerek tıklama sıklığını algılayın.
- (Şu anda etkin bölge ve çizgi geçişi aynı anda desteklenmiyor. Aynı anda 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ğlantılar bölümünde Vertex AI Vision's Media Warehouse seçeneğini belirleyin.
- Vertex AI Vision'un Medya Deposu menüsünde Depoyu bağla'yı tıklayın.
- 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.
- Depoyu eklemek için Oluştur düğmesini tıklayın.
7. Etkinlik Yönetimi'ni yapılandırma
Süre 02:00
Modeli, son işleme için daha önce oluşturulmuş Cloud Function'a bağlarız. Cloud Function, modelin çıktısını özgürce işleyebilir ve ihtiyacınıza uygun etkinlikler oluşturabilir. Ardından, önceden oluşturulan Pub/Sub konusunu hedefimiz olarak yapılandırarak etkinlik kanalını yapılandırırız. Ayrıca, minimum bir aralık belirleyebilirsiniz. Bu, etkinlik kanalınızın kısa süre içinde aynı etkinlikle dolup taşmasını önler.
İşleme sonrası için Cloud Functions işlevini seçme
- Yan menüyü açmak için uygulama grafiğinizde veri işleme düğümünü(doluluk analizi) tıklayın.
- Son işlem açılır listesinde Cloud Functions'inizi (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İNİ AYARLA"yı tıklayın.
- Açılır menüden Pub/Sub konunuzu seçin.
- (isteğ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ı kullanmanın son adımı uygulamayı dağıtmaktır.
- Vertex AI Vision kontrol panelinin Uygulamalar sekmesini açın. Uygulamalar sekmesine gidin
- Listede trafik uygulamasının yanındaki Grafiği göster'i seçin.
- Uygulama grafiği oluşturucu sayfasında Dağıt düğmesini tıklayın.
- Aşağıdaki 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 aldıktan sonra, doluluk analizi modeli ek açıklama çıktıktan sonra Cloud Functions işlevi etkinlik oluşturur. 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, alma aboneliğiniz olduğu varsayılmaktadır.
- Projenizdeki Pub/Sub aboneliği listesini açın ve ilgili aboneliği bulun. Pub/Sub abonelik listesi sayfasına gidin
- "Mesaj" sekmesine gidin.
- "Çek" düğmesini tıklayın.
- Mesajınızı tabloda görüntüleyin.
Alternatif olarak, kullanıcı arayüzü olmadan mesaj almayı da öğrenebilirsiniz. Abonelik sayfasına gidin
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 bildirimde bulunmak için burayı tıklayın