Huấn luyện mô hình gắn nhãn hình ảnh bằng AutoML Vision Edge

Để huấn luyện mô hình gắn nhãn hình ảnh, bạn cung cấp cho AutoML Vision Edge một bộ hình ảnh và nhãn tương ứng. AutoML Vision Edge sử dụng tập dữ liệu này để huấn luyện một mô hình mới trên đám mây. Bạn có thể dùng mô hình này để gắn nhãn hình ảnh trên thiết bị trong ứng dụng của mình. (Xem phần Tổng quan để biết thông tin chung về tính năng này.)

AutoML Vision Edge là một dịch vụ của Google Cloud. Việc sử dụng dịch vụ này phải tuân thủ Thoả thuận cấp phép của Google Cloud PlatformĐiều khoản dành riêng cho dịch vụ và thanh toán theo đó. Để biết thông tin thanh toán, hãy xem trang Định giá AutoML.

Trước khi bắt đầu

1. Tập hợp dữ liệu huấn luyện

Trước tiên, bạn cần tập hợp một tập dữ liệu huấn luyện gồm những hình ảnh được gắn nhãn. Hãy lưu ý các nguyên tắc sau:

  • Hình ảnh phải có một trong các định dạng sau: JPEG, PNG, GIF, BMP, ICO.

  • Mỗi hình ảnh phải có kích thước từ 30 MB trở xuống. Lưu ý rằng AutoML Vision Edge giảm quy mô của hầu hết hình ảnh trong quá trình xử lý trước, vì vậy, việc cung cấp hình ảnh có độ phân giải rất cao thường không mang lại lợi ích về độ chính xác.

  • Đưa vào ít nhất 10 và tốt nhất là 100 ví dụ trở lên về từng nhãn.

  • Thêm nhiều góc, độ phân giải và nền cho mỗi nhãn.

  • Dữ liệu huấn luyện phải giống nhất có thể với dữ liệu đưa ra dự đoán. Ví dụ: nếu trường hợp sử dụng của bạn liên quan đến hình ảnh mờ và có độ phân giải thấp (chẳng hạn như từ camera an ninh), thì dữ liệu huấn luyện của bạn phải bao gồm các hình ảnh mờ, có độ phân giải thấp.

  • Các mô hình do AutoML Vision Edge tạo ra được tối ưu hoá cho ảnh chụp các đối tượng trong thế giới thực. Chúng có thể không hoạt động tốt khi chụp X-quang, vẽ tay, tài liệu quét, biên nhận, v.v.

    Ngoài ra, các mô hình thường cũng không thể dự đoán nhãn mà con người không thể gán. Vì vậy, nếu người dùng không thể gán nhãn bằng cách nhìn vào hình ảnh trong 1 đến 2 giây, thì có thể mô hình đó cũng không được huấn luyện để làm việc đó.

Khi bạn đã chuẩn bị sẵn hình ảnh huấn luyện, hãy chuẩn bị hình ảnh đó để nhập vào Firebase. Bạn có 3 lựa chọn:

Cách 1: Tệp lưu trữ zip có cấu trúc

Sắp xếp các hình ảnh huấn luyện thành các thư mục, mỗi thư mục được đặt tên theo một nhãn và chứa hình ảnh ví dụ về nhãn đó. Sau đó, nén cấu trúc thư mục thành một tệp lưu trữ zip.

Tên thư mục trong tệp lưu trữ zip này có thể dài tối đa 32 ký tự ASCII và chỉ có thể chứa ký tự chữ-số và ký tự dấu gạch dưới (_).

Ví dụ:

my_training_data.zip
  |____accordion
  | |____001.jpg
  | |____002.jpg
  | |____003.jpg
  |____bass_guitar
  | |____hofner.gif
  | |____p-bass.png
  |____clavier
    |____well-tempered.jpg
    |____well-tempered (1).jpg
    |____well-tempered (2).jpg

Cách 2: Cloud Storage có chỉ mục CSV

Tải hình ảnh tập huấn lên Google Cloud Storage rồi chuẩn bị một tệp CSV liệt kê URL của từng hình ảnh cùng với nhãn chính xác cho mỗi hình ảnh (không bắt buộc). Tuỳ chọn này rất hữu ích khi sử dụng các tập dữ liệu rất lớn.

Ví dụ: tải hình ảnh của bạn lên Cloud Storage và chuẩn bị một tệp CSV như sau:

gs://your-training-data-bucket/001.jpg,accordion
gs://your-training-data-bucket/002.jpg,accordion
gs://your-training-data-bucket/003.jpg,accordion
gs://your-training-data-bucket/hofner.gif,bass_guitar
gs://your-training-data-bucket/p-bass.png,bass_guitar
gs://your-training-data-bucket/well-tempered.jpg,clavier
gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier
gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier

Hình ảnh phải được lưu trữ trong một bộ chứa thuộc dự án Google Cloud tương ứng của dự án Firebase.

Xem phần Chuẩn bị dữ liệu huấn luyện trong tài liệu về Tầm nhìn của Cloud AutoML để biết thêm thông tin về cách chuẩn bị tệp CSV.

Cách 3: Hình ảnh chưa được gắn nhãn

Gắn nhãn hình ảnh huấn luyện trong bảng điều khiển của Firebase sau khi bạn tải các hình ảnh đó lên, riêng lẻ hoặc trong tệp zip không có cấu trúc. Xem bước tiếp theo.

2. Huấn luyện mô hình

Tiếp theo, hãy huấn luyện một mô hình bằng hình ảnh của bạn:

  1. Mở trang Tập dữ liệu tầm nhìn trong bảng điều khiển Google Cloud. Chọn dự án của bạn khi được nhắc.

  2. Nhấp vào Tập dữ liệu mới, đặt tên cho tập dữ liệu, chọn loại mô hình mà bạn muốn huấn luyện và nhấp vào Tạo tập dữ liệu.

  3. Trên thẻ Import (Nhập) của tập dữ liệu, hãy tải tệp lưu trữ zip chứa các hình ảnh huấn luyện của bạn lên hoặc tệp CSV chứa các vị trí của Cloud Storage mà bạn đã tải các hình ảnh đó lên. Hãy xem phần Tập hợp dữ liệu huấn luyện của bạn.

  4. Sau khi tác vụ nhập hoàn tất, hãy sử dụng thẻ Hình ảnh để xác minh dữ liệu huấn luyện và gắn nhãn mọi hình ảnh chưa gắn nhãn.

  5. Trên thẻ Đào tạo, hãy nhấp vào Bắt đầu đào tạo.

    1. Đặt tên cho mô hình và chọn loại mô hình Edge.

    2. Định cấu hình các chế độ cài đặt huấn luyện sau đây. Các chế độ cài đặt này chi phối hiệu suất của mô hình đã tạo:

      Tối ưu hoá mô hình cho... Cấu hình mô hình sẽ sử dụng. Bạn có thể huấn luyện các mô hình nhanh hơn, nhỏ hơn nếu độ trễ thấp hoặc kích thước gói nhỏ đóng vai trò quan trọng, hoặc các mô hình chậm hơn và lớn hơn khi độ chính xác là quan trọng nhất.
      Ngân sách giờ cho nút

      Thời gian tối đa (tính bằng giờ điện toán) để huấn luyện mô hình. Thông thường, thời gian huấn luyện càng dài thì mô hình sẽ chính xác hơn.

      Xin lưu ý rằng quá trình huấn luyện có thể hoàn tất trong thời gian chưa đến thời gian đã chỉ định nếu hệ thống xác định rằng mô hình đã được tối ưu hoá và hoạt động huấn luyện bổ sung sẽ không cải thiện độ chính xác. Bạn chỉ phải trả phí cho những giờ thực sự đã sử dụng.

      Thời gian đào tạo thông thường
      Tập hợp rất nhỏ1 giờ
      500 hình ảnh2 giờ
      1.000 hình ảnh3 giờ
      5.000 hình ảnh6 giờ
      10.000 hình ảnh7 giờ
      50.000 hình ảnh11 giờ
      100.000 hình ảnh13 giờ
      1.000.000 hình ảnh18 giờ

3. Đánh giá mô hình

Khi quá trình huấn luyện hoàn tất, bạn có thể nhấp vào thẻ Đánh giá để xem các chỉ số hiệu suất của mô hình.

Một mục đích quan trọng của trang này là xác định ngưỡng tin cậy phù hợp nhất với mô hình của bạn. Ngưỡng tin cậy là độ tin cậy tối thiểu mà mô hình phải có để gán nhãn cho một hình ảnh. Bằng cách di chuyển thanh trượt Ngưỡng tin cậy, bạn có thể thấy các ngưỡng khác nhau ảnh hưởng như thế nào đến hiệu suất của mô hình. Hiệu suất của mô hình được đo lường bằng hai chỉ số: độ chính xácmức độ ghi lại.

Trong ngữ cảnh phân loại hình ảnh, độ chính xác là tỷ lệ số lượng hình ảnh được gắn nhãn chính xác với số lượng hình ảnh mà mô hình được gắn nhãn theo ngưỡng đã chọn. Khi có độ chính xác cao, mô hình sẽ ít khi gán nhãn không chính xác hơn (ít tình trạng dương tính giả hơn).

Recall (Thu hồi) là tỷ lệ số lượng hình ảnh được gắn nhãn chính xác với số lượng hình ảnh có nội dung mà mô hình đáng lẽ có thể gắn nhãn. Khi một mô hình có mức độ gọi lại cao, mô hình đó sẽ không gán bất kỳ nhãn nào ít thường xuyên hơn (ít hơn âm tính giả).

Việc bạn tối ưu hoá để đạt độ chính xác hay mức độ thu hồi sẽ tuỳ thuộc vào trường hợp sử dụng của bạn. Hãy xem Hướng dẫn dành cho người mới bắt đầu AutoML VisionHướng dẫn về học máy toàn diện – AutoML để biết thêm thông tin.

Khi bạn thấy ngưỡng tin cậy tạo ra các chỉ số mà bạn cảm thấy hài lòng, hãy lưu ý đến ngưỡng đó; bạn sẽ sử dụng ngưỡng tin cậy đó để định cấu hình mô hình trong ứng dụng của mình. (Bạn có thể sử dụng công cụ này bất cứ lúc nào để lấy giá trị ngưỡng thích hợp.)

4. Xuất bản hoặc tải mô hình xuống

Nếu hài lòng với hiệu suất của mô hình và muốn sử dụng mô hình đó trong ứng dụng, bạn có 3 lựa chọn để kết hợp: triển khai mô hình để dự đoán trực tuyến, xuất bản mô hình lên Firebase hoặc tải mô hình xuống và kết hợp mô hình đó với ứng dụng.

Triển khai mô hình

Trên thẻ Kiểm thử và sử dụng của tập dữ liệu, bạn có thể triển khai mô hình của mình để dự đoán trực tuyến, từ đó chạy mô hình của bạn trên đám mây. Tuỳ chọn này được đề cập trong tài liệu về Cloud AutoML. Các tài liệu trên trang web này đề cập đến hai lựa chọn còn lại.

Xuất bản mô hình

Bằng cách xuất bản mô hình lên Firebase, bạn có thể cập nhật mô hình mà không cần phát hành phiên bản ứng dụng mới, đồng thời có thể sử dụng Cấu hình từ xa và Thử nghiệm A/B để phân phát động nhiều mô hình cho nhiều nhóm người dùng.

Nếu chọn chỉ cung cấp mô hình bằng cách lưu trữ mô hình đó với Firebase chứ không gói trong ứng dụng của mình, thì bạn có thể giảm kích thước tải xuống ban đầu của ứng dụng. Tuy nhiên, hãy lưu ý rằng nếu mô hình không đi kèm với ứng dụng của bạn, thì mọi chức năng liên quan đến mô hình sẽ không có sẵn cho đến khi ứng dụng của bạn tải mô hình xuống lần đầu tiên.

Để xuất bản mô hình, bạn có thể sử dụng một trong hai phương pháp sau:

  • Tải mô hình TF Lite xuống từ trang Thử nghiệm và sử dụng của tập dữ liệu trong bảng điều khiển Google Cloud, rồi tải mô hình lên trang Mô hình tuỳ chỉnh của bảng điều khiển của Firebase. Đây thường là cách dễ nhất để xuất bản một mô hình duy nhất.
  • Xuất bản mô hình trực tiếp từ dự án trên Google Cloud lên Firebase bằng SDK dành cho quản trị viên. Bạn có thể sử dụng phương thức này để phát hành hàng loạt một số mô hình hoặc để giúp tạo quy trình xuất bản tự động.

Cách xuất bản mô hình bằng API quản lý mô hình của SDK dành cho quản trị viên:

  1. Cài đặt và khởi chạy SDK.

  2. Xuất bản mô hình.

    Bạn sẽ cần chỉ định giá trị nhận dạng tài nguyên của mô hình, đây là một chuỗi có dạng như trong ví dụ sau:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER Số dự án của bộ chứa Cloud Storage chứa mô hình. Đây có thể là dự án Firebase của bạn hoặc một dự án khác trên Google Cloud. Bạn có thể tìm thấy giá trị này trên trang Cài đặt của bảng điều khiển của Firebase hoặc trang tổng quan của bảng điều khiển Google Cloud.
    MODEL_ID Mã mô hình mà bạn nhận được từ AutoML Cloud API.

    Python

    # First, import and initialize the SDK.
    
    # Get a reference to the AutoML model
    source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format(
        # See above for information on these values.
        project_number,
        model_id
    ))
    
    # Create the model object
    tflite_format = ml.TFLiteFormat(model_source=source)
    model = ml.Model(
        display_name="example_model",  # This is the name you will use from your app to load the model.
        tags=["examples"],             # Optional tags for easier management.
        model_format=tflite_format)
    
    # Add the model to your Firebase project and publish it
    new_model = ml.create_model(model)
    new_model.wait_for_unlocked()
    ml.publish_model(new_model.model_id)
    

    Node.js

    // First, import and initialize the SDK.
    
    (async () => {
      // Get a reference to the AutoML model. See above for information on these
      // values.
      const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`;
    
      // Create the model object and add the model to your Firebase project.
      const model = await ml.createModel({
        displayName: 'example_model',  // This is the name you use from your app to load the model.
        tags: ['examples'],  // Optional tags for easier management.
        tfliteModel: { automlModel: automlModel },
      });
    
      // Wait for the model to be ready.
      await model.waitForUnlocked();
    
      // Publish the model.
      await ml.publishModel(model.modelId);
    
      process.exit();
    })().catch(console.error);
    

Tải xuống và gói mô hình đó với ứng dụng

Bằng cách kết hợp mô hình với ứng dụng, bạn có thể đảm bảo các tính năng học máy của ứng dụng vẫn hoạt động khi không có mô hình do Firebase lưu trữ.

Nếu bạn vừa phát hành mô hình vừa đóng gói mô hình đó với ứng dụng của mình, thì ứng dụng sẽ sử dụng phiên bản mới nhất hiện có.

Để tải mô hình của bạn xuống, hãy nhấp vào TF Lite trên trang Thử nghiệm và sử dụng của tập dữ liệu.

Các bước tiếp theo

Bây giờ, bạn đã xuất bản hoặc tải mô hình xuống, hãy tìm hiểu cách sử dụng mô hình trong các ứng dụng iOS+Android của mình.