Ứng dụng Analytics về tỷ lệ kín phòng trong Vertex AI Vision có tính năng quản lý sự kiện

1. Mục tiêu

Tổng quan

Lớp học lập trình này sẽ tập trung vào việc tạo một ứng dụng Vertex AI Vision từ đầu đến cuối để gửi sự kiện bằng tính năng quản lý sự kiện. Chúng tôi sẽ sử dụng các tính năng tích hợp 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 điều sau:

  • Đếm số lượng xe và người băng qua đường tại một vạch kẻ nhất định.
  • Đếm số lượng xe/người trong một khu vực cố định bất kỳ trên đường.
  • Phát hiện tình trạng tắc nghẽn ở bất kỳ đoạn đường nào.

Kiến thức bạn sẽ học được

  • Cách nhập 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 Occupancy Analytics 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 lưu trữ đa phương tiện của Vertex AI Vision.
  • Cách tạo một Cloud Function xử lý dữ liệu của mô hình Phân tích mức độ sử dụ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

  1. Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud. Lưu ý: Nếu bạn không có ý đị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 và loại bỏ mọi tài nguyên liên quan đến dự án đó. Chuyển đến bộ chọn dự án
  2. Đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án trên đám mây. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trên một dự án hay không.
  3. Bật Compute Engine và Vision AI API. Bật các API

Tạo một tài khoản dịch vụ:

  1. Trong bảng điều khiển 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ụ
  2. Chọn dự án của bạn.
  3. Trong trường Tên tài khoản dịch vụ, hãy nhập một tên. Bảng điều khiển Cloud sẽ điền trường Mã tài khoản dịch vụ dựa trên tên này. Trong trường Nội dung 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ụ cho hướng dẫn bắt đầu nhanh.
  4. Nhấp vào Tạo và tiếp tục.
  5. Để 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. Trong môi trường sản xuất, đừ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 một vai trò được xác định trước hoặc vai trò tuỳ chỉnh đáp ứng nhu cầu của bạn.
  6. Nhấp vào Tiếp tục.
  7. Nhấp vào Xong để hoàn tất quá trình tạo tài khoản dịch vụ. Đừng đóng cửa sổ trình duyệt. Bạn sẽ sử dụng chỉ mục này trong bước tiếp theo.

Tạo khoá tài khoản dịch vụ:

  1. Trong bảng điều khiển Cloud, hãy nhấp vào địa chỉ email của tài khoản dịch vụ mà bạn đã tạo.
  2. Nhấp vào Khoá.
  3. Nhấp vào Thêm khoá, rồi nhấp vào Tạo khoá mới.
  4. Nhấp vào Tạo. Một tệp khoá JSON sẽ được tải xuống máy tính của bạn.
  5. Nhấp vào Close (Đóng).
  6. Cài đặtkhởi động Google Cloud CLI.

† Bạn chỉ cần có vai trò này nếu sao chép một tệp video mẫu từ một nhóm Cloud Storage.

3. Nạp một tệp video để phát trực tuyến

Bạn có thể dùng vaictl để truyền trực tuyến dữ liệu video đến ứng dụng phân tích mức độ sử dụng.

Bắt đầu bằng cách kích hoạt Vision AI API trong Cloud Console

Đăng ký một luồng mới

  1. Nhấp vào thẻ luồng trên bảng điều khiển bên trái của Vertex AI Vision.
  2. Nhấp vào Đăng ký
  3. Trong phần Tên luồng, hãy nhập "traffic-stream"
  4. Trong phần khu vực, hãy nhập "us-central1"
  5. Nhấp vào đăng ký

Sẽ mất vài phút để luồng được đăng ký.

Chuẩn bị video mẫu

  1. 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 cần dùng. Bạn có thể sử dụng tệp video nguồn 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, nguồn)
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4
gsutil cp $SOURCE .

Truyền dữ liệu vào luồng của bạn

  1. Để gửi tệp video cục bộ 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 thay thế các biến sau:
  • PROJECT_ID: Mã dự án trên Google Cloud.
  • LOCATION_ID: Mã vị trí của bạn. Ví dụ: us-central1. Để biết thêm thông tin, hãy xem bài viết Vị trí trên đám mây.
  • LOCAL_FILE: Tên tệp của một tệp video cục bộ. Ví dụ: street_vehicles_people.mp4.
  • –loop flag: Không bắt buộc. Lặp lại dữ liệu tệp để mô phỏng hoạt động 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
  1. Lệnh này truyền trực tuyến một tệp video đến một luồng. Nếu bạn 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 ở chế độ nền để lệnh này tiếp tục truyền phát.
  • ( thêm nohup vào đầu và "&" vào cuối để biến lệnh này thành một tác vụ chạy ngầm)
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ạn bắt đầu thao tác truyền vaictl cho đến khi video xuất hiện trong trang tổng quan.

Sau khi có thể truyền 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 dữ liệu giao thông.

Chuyển đến thẻ Sự kiện phát trực tiếp

Hình ảnh video trực tiếp đang được phát trực tuyến trong giao diện người dùngChế độ xem trực tiếp video đang được truyền vào luồng trong bảng điều khiển Cloud của Google. Nguồn video: Elizabeth Mavor trên Pixabay (đã thêm hiệu ứng pixel hoá).

4. Tạo một Cloud Function

Chúng ta sẽ cần một Cloud Function để xử lý dữ liệu của mô hình và tạo các sự kiện sẽ được gửi sau đó thông qua kênh sự kiện.

Bạn có thể tìm hiểu thêm về Cloud Functions tại đây

Tạo một Cloud Function để theo dõi mô hình của bạn

  1. Chuyển đến trang tạo Giao diện người dùng Cloud Functions.
  2. Đặt tên hàm. Tên này sẽ được dùng sau này để tham chiếu đến Cloud Function này trong phần cài đặt Quản lý sự kiện.
  3. Đảm bảo khu vực này khớp với ứng dụng của bạn.
  4. Điều chỉnh rồi lưu chế độ cài đặt điều kiện kích hoạt.
  5. Nhấp vào nút tiếp theo để chuyển đến phần "mã". Không tải được ví dụ về cách tạo Cloud Functions
  6. Chỉnh sửa hàm trên đám mây. Sau đây là một ví dụ về 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);
}
  1. 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. Để nhận các sự kiện, một thuê bao Pub/Sub cần đăng ký nhận thông tin về thiết bị quang học đã định cấu hình.

Bạn có thể tìm hiểu thêm về chủ đề Pub/Sub tại đây và gói thuê bao tại đây.

Tạo chủ đề Pub/Sub

Để tạo một chủ đề Pub/Sub, bạn có thể sử dụng giao diện dòng lệnh gcloud: (Bạn nên thay thế SUBSCRIPTION_ID bằng giá trị thực trong 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 gcloud CLI: (Bạn nên thay thế SUBSCRIPTION_ID và TOPIC_ID bằng giá trị thực trong 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. Bạn có thể coi ứng dụng là một quy trình tự động kết nối các thành phần sau:

  • 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ột mô hình AI(Thị giác máy tính) sau khi nhập.
  • 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 một kho nội dung nghe nhìn.

Trong bảng điều khiển Cloud, một ứng dụng được biểu thị dưới dạng một biểu đồ.

Tạo một ứng dụng trống

Trước khi điền vào 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 Google Cloud Console.

  1. Chuyển đến bảng điều khiển Google Cloud.
  2. Mở thẻ Ứng dụng trên trang tổng quan Vertex AI Vision.

Chuyển đến thẻ Ứng dụng

  1. Nhấp vào nút Tạo.
  2. Nhập traffic-app làm tên ứng dụng và chọn khu vực của bạn.
  3. Nhấp vào Tạo.

Thêm các nút thành phần ứng dụng

Sau khi tạo ứng dụng trống, bạn có thể thêm 3 nút vào biểu đồ ứng dụng:

  1. Nút tiếp nhận: Tài nguyên luồng tiếp nhận dữ liệu.
  2. Nút xử lý: Mô hình phân tích mức độ sử dụng hoạt động dựa trên dữ liệu đã được nhập.
  3. Nút lưu trữ: Kho lưu trữ nội dung nghe nhìn lưu trữ các video đã xử lý và đóng vai trò là kho lưu trữ siêu dữ liệu. Các 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 do các mô hình AI suy luận.

Thêm các nút thành phần vào ứng dụng của bạn trong bảng điều khiển.

  1. Mở thẻ Ứng dụng trên trang tổng quan Vertex AI Vision. Chuyển đến thẻ Ứng dụng
  2. Trong dòng lưu lượng truy cập – ứng dụng, hãy chọn Xem biểu đồ. Thao tác này sẽ đưa bạn đến hình ảnh trực quan dạng biểu đồ của quy trình xử lý.

Thêm một nút nhập dữ liệu

  1. Để thêm một nút luồng đầu vào, hãy chọn mục Luồng trong phần Trình kết nối của trình đơn bên.
  2. Trong phần Nguồn của trình đơn Phát trực tiếp mở ra, hãy chọn Thêm luồng phát.
  3. Trong trình đơn Thêm luồng dữ liệu, hãy chọn Đăng ký luồng dữ liệu mới rồi thêm traffic-stream làm tên luồng dữ liệu.
  4. Để 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

  1. Để thêm nút mô hình đếm số người, hãy chọn mục phân tích số người trong mục Mô hình chuyên biệt của trình đơn bên.
  2. Giữ nguyên lựa chọn mặc định là Mọi ngườiXe.
  3. Thêm đường kẻ vào Đường kẻ giao nhau. Sử dụng công cụ đường nhiều điểm để vẽ các đường mà bạn cần phát hiện ô tô hoặc người rời đi hoặc đi vào.
  4. Vẽ các vùng hoạt động để đếm số người/xe trong vùng đó.
  5. Thêm chế độ cài đặt thời gian dừng để 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 tại, hệ thống không hỗ trợ đồng thời cả vùng đang hoạt động và đường kẻ vượt qua. Mỗi lần, bạn chỉ có thể sử dụng một tính năng.)

3acdb6f1e8474e07.png ce63449d601995e9.png

194c54d2bbcf7e8a.png

Thêm một nút lưu trữ dữ liệu

  1. Để thêm nút đích đến đầu ra (bộ nhớ), hãy chọn mục Kho lưu trữ nội dung nghe nhìn của Vertex AI Vision trong phần Trình kết nối của trình đơn bên.
  2. Trong trình đơn Kho lưu trữ nội dung nghe nhìn của Vertex AI Vision, hãy nhấp vào Kết nối kho lưu trữ.
  3. Trong trình đơn Kết nối kho hàng, hãy chọn Tạo kho hàng mới. Đặt tên cho kho lưu lượng truy cập là traffic-warehouse và để thời lượng TTL là 14 ngày.
  4. Nhấp vào nút Tạo để thêm kho hàng.

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 Cloud Function đã tạo trước đó để xử lý hậu kỳ. Tại đây, Cloud Function có thể tự do xử lý đầ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 kênh sự kiện của bạn bị tràn ngập cùng một sự kiện trong một khoảng thời gian ngắn.

Chọn Cloud Functions để xử lý hậu kỳ

  1. 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.
  2. Chọn Cloud Function (được xác định bằng tên hàm) trong trình đơn thả xuống Xử lý hậu kỳ.
  3. Biểu đồ ứng dụng sẽ tự động lưu các thay đổi của bạn.

Không tải được ví dụ về cách định cấu hình quá trình xử lý hậu kỳ

Định cấu hình Kênh sự kiện

  1. 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.
  2. 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. Không tải được ví dụ về Thông báo sự kiện
  3. Chọn Chủ đề Pub/Sub trong trình đơn thả xuống.
  4. (không bắt buộc) đặt khoảng thời gian/tần suất tối thiểu để xuất bản sự kiện.

Không tải được ví dụ về hộp thoại Thông báo 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 đó.

  1. Mở thẻ Ứng dụng trên trang tổng quan Vertex AI Vision. Chuyển đến thẻ Ứng dụng
  2. Chọn Xem biểu đồ bên cạnh ứng dụng lưu lượng truy cập trong danh sách.
  3. Trên trang trình tạo biểu đồ ứng dụng, hãy nhấp vào nút Triển khai.
  4. Trong hộp thoại xác nhận sau đây, hãy chọn Triển khai. Thao tác triển khai có thể mất vài phút để hoàn tất. Sau khi quá trình triển khai hoàn tất, dấu kiểm màu xanh lục sẽ xuất hiện bên cạnh các nút. ee78bbf00e5db898.png

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ý, Cloud Functions sẽ tạo sự kiện sau khi mô hình phân tích mức độ sử dụng đưa ra chú thích. Sau đó, những sự kiện đó sẽ được xuất bản dưới dạng thông báo thông qua chủ đề Pub/Sub của bạn 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ó một gói thuê bao kéo.

  1. Mở danh sách Gói thuê bao Pub/Sub trong 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
  2. Chuyển đến thẻ "Tin nhắn".
  3. Nhấp vào nút "kéo".
  4. Xem thông báo của bạn trong bảng. đã xảy ra lỗi khi tải hình ảnh thông báo của gói thuê bao pub/sub

Hoặc 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 đăng ký

10. Xin chúc mừng

Xin chúc mừng, bạn đã hoàn thành bài thực hành!

Dọn dẹp

Để tránh bị tính phí vào tài khoản Google Cloud của bạn cho các tài nguyên được dùng trong hướng dẫn này, hãy xoá dự án chứa các tài nguyên đó hoặc giữ lại dự án rồi xoá từng tài nguyên.

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

Bản khảo sát

Bạn sẽ sử dụng hướng dẫn này như thế nào?

Chỉ đọc Đọc và hoàn thành bài tập

Lớp học lập trình này có hữu ích không?

Rất hữu ích Khá hữu ích