1. Mục tiêu
Tổng quan
Lớp học lập trình này sẽ tập trung vào phần tạo ứng dụng Vertex AI Vision một cách toàn diện để gửi sự kiện có tính năng quản lý sự kiện. Chúng ta sẽ sử dụng các tính năng tích hợp sẵn của mô hình Chuyên biệt được huấn luyện trước Phân tích mức sử dụng để tạo sự kiện dựa trên việc ghi lại những thông tin sau:
- Đếm số lượng phương tiện và người băng qua đường tại một đường nhất định.
- Đếm số lượng xe/người trong bất kỳ khu vực cố định nào trên đường.
- Phát hiện ùn tắc ở bất kỳ đoạn nào trên đường.
Kiến thức bạn sẽ học được
- Cách truyền dẫn video để phát trực tuyến
- Cách tạo ứng dụng trong Vertex AI Vision
- Các tính năng có trong công cụ Phân tích tình trạng lấp đầy và cách sử dụng các tính năng đó
- Cách triển khai ứng dụng
- Cách tìm kiếm video trong kho phương tiện của Vertex AI Vision.
- Cách tạo một Hàm đám mây giúp xử lý dữ liệu của mô hình Số liệu phân tích về tỷ lệ kín phòng.
- Cách tạo chủ đề và gói thuê bao Pub/Sub.
- Cách thiết lập tính năng quản lý sự kiện để gửi sự kiện thông qua Chủ đề Pub/Sub.
2. Trước khi bắt đầu
- Trong bảng điều khiển Google Cloud, trên trang bộ chọn dự án, hãy chọn hoặc tạo một dự án Google Cloud. Lưu ý: Nếu bạn không định giữ lại các tài nguyên mà bạn tạo trong quy trình này, hãy tạo một dự án thay vì chọn một dự án hiện có. Sau khi hoàn tất các bước này, bạn có thể xoá dự án, xoá tất cả tài nguyên liên kết với dự án. Chuyển đến bộ chọn dự án
- Đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án trên Google Cloud. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trên dự án hay không.
- Bật Compute Engine và API AI thị giác. Bật API
Tạo tài khoản dịch vụ:
- Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Tạo tài khoản dịch vụ. Chuyển đến phần Tạo tài khoản dịch vụ
- Chọn dự án của bạn.
- Trong trường Tên tài khoản dịch vụ, hãy nhập tên. Bảng điều khiển Google Cloud sẽ điền vào trường Mã tài khoản dịch vụ dựa trên tên này. Trong trường Mô tả tài khoản dịch vụ, hãy nhập nội dung mô tả. Ví dụ: Tài khoản dịch vụ để bắt đầu nhanh.
- Nhấp vào Tạo và tiếp tục.
- Để cấp quyền truy cập vào dự án, hãy cấp(các) vai trò sau cho tài khoản dịch vụ của bạn: Vision AI > Vision AI Editor, Compute Engine > Compute Instance Admin (beta), Storage > Storage Object Viewer † . Trong danh sách Chọn vai trò, hãy chọn một vai trò. Đối với các vai trò khác, hãy nhấp vào Thêm vai trò khác rồi thêm từng vai trò khác. Lưu ý: Trường Vai trò ảnh hưởng đến những tài nguyên mà tài khoản dịch vụ của bạn có thể truy cập trong dự án. Bạn có thể thu hồi các vai trò này hoặc cấp thêm vai trò sau này. Trong môi trường phát hành chính thức, đừng cấp vai trò Chủ sở hữu, Người chỉnh sửa hoặc Người xem. Thay vào đó, hãy cấp vai trò được xác định trước hoặc vai trò tuỳ chỉnh đáp ứng nhu cầu của bạn.
- Nhấp vào Tiếp tục.
- Nhấp vào Xong để hoàn tất việc tạo tài khoản dịch vụ. Đừng đóng cửa sổ trình duyệt. Bạn sẽ dùng chỉ mục này trong bước tiếp theo.
Tạo khoá tài khoản dịch vụ:
- Trong bảng điều khiển Google Cloud, hãy nhấp vào địa chỉ email của tài khoản dịch vụ mà bạn đã tạo.
- Nhấp vào Keys (Phím).
- Nhấp vào Thêm khoá, rồi nhấp vào Tạo khoá mới.
- Nhấp vào Tạo. Tệp khoá JSON sẽ được tải xuống máy tính của bạn.
- Nhấp vào Close (Đóng).
- Cài đặt và khởi động Google Cloud CLI.
† Vai trò này chỉ cần thiết nếu bạn sao chép tệp video mẫu từ một bộ chứa trên Cloud Storage.
3. Truyền dẫn tệp video để phát trực tuyến
Bạn có thể sử dụng vaictl để truyền dữ liệu video đến ứng dụng phân tích về tỷ lệ kín phòng.
Bắt đầu bằng cách kích hoạt API AI cho thị giác trong Cloud Console
Đăng ký luồng mới
- Thẻ Lượt nhấp vào luồng trên bảng điều khiển bên trái của Vertex AI Vision.
- Nhấp vào Đăng ký
- Trong phần Tên luồng, hãy nhập "traffic-stream"
- Trong vùng, hãy nhập "us-central1"
- Nhấp vào đăng ký
Quá trình đăng ký sẽ mất vài phút.
Chuẩn bị một video mẫu
- Bạn có thể sao chép một video mẫu bằng lệnh gsutil cp sau đây. Thay thế biến sau:
- NGUỒN: Vị trí của tệp video sẽ sử dụng. Bạn có thể sử dụng nguồn tệp video của riêng mình (ví dụ: gs://BUCKET_NAME/FILENAME.mp4) hoặc sử dụng video mẫu (gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4 )(video có người và xe cộ, nguồn)
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4 gsutil cp $SOURCE .
Chuyển dữ liệu vào luồng
- Để gửi tệp video trên máy này đến luồng đầu vào của ứng dụng, hãy sử dụng lệnh sau. Bạn phải thực hiện các thay thế biến sau:
- PROJECT_ID: Mã dự án của bạn trên Google Cloud.
- LOCATION_ID: ID vị trí của bạn. Ví dụ: us-central1. Để biết thêm thông tin, hãy xem phần Vị trí trên đám mây.
- LOCAL_FILE: Tên tệp của tệp video cục bộ. Ví dụ: street_vehicles_people.mp4.
- –cờ vòng lặp: Không bắt buộc. Lặp lại dữ liệu tệp để mô phỏng việc truyền trực tuyến.
export PROJECT_ID=<Your Google Cloud project ID> export LOCATION_ID=us-central1 export LOCAL_FILE=street_vehicles_people.mp4
- Lệnh này truyền trực tuyến tệp video đến một luồng. Nếu bạn sử dụng cờ –loop, video sẽ được lặp lại trong luồng cho đến khi bạn dừng lệnh. Chúng ta sẽ chạy lệnh này dưới dạng một công việc trong nền để nó tiếp tục truyền trực tuyến.
- ( thêm nohup ở đầu và "&' ở cuối để biến thành công việc ở chế độ nền)
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 &
Có thể mất khoảng 100 giây từ khi bắt đầu thao tác truyền dẫn vaictl đến khi video xuất hiện trong trang tổng quan.
Sau khi có quy trình truyền dẫn sự kiện phát trực tiếp, bạn có thể xem nguồn cấp dữ liệu video trong thẻ Luồng của trang tổng quan Vertex AI Vision bằng cách chọn luồng lưu lượng truy cập.
Chế độ xem trực tiếp của video đang được truyền dẫn vào luồng trong Google Cloud Console. Ghi nhận quyền tác giả của video: Elizabeth Mavor trên Pixabay (đã thêm pixel).
4. Tạo một hàm đám mây
Chúng ta sẽ cần một Hàm đám mây để phân tích dữ liệu của mô hình và tạo các sự kiện sau này sẽ được gửi qua kênh sự kiện.
Bạn có thể tìm hiểu thêm về Hàm trên đám mây tại đây
Tạo một Chức năng trên đám mây để theo dõi mô hình của bạn
- Chuyển đến trang tạo giao diện người dùng của Hàm trên đám mây.
- Đặt tên hàm. Tên này sẽ được dùng để tham chiếu đến Hàm trên đám mây này trong phần cài đặt Quản lý sự kiện.
- Hãy đảm bảo rằng khu vực này phù hợp với đơn đăng ký của bạn.
- Điều chỉnh rồi lưu chế độ cài đặt của điều kiện kích hoạt.
- Hãy nhấp vào nút tiếp theo để chuyển đến phần "mã".
- Chỉnh sửa chức năng đám mây của bạn. Sau đây là ví dụ về môi trường thời gian chạy Node.js.
/**
* 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);
}
- Nhấp vào nút "Triển khai" để triển khai hàm.
5. Tạo chủ đề và gói thuê bao Pub/Sub
Chúng ta cần cung cấp một chủ đề Pub/Sub cho ứng dụng để ứng dụng có thể gửi sự kiện đến chủ đề đó. Để nhận các sự kiện, gói thuê bao Pub/Sub cần đăng ký nhận optic đã định cấu hình.
Bạn có thể tìm hiểu thêm về chủ đề Pub/Sub tại đây và cách đăng ký tại đây.
Tạo chủ đề Pub/Sub
Để tạo chủ đề Pub/Sub, bạn có thể sử dụng CLI gcloud: (Bạn nên thay thế SUBSCRIPTION_ID bằng giá trị thực tế từ chế độ thiết lập)
gcloud pubsub topics create TOPIC_ID
Ngoài ra, bạn có thể sử dụng Giao diện người dùng Pub/Sub
Tạo gói thuê bao Pub/Sub
Để tạo gói thuê bao Pub/Sub, bạn có thể sử dụng CLI gcloud: (Bạn nên thay thế SUBSCRIPTION_ID & TOPIC_ID bằng giá trị thực tế từ chế độ thiết lập)
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \
Ngoài ra, bạn có thể sử dụng Giao diện người dùng Pub/Sub
6. Tạo ứng dụng
Bước đầu tiên là tạo một ứng dụng xử lý dữ liệu của bạn. Ứng dụng có thể được coi là một quy trình tự động kết nối những thành phần sau:
- Quá trình nhập dữ liệu: Nguồn cấp dữ liệu video được nhập vào một luồng.
- Phân tích dữ liệu: Bạn có thể thêm mô hình AI(Tầm nhìn máy tính) sau khi nhập dữ liệu.
- Lưu trữ dữ liệu: Hai phiên bản của nguồn cấp dữ liệu video (luồng ban đầu và luồng do mô hình AI xử lý) có thể được lưu trữ trong kho phương tiện.
Trong Google Cloud Console, ứng dụng được biểu thị dưới dạng biểu đồ.
Tạo ứng dụng trống
Trước khi có thể điền sẵn biểu đồ ứng dụng, trước tiên, bạn phải tạo một ứng dụng trống.
Tạo một ứng dụng trong bảng điều khiển Google Cloud.
- Chuyển đến bảng điều khiển của Google Cloud.
- Mở thẻ Applications (Ứng dụng) trên trang tổng quan Vertex AI Vision.
- Nhấp vào nút thêm Tạo.
- Nhập traffic-app làm tên ứng dụng và chọn khu vực của bạn.
- Nhấp vào Tạo.
Thêm nút thành phần ứng dụng
Sau khi tạo ứng dụng trống, bạn có thể thêm ba nút vào biểu đồ ứng dụng:
- Điểm nhập dữ liệu: Tài nguyên luồng nhập dữ liệu.
- Processing node (Điểm xử lý): Mô hình phân tích về tình trạng sử dụng hoạt động trên dữ liệu đã nhập.
- Storage node (Điểm lưu trữ): Kho phương tiện lưu trữ các video đã xử lý và đóng vai trò là kho siêu dữ liệu. Kho siêu dữ liệu bao gồm thông tin phân tích về dữ liệu video đã nhập và thông tin suy luận của các mô hình AI.
Thêm các nút thành phần vào ứng dụng trong bảng điều khiển.
- Mở thẻ Applications (Ứng dụng) trên trang tổng quan Vertex AI Vision. Chuyển đến thẻ Ứng dụng
- Trong dòng lưu lượng truy cập vào ứng dụng, hãy chọn Xem biểu đồ. Thao tác này sẽ đưa bạn đến hình ảnh biểu đồ của quy trình xử lý.
Thêm nút truyền dẫn dữ liệu
- Để thêm nút luồng đầu vào, hãy chọn tuỳ chọn Luồng trong phần Đầu nối của trình đơn bên.
- Trong phần Nguồn của trình đơn Luồng mới mở ra, hãy chọn Thêm luồng.
- Trong trình đơn Thêm luồng, hãy chọn Đăng ký luồng mới rồi thêm luồng lưu lượng truy cập làm tên luồng.
- Để thêm luồng vào biểu đồ ứng dụng, hãy nhấp vào Thêm luồng.
Thêm nút xử lý dữ liệu
- Để thêm nút mô hình số lượng người lưu trú, hãy chọn tuỳ chọn số liệu phân tích về số người lưu trú trong mục Mô hình chuyên biệt của trình đơn bên.
- Giữ nguyên các lựa chọn mặc định là Mọi người và Xe cộ.
- Thêm dòng tại giao cắt đường. Sử dụng công cụ đường nhiều điểm để vẽ các đường mà bạn cần phát hiện xe hoặc người ra vào.
- Vẽ các vùng hoạt động để đếm người/xe trong vùng đó.
- Thêm chế độ cài đặt thời gian lưu trú để phát hiện tình trạng tắc nghẽn nếu bạn vẽ một vùng hoạt động.
- (hiện khu vực hoạt động và đường giao nhau không được hỗ trợ đồng thời. Mỗi lần chỉ sử dụng một tính năng.)
Thêm nút lưu trữ dữ liệu
- Để thêm nút đích đầu ra (bộ nhớ), hãy chọn tuỳ chọn Kho phương tiện của Vertex AI Vision trong phần Có thể kết nối của trình đơn bên.
- Trong trình đơn Kho phương tiện của Vertex AI Vision, hãy nhấp vào Kết nối kho.
- Trong trình đơn Kết nối kho, hãy chọn Tạo kho mới. Đặt tên cho kho lưu trữ là traffic-warehouse và để thời lượng TTL là 14 ngày.
- Nhấp vào nút Tạo để thêm kho.
7. Thiết lập tính năng quản lý sự kiện
Thời lượng 02:00
Chúng ta sẽ kết nối mô hình với Hàm trên đám mây đã tạo trước đó để xử lý hậu kỳ, trong đó Hàm trên đám mây có thể tự do tổng hợp đầu ra của mô hình và tạo các sự kiện phù hợp với nhu cầu của bạn. Sau đó, chúng ta sẽ định cấu hình kênh sự kiện bằng cách định cấu hình Chủ đề Pub/Sub đã tạo trước đó làm mục tiêu. Bạn cũng có thể đặt khoảng thời gian tối thiểu để tránh tình trạng kênh sự kiện bị cùng một sự kiện làm ngập lụt trong một khoảng thời gian ngắn.
Chọn Hàm đám mây để xử lý hậu kỳ
- Nhấp vào nút xử lý dữ liệu(phân tích mức sử dụng) trên biểu đồ ứng dụng để mở trình đơn bên.
- Chọn Chức năng đám mây (được xác định bằng tên hàm) trong trình đơn thả xuống Xử lý sau.
- Biểu đồ ứng dụng sẽ tự động lưu các thay đổi của bạn.
Định cấu hình Kênh sự kiện
- Nhấp vào nút xử lý dữ liệu(phân tích mức sử dụng) trên biểu đồ ứng dụng để mở trình đơn bên.
- Nhấp vào "THIẾT LẬP THÔNG BÁO SỰ KIỆN" trong phần Thông báo sự kiện.
- Chọn Chủ đề Pub/Sub của bạn trong trình đơn thả xuống.
- (không bắt buộc) đặt khoảng thời gian/tần suất tối thiểu để phát hành sự kiện.
8. Triển khai ứng dụng để sử dụng
Sau khi bạn đã tạo ứng dụng toàn diện với tất cả các thành phần cần thiết, bước cuối cùng để sử dụng ứng dụng là triển khai ứng dụng đó.
- Mở thẻ Applications (Ứng dụng) trên trang tổng quan Vertex AI Vision. Chuyển đến thẻ Ứng dụng
- Chọn Xem biểu đồ bên cạnh ứng dụng traffic-app trong danh sách.
- Trên trang trình tạo biểu đồ ứng dụng, hãy nhấp vào nút Deploy (Triển khai).
- Trong hộp thoại xác nhận sau, hãy chọn Triển khai. Quá trình triển khai có thể mất vài phút để hoàn tất. Sau khi triển khai xong, dấu kiểm màu xanh lục sẽ xuất hiện bên cạnh các nút.
9. Xác minh sự kiện/thông báo trong gói thuê bao Pub/Sub
Sau khi bạn nhập dữ liệu video vào ứng dụng xử lý, Hàm trên đám mây sẽ tạo sự kiện sau khi mô hình phân tích mức sử dụng đầu ra chú thích. Sau đó, các sự kiện đó sẽ được phát hành dưới dạng thông báo thông qua chủ đề Pub/Sub và được gói thuê bao của bạn nhận.
Các bước sau đây giả định rằng bạn có gói thuê bao kéo.
- Mở danh sách Đăng ký Pub/Sub trên dự án của bạn và tìm gói thuê bao tương ứng. Chuyển đến trang danh sách gói thuê bao Pub/Sub
- Chuyển đến thẻ "Tin nhắn".
- Nhấp vào nút "kéo".
- Xem thông báo của bạn trong bảng.
Ngoài ra, bạn có thể tìm hiểu cách nhận tin nhắn mà không cần giao diện người dùng. Chuyển đến trang gói thuê bao
10. Xin chúc mừng
Xin chúc mừng, bạn đã hoàn thành phòng thí nghiệm!
Dọn dẹp
Để tránh làm phát sinh chi phí cho các tài nguyên được sử dụng trong hướng dẫn này trong tài khoản Google Cloud của bạn, hãy xoá dự án chứa các tài nguyên đó, hoặc giữ lại dự án và xoá từng tài nguyên riêng lẻ.
Xoá dự án
Xoá từng tài nguyên
Tài nguyên
https://cloud.google.com/vision-ai/docs/overview
https://cloud.google.com/vision-ai/docs/occupancy-count-tutorial
Phản hồi
Nhấp vào đây để Gửi ý kiến phản hồi