Nhận dạng ảnh mây trên "MÂY" với AutoML Vision

Trong lúc mày mò thí nghiệm công nghệ và đi nghe ngóng khắp nơi để xem có gì hay, tại GDG tháng 12-2018 vừa rồi, mình đã được giới thiệu qua về AtuoML Vision và được làm thí nghiệm với nó! Và bài viết này mình sẽ mày mò lại xem sau 1 tháng mình còn nhớ cái gì không ngoài hiệu năng của nó, đồng thời cũng giới thiệu cho các bạn 1 công cụ để tham khảo khi làm Machine Learning.

Chuẩn bị tài khoản qwiklab

Đây là bước làm khá nhanh vì qwiklab có thể đăng nhập với google không cần qua bước nào cả. Sau khi đăng nhập xong các bạn bấm "Start Lab". Hiện ra pop-up thì chỉ cần nhập mã(hoặc mua credit)

Sau khi nhập mã và enter, ở bên tay trái của các bạn sẽ hiện các thông tin tương tự như sau:

Các bạn sẽ đăng nhập vào Google Cloud Platform dựa vào tài khoản được khởi tạo trong bảng trên.

Sau khi đăng kí xong thì hãy click để:

  • Chấp nhật các điều khoản.
  • KHÔNG đặt lựa chọn khôi phục tài khoản và xác thực 2 lớp(đây là tài khoản ảo được tạo. Sau 1 tiếng sẽ tự động xóa).
  • KHÔNG đăng kí thử miễn phí. Làm đúng những bước trên thì tab Console sẽ hiện ra

(Phần khoanh đỏ là các sản phẩm khác của GCP. Nếu có dịp mình sẽ nghịch tiếp sau)

Sử dụng shell

Đây là bước quan trọng thứ 2 vì sắp tới chúng ta sẽ phải dùng rất nhiều các câu lệnh.

Trước hết, ở phía bên phải của toolbar, click vào nút sau:

Sau khi cửa sổ sau bật ra, click vào "Start Cloud Shell":

Khi việc connect đã thành công, bạn sẽ thấy hình ảnh sau đây:

Tên dự án sẽ mặc định là ID project của bạn,

gcloud đã được tích hợp sẵn ở command-line của GCP. Bạn có thể thử nó với command kiểm tra các tài khoản hoạt động:

gcloud auth list

Kết quả trả về sẽ có dạng sau

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)

Cụ thể hơn:

Credentialed accounts:
 - [email protected]

Cách để kiểm tra ID của project:

gcloud config list project

Dạng của kết quả trả về:

[core]
project = <project_ID>

Ví dụ

[core]
project = qwiklabs-gcp-44776a13dea667a6

Chuẩn bị AutoML Vision

Tại thanh Navigation menu, chọn APIs & Services > Library. Tại phần tìm kiếm gõ "Cloud AutoML API" và enter. Click để lựa chọn và enable.

Khi hiện ra thông báo ở trên là các bạn có thể tới bước tiếp theo.

Mở tab mới và vào AutoML UI. Bạn sẽ được yêu cầu đăng nhập. Hãy dùng account được tạo bởi qwiklab ở bên trên.

Sau đó bạn sẽ được yêu cầu chọn project. Chọn cái tên project của bạn và bấm "Continue".

Sau đó bấm "Set up Now". 1 lúc thôi là sẽ xong

Quay lại cửa sổ console của GCP, hãy sử dụng các command sau, thay thế <PROJECT_ID> và <QWIKLABS_USERNAME> bằng ID project của bạn và tên đăng nhập mà qwiklab đã tạo

gcloud projects add-iam-policy-binding <PROJECT_ID> \
    --member="user:<QWIKLABS_USERNAME" \
    --role="roles/automl.admin"
gcloud projects add-iam-policy-binding <PROJECT_ID> \
    --member="serviceAccount:[email protected]" \
    --role="roles/ml.admin"
gcloud projects add-iam-policy-binding <PROJECT_ID> \
    --member="serviceAccount:[email protected]" \
    --role="roles/storage.admin"
gsutil mb -p <PROJECT_ID> \
    -c regional    \
    -l us-central1 \
    gs://<PROJECT_ID>-vcm/

Nhập ảnh vào Google Cloud Storage

Vì chúng ta chỉ có 1 tiếng thí nghiệm nên chúng ta theo ví dụ này sẽ nhập 1 cái storage khác vào storage của chúng ta. Tính ra hiện tại là còn 30 phút trước khi hết giờ. Thế nên không có thời gian để custom model.

Ở GCP console, mở navigation menu và chọn Storage > Browser:

Và đây sẽ là cái kho ảnh của bạn

Tiếp, tạo 1 biến môi trường

export BUCKET=YOUR_BUCKET_NAME

Với YOUR_BUCKET_NAME là tên cái kho ảnh

Tiếp tới, dùng lệnh gsutil để nhập ảnh từ kho

gsutil -m cp -r gs://automl-codelab-clouds/* gs://${BUCKET}

Khi đã sao chép xong, hãy bấm Refresh. Các folder sẽ xuất hiện

Tạo dataset

Thực chất là khởi tạo 1 file CSV.

Chạy các câu lệnh sau:

gsutil cp gs://automl-codelab-metadata/data.csv .
sed -i -e "s/placeholder/${BUCKET}/g" ./data.csv
gsutil cp ./data.csv gs://${BUCKET}

{BUCKET}là tên cái kho ảnh của các bạn nhé

Quay lại AutoML VisionUL. Giao diện mong đợi sẽ như này

Ở trên cùng của console, click + NEW DATASET. Đặt tên dataset với "clouds". Chọn Select a CSV file on Cloud Storage và điền link file bạn vừa tạo gs://your-project-name-vcm/data.csv

Với ví dụ này thì để ô này trống nhé

Sau đó bấm nốt để tạo

Xem dữ liệu

Vì đây là dữ liệu mây nên chúng ta sẽ có 3 loại mây, mỗi loại có 20 ảnh

Nếu có ảnh nào có cảm giác sai sai, bạn có thể xóa đi

Train model

Làm sao mà gọi là ML khi không có vụ dạy học cho model =)) Hãy chuyển đến tab Train và bấm Start Training

Thôi cũng sắp hết thời gian nên các bạn để model mặc định cho mình nhờ

Vì đây là data nhỏ nên sẽ chỉ mất tầm 5 phút để train xong.

-> HƯ CẤU, TẤT CẢ LÀ HƯ CẤU! Y như lần trước thực hành thì mình còn còn 16 phút để bắt đầu train. Và train xong thì mình còn đúng 1 phút để thử kết quả. Ở DevFest GDG thì người ngồi cạnh mình còn hết thời gian cơ! Cảm giác của các nhân vật của phim In Time là đây(quảng cáo: Justin Timberlake đóng phim cũng hay phết các bạn ạ)!

Đến lúc nhận diện!

Thôi nhé. 1 phút còn lại mình chỉ chơi 1 ảnh thôi. Oải rồi.

Chuyển tới tab Predict và tải ảnh lên

Đây là ảnh thí nghiệm của mình

Và đây là kết quả

Trông có vẻ đúng phết!

À cơ mà lượng dữ liệu này nhỏ nên việc đúng cũng là dễ hiểu.

Kết luận

Như diễn giả hướng dẫn mình đánh giá thì nó khá là lâu. Cộng với qwiklab chỉ cho thí nghiệm trong vòng 1 tiếng thì chúng ta cũng cần vận may để ra được kết quả. Và diễn giả ở GDG cũng đánh giá là dùng MLKit còn hiệu quả hơn. Tuy nhiên công nghệ luôn phát triển nên dù sao đây cũng là cái option đáng cân nhắc.

Bài viết khá là giống dịch vì thực sự hướng dẫn tại trang gốc khá là chi tiết. Với chút tiếng Anh cũng có thể tự thực hành được. Tuy nhiên thì tới GDG mình mới biết đến nó nên cần có hướng dẫn.

Chúc mọi người có trải nghiệm thú vị! Viblo đi muôn nơi!

Tham khảo

https://www.qwiklabs.com/focuses/1779?locale=en&parent=catalog