Blog

[Chia sẻ kỹ thuật] Dùng Google Vision API phân biệt mực ống, mực lá, mực nang và mực squid chỉ trong một giây, không còn bị hớ khi đi chợ

Lần này mình muốn dùng Google Vision API xây dựng một mô hình nhận diện hình ảnh để phân biệt mực ống, mực lá, mực nang và mực squid, rất hợp với các mẹ không rành Machine Learning nhưng vẫn phải đi chợ. Vision API là dịch vụ của Google giúp những người không tự xây dựng được mô hình Machine Learning cũng có thể dễ dàng tạo một bộ phân loại hình ảnh.

Dùng Google Vision API phân biệt mực ống, mực lá, mực nang và mực squid trong một giây

Lần này mình muốn dùng Google Vision API xây dựng một mô hình nhận diện hình ảnh để phân biệt mực ống (neritic squid), mực lá, mực nang và mực squid, rất hợp với các mẹ không rành Machine Learning nhưng vẫn phải đi chợ. (Mình biết giao của hai nhóm này nhiều khả năng là null.)

Không dài dòng nữa, Vision API là dịch vụ của Google giúp những người không tự xây dựng được mô hình Machine Learning cũng có thể dễ dàng tạo một bộ phân loại hình ảnh.

Nếu muốn tìm hiểu về Machine Learning, bạn có thể đọc bài này.

Bài thực hành lần này gồm khoảng các bước sau:

  1. Đăng ký dự án GCP và bật GCP AutoML
  2. Thu thập hình ảnh của các loài thân mềm mười tua này
  3. Tạo một storage bucket trên GCP và tải ảnh lên
  4. Mở trang AutoML, động vài ngón tay là có mô hình

Đơn giản quá phải không?

Trước khi bắt đầu, mình khuyên mọi người nên tìm hiểu sự khác nhau giữa mực ống, mực lá, mực nang, mực squid và bạch tuộc. Hãy xem video này.

Được rồi! Bước một: đăng ký GCP. Phần này mọi người cứ xem video này và làm theo từng bước.

Đăng ký GCP xong, hãy vào trang AutoML để kiểm tra API đã được bật (Enable) chưa.

Xong rồi thì lên Google tải một ít ảnh mực ống, mực lá… và lưu riêng vào các thư mục đã tạo sẵn. Cấu trúc thư mục như sau:

seafood 
- cuttlefish        
- neritic        
- softneritic        
- squid        
- octopus

‍

  • cuttlefish là mực nang
  • neritic là mực ống (gồm cả mực ống nhỏ)
  • softneritic là mực lá
  • squid là mực squid (loại thường dùng làm mực khô)
  • octopus là bạch tuộc

‍

Khi tải ảnh, mình gặp một vấn đề: quá nhiều ảnh là món đã nấu chín, điều này sẽ ảnh hưởng đến hiệu quả học của mô hình. Vì vậy mình đã chọn lọc một số ảnh, ai muốn làm theo thì tải về ở đây nhé!

Sau khi giải nén, bạn sẽ thấy năm thư mục đã có sẵn ảnh, cùng với một file index.csv và test.py.

Nội dung index.csv như sau:

‍

gs://first-850611-vcm/seafood/cuttlefish/0_demo.jpg,cuttlefish
gs://first-850611-vcm/seafood/cuttlefish/1_demo.jpg,cuttlefish
gs://first-850611-vcm/seafood/cuttlefish/2_demo.jpg,cuttlefish
gs://first-850611-vcm/seafood/cuttlefish/3_demo.jpg,cuttlefish
...

‍

Đây là file lát nữa chúng ta sẽ đưa cho AutoML.

Còn test.py là file Python mình viết để sắp xếp ảnh đã tải và tạo ra index.csv.

Nếu bạn đã tải file nén của mình, chúc mừng, bạn đã xong một nửa rồi!

Bước ba, chúng ta tạo một bucket trong GCP Storage, tên bắt buộc phải là

<your-project-id>-vcm
Trang tạo Bucket của Google Cloud Storage, nơi nhập tên và chọn khu vực cùng tùy chọn lưu trữ.

Ví dụ, bucket mình tạo có tên first-850611-vcm.

Tạo xong, trong first-850611-vcm hãy tạo thêm một thư mục tên seafood, rồi tải cuttlefish, neritic, softneritic, squid, octopus và index.csv lên thư mục seafood.

Đến đây là xong bước ba!

Bước cuối, mở trang AutoML, chọn tên dự án của bạn ở góc trên bên phải và nhấn Get started with AutoML.

Trang khởi đầu của Google Cloud AutoML Vision, chọn dự án và bắt đầu xây dựng mô hình tùy chỉnh.

Tiếp theo nhấn NEW DATASET ở phía trên để thêm dữ liệu cần học.

Trang tập dữ liệu của AutoML Vision, khung đỏ đánh dấu nút “NEW DATASET” để tạo tập dữ liệu huấn luyện mới.

Nhập Dataset name, đặt tên gì cũng được, miễn bạn nhận ra là được.

Sau đó chọn Select a CSV và nhập

gs://<your-project-id>-vcm/seafood/index.csv

‍

Ví dụ như mình sẽ nhập

gs://first-850611-vcm/seafood/index.csv

‍

Rồi nhấn CREATE DATASET và chờ dữ liệu huấn luyện tải lên.

Trang tạo tập dữ liệu của AutoML Vision: nhập tên và chỉ định file nhãn trên đám mây để nhập dữ liệu huấn luyện hải sản.

Tải lên xong, màn hình sẽ hiển thị ảnh và nhãn chúng ta sẽ huấn luyện!

Tiếp theo nhấn TRAIN ở phía trên để bắt đầu học.

Trang tập dữ liệu huấn luyện của AutoML Vision hiển thị nhiều ảnh mực với nhãn squid, cho thấy dữ liệu gắn nhãn đã được nhập và sẵn sàng huấn luyện.

Hệ thống sẽ cảnh báo kiểu như: ảnh của chúng ta ít quá đấy~

Là kỹ sư, thắng thì xông lên, thua thì rút, nhưng chuyện này thì chẳng có gì phải sợ, cứ huấn luyện thôi. Cùng dũng cảm nhấn START TRAINING nào.

Trang huấn luyện mô hình thị giác của Google báo mỗi nhãn chưa đủ ảnh, chuẩn bị nhấn nút bắt đầu huấn luyện.

‍

Ở Training budget chọn gói free, rồi nhấn START.

Trang huấn luyện Google AutoML Vision cảnh báo thiếu ảnh và hiển thị cửa sổ thiết lập mô hình mới; chọn ngân sách huấn luyện miễn phí là có thể bắt đầu.
AutoML Vision hiển thị tiến độ huấn luyện mô hình phân loại hải sản, kèm thời gian huấn luyện dự kiến và tùy chọn hủy.

Sau một hồi chờ đợi dài, khi model đã huấn luyện xong, nhấn PREDICT ở phía trên để kiểm tra kết quả học của model.

Chúng ta sẽ lần lượt tải lên một ảnh mực ống và một ảnh mực squid để model nhận diện.

Nhiều con mực xếp trong rổ nhựa trắng, là ảnh mẫu tải lên để kiểm tra khả năng nhận diện hải sản của mô hình.
Đây là mực ống
Ảnh chụp ngang một con mực ống, làm mẫu kiểm tra mô hình Google Vision API nhận diện mực ống.
Đây là mực squid

Kết quả dự đoán của model như hình dưới đây

Trang kiểm tra PREDICT của Google AutoML Vision hiển thị nhãn nhận diện và điểm tin cậy sau khi tải ảnh mực ống lên.
Màn hình dự đoán của mô hình AutoML Vision hiển thị kết quả nhận diện ảnh mực là squid, điểm tin cậy 0,982.

Có thể thấy, Google thật sự quá đỉnh!!!!!!!!!!!

Vậy còn cần kỹ sư Machine Learning làm gì nữa? Kỹ sư Machine Learning nghỉ việc đi bán cá hết thôi QQ

Thôi được! Phải công nhận Vision AutoML rất mạnh, chỉ với lượng ảnh ít ỏi như vậy mà vẫn học chính xác đến thế.

Thứ thú vị thế này không thể dừng ở đây. Phần sau chúng ta sẽ tìm cách kết nối API của model này để các mẹ bỉm sữa thật sự dùng được, không còn sợ bị mẹ chồng mắng vì mua nhầm mực squid thay cho mực ống, trở thành vũ khí tối thượng giải quyết mâu thuẫn mẹ chồng nàng dâu!!

Quảng cáo một chút:

Nếu doanh nghiệp của bạn cần bất kỳ tính năng nào tích hợp Machine Learning trên chatbot LINE, như nhận diện hình ảnh, nhận diện giọng nói hay thậm chí nhận diện video, hãy gửi email đến địa chỉ dưới đây để được tư vấn.

service@oakmega.com

Có thể bạn sẽ thích

Dùng Scikit học xu hướng chỉ số chứng khoán Đài Loan
2019-04-06

Thực hành Machine Learning: Dùng Scikit học xu hướng chỉ số chứng khoán Đài Loan (Phần 1) – Machine Learning 101

Machine learning là một phương pháp phân tích thống kê. Nói đơn giản, các bài toán machine learning có thể xử lý được chia thành bốn nhóm lớn: phân loại (classification), hồi quy (regression), phân cụm (clustering) và rút trích quy luật (Rule Extraction).

Khan LeeCTO
Cài đặt Raspberry Pi không cần màn hình
2019-03-12

[Chia sẻ kỹ thuật] Cài đặt Raspberry Pi không cần màn hình — Headless Raspberry Pi Installation

Giới thiệu Raspberry Pi: Raspberry Pi là máy tính đơn bo mạch chạy Linux. Tuy chỉ nhỏ gọn một bo mạch nhưng nó có sẵn rất nhiều cổng kết nối như USB, HDMI, camera, mô-đun Wi-Fi. Hệ sinh thái phát triển cũng rất đầy đủ, có thể dùng để làm rất nhiều thứ. Lần này mình mua một chiếc Echo Dot và định kết nối với một số thiết bị hồng ngoại trong nhà, nên lôi chiếc Raspberry Pi 3 mua từ trước ra vọc.

Khan LeeCTO
Phân khúc người dùng trên chatbot LINE của Kha Văn Triết
2019-03-11

[Chia sẻ kỹ thuật] Bầu cử đã qua, nói về cách phân khúc người dùng trên chatbot LINE của Kha Văn Triết

Whisky còn phân khúc được, sao KP lại không phân khúc trên LINE!? Thế là chúng tôi có “bác Kha” kiểu Islay, “thị trưởng Kha” kiểu Speyside và “giáo sư Kha” kiểu Campbeltown. Để làm chatbot này, chúng tôi phải vượt qua vài vấn đề: lưu lượng truy cập đột biến khổng lồ vốn có của thị trưởng, xây dựng đa dạng mô-đun ngữ nghĩa và vận hành theo phân khúc.

Khan LeeCTO
Liên hệ

Bắt đầu chuyển đổi số với AI ngay hôm nay.

Họ đã chọn OakMega