Chuyển giao việc học cho các mô hình phân loại hình ảnh TensorFlow trong Amazon SageMaker

Amazon SageMaker cung cấp một bộ thuật toán tích hợp, người mẫu được đào tạo trướccác mẫu giải pháp được xây dựng trước để giúp các nhà khoa học dữ liệu và các nhà thực hành học máy (ML) bắt đầu đào tạo và triển khai các mô hình ML một cách nhanh chóng. Bạn có thể sử dụng các thuật toán và mô hình này cho cả việc học có giám sát và không giám sát. Họ có thể xử lý nhiều loại dữ liệu đầu vào khác nhau, bao gồm dạng bảng, hình ảnh và văn bản.

Bắt đầu từ hôm nay, SageMaker cung cấp một thuật toán tích hợp mới để phân loại hình ảnh: Phân loại hình ảnh - TensorFlow. Nó là một thuật toán học tập có giám sát hỗ trợ học tập chuyển giao cho nhiều mô hình được đào tạo trước có sẵn trong Trung tâm TensorFlow. Nó lấy một hình ảnh làm xác suất đầu vào và đầu ra cho mỗi nhãn lớp. Bạn có thể tinh chỉnh các mô hình được đào tạo trước này bằng cách sử dụng tính năng học chuyển giao ngay cả khi không có sẵn một số lượng lớn hình ảnh đào tạo. Nó có sẵn thông qua SageMaker thuật toán tích hợp cũng như thông qua Giao diện người dùng SageMaker JumpStart trong Xưởng sản xuất Amazon SageMaker. Để biết thêm thông tin, hãy tham khảo tài liệu của nó Phân loại hình ảnh - TensorFlow và sổ ghi chép ví dụ Giới thiệu về SageMaker TensorFlow - Phân loại hình ảnh.

Phân loại hình ảnh với TensorFlow trong SageMaker cung cấp khả năng học chuyển giao trên nhiều mô hình được đào tạo trước có sẵn trong TensorFlow Hub. Theo số lượng nhãn lớp trong dữ liệu đào tạo, một lớp phân loại được gắn vào mô hình TensorFlow Hub được đào tạo trước. Lớp phân loại bao gồm lớp bỏ lớp và lớp dày đặc, là lớp được kết nối đầy đủ với bộ điều chỉnh 2 định mức được khởi tạo với các trọng số ngẫu nhiên. Việc đào tạo mô hình có các siêu tham số cho tỷ lệ bỏ học của lớp bỏ học và hệ số điều hòa L2 cho lớp dày đặc. Sau đó, toàn bộ mạng, bao gồm cả mô hình được đào tạo trước hoặc chỉ lớp phân loại trên cùng có thể được tinh chỉnh trên dữ liệu đào tạo mới. Trong chế độ học chuyển tiếp này, bạn có thể đạt được đào tạo ngay cả với tập dữ liệu nhỏ hơn.

Cách sử dụng thuật toán phân loại hình ảnh TensorFlow mới

Phần này mô tả cách sử dụng thuật toán phân loại hình ảnh TensorFlow với SDK Python của SageMaker. Để biết thông tin về cách sử dụng nó từ Studio UI, hãy xem Khởi động SageMaker.

Thuật toán hỗ trợ học chuyển giao cho các mô hình được đào tạo trước được liệt kê trong Mô hình trung tâm TensorFlow. Mỗi mô hình được xác định bởi một model_id. Đoạn mã sau đây cho thấy cách tinh chỉnh MobileNet V2 1.00 224 được xác định bởi model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 trên một tập dữ liệu đào tạo tùy chỉnh. Cho mỗi model_id, để bắt đầu công việc đào tạo SageMaker thông qua Người định giá lớp của SageMaker Python SDK, bạn cần tìm nạp URI hình ảnh Docker, URI tập lệnh đào tạo và URI mô hình được đào tạo trước thông qua các chức năng tiện ích được cung cấp trong SageMaker. URI tập lệnh huấn luyện chứa tất cả các mã cần thiết để xử lý dữ liệu, tải mô hình được đào tạo trước, đào tạo mô hình và lưu mô hình được đào tạo để suy luận. URI mô hình được đào tạo trước chứa định nghĩa kiến ​​trúc mô hình được đào tạo trước và các tham số của mô hình. Lưu ý rằng URI hình ảnh Docker và URI tập lệnh huấn luyện là giống nhau đối với tất cả các mô hình phân loại hình ảnh TensorFlow. URI của mô hình được đào tạo trước là dành riêng cho mô hình cụ thể. Các tarball mô hình được đào tạo trước đã được tải xuống trước từ TensorFlow Hub và được lưu với chữ ký mô hình thích hợp trong Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) nhóm, để công việc đào tạo chạy trong sự cô lập của mạng. Xem đoạn mã sau:

from sagemaker import image_uris, model_uris, script_uris
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
training_instance_type = "ml.p3.2xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)

# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")

# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Với các tạo tác đào tạo theo mô hình cụ thể này, bạn có thể tạo một đối tượng của Người định giá lớp học:

# Create SageMaker Estimator instance
tf_ic_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
)

Tiếp theo, để học chuyển giao trên tập dữ liệu tùy chỉnh của bạn, bạn có thể cần phải thay đổi các giá trị mặc định của siêu tham số đào tạo, được liệt kê trong Siêu tham số. Bạn có thể tìm nạp một từ điển Python của các siêu tham số này với các giá trị mặc định của chúng bằng cách gọi hyperparameters.retrieve_default, cập nhật chúng khi cần, và sau đó chuyển chúng đến lớp Công cụ ước tính. Lưu ý rằng các giá trị mặc định của một số siêu tham số là khác nhau đối với các kiểu máy khác nhau. Đối với các mô hình lớn, kích thước lô mặc định nhỏ hơn và train_only_top_layer hyperparameter được đặt thành True. Siêu tham số Train_only_top_layer xác định các thông số mô hình thay đổi trong quá trình tinh chỉnh. Nếu train_only_top_layer is True, các tham số của các lớp phân loại thay đổi và phần còn lại của các tham số không đổi trong quá trình tinh chỉnh. Mặt khác, nếu train_only_top_layer is False, tất cả các thông số của mô hình đều được tinh chỉnh. Xem đoạn mã sau:

from sagemaker import hyperparameters
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Đoạn mã sau cung cấp tập dữ liệu đào tạo mặc định được lưu trữ trong nhóm S3. Chúng tôi cung cấp tf_flowers tập dữ liệu làm tập dữ liệu mặc định để tinh chỉnh các mô hình. Tập dữ liệu bao gồm hình ảnh của năm loại hoa. Tập dữ liệu đã được tải xuống từ TensorFlow theo Giấy phép Apache 2.0.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/tf_flowers/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Cuối cùng, để khởi chạy công việc đào tạo SageMaker để tinh chỉnh mô hình, hãy gọi .fit trên đối tượng của lớp Ước tính, trong khi chuyển vị trí S3 của tập dữ liệu đào tạo:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Để biết thêm thông tin về cách sử dụng thuật toán phân loại hình ảnh SageMaker TensorFlow mới để học truyền trên tập dữ liệu tùy chỉnh, triển khai mô hình đã được tinh chỉnh, chạy suy luận trên mô hình đã triển khai và triển khai mô hình được đào tạo trước mà không cần tinh chỉnh lần đầu trên tập dữ liệu tùy chỉnh, hãy xem sổ ghi chép ví dụ sau: Giới thiệu về SageMaker TensorFlow - Phân loại hình ảnh.

Giao diện đầu vào / đầu ra cho thuật toán phân loại hình ảnh TensorFlow

Bạn có thể tinh chỉnh từng mô hình được đào tạo trước được liệt kê trong Mô hình trung tâm TensorFlow vào bất kỳ tập dữ liệu nhất định nào bao gồm các hình ảnh thuộc bất kỳ số lớp nào. Mục tiêu là giảm thiểu sai số dự đoán trên dữ liệu đầu vào. Mô hình được trả về bằng tinh chỉnh có thể được triển khai thêm để suy luận. Sau đây là hướng dẫn về cách dữ liệu đào tạo nên được định dạng để nhập vào mô hình:

  • Đầu vào - Một thư mục có bao nhiêu thư mục con bằng số lớp. Mỗi thư mục con phải có các hình ảnh thuộc lớp đó ở định dạng .jpg, .jpeg hoặc .png.
  • Đầu ra - Một mô hình tinh chỉnh có thể được triển khai để suy luận hoặc có thể được đào tạo thêm bằng cách sử dụng đào tạo gia tăng. Chữ ký tiền xử lý và hậu xử lý được thêm vào mô hình tinh chỉnh sao cho nó lấy hình ảnh .jpg thô làm đầu vào và trả về xác suất lớp. Một tệp ánh xạ các chỉ mục lớp tới nhãn lớp được lưu cùng với các mô hình.

Thư mục đầu vào sẽ giống như ví dụ sau nếu dữ liệu đào tạo chứa hình ảnh từ hai lớp: rosesdandelion. Đường dẫn S3 sẽ giống như s3://bucket_name/input_directory/. Lưu ý dấu vết / bắt buộc. Tên của các thư mục và roses, dandelionvà tên tệp .jpg có thể là bất kỳ thứ gì. Tệp ánh xạ nhãn được lưu cùng với mô hình được đào tạo trên thùng S3 ánh xạ thư mục tên hoa hồng và bồ công anh vào các chỉ mục trong danh sách xác suất lớp mà mô hình xuất ra. Ánh xạ tuân theo thứ tự bảng chữ cái của tên thư mục. Trong ví dụ sau, chỉ số 0 trong danh sách đầu ra của mô hình tương ứng với dandelionvà chỉ số 1 tương ứng với roses.

input_directory
    |--roses
        |--abc.jpg
        |--def.jpg
    |--dandelion
        |--ghi.jpg
        |--jkl.jpg

Suy luận với thuật toán phân loại hình ảnh TensorFlow

Các mô hình đã tạo có thể được lưu trữ để suy luận và hỗ trợ các định dạng hình ảnh .jpg, .jpeg và .png được mã hóa dưới dạng application/x-image loại nội dung. Hình ảnh đầu vào được thay đổi kích thước tự động. Đầu ra chứa các giá trị xác suất, nhãn lớp cho tất cả các lớp và nhãn dự đoán tương ứng với chỉ mục lớp có xác suất cao nhất, được mã hóa ở định dạng JSON. Mô hình phân loại hình ảnh TensorFlow xử lý một hình ảnh duy nhất cho mỗi yêu cầu và chỉ xuất một dòng trong JSON. Sau đây là một ví dụ về phản hồi trong JSON:

accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}

If accept được thiết lập để application/json, thì mô hình chỉ xuất ra các xác suất. Để biết thêm chi tiết về đào tạo và suy luận, hãy xem sổ tay mẫu Giới thiệu về SageMaker TensorFlow - Phân loại hình ảnh.

Sử dụng các thuật toán tích hợp sẵn của SageMaker thông qua giao diện người dùng JumpStart

Bạn cũng có thể sử dụng phân loại hình ảnh SageMaker TensorFlow và bất kỳ thuật toán tích hợp nào khác với một vài cú nhấp chuột qua giao diện người dùng JumpStart. JumpStart là một tính năng của SageMaker cho phép bạn đào tạo và triển khai các thuật toán tích hợp sẵn và các mô hình được đào tạo trước từ các khuôn khổ ML và trung tâm mô hình khác nhau thông qua giao diện đồ họa. Nó cũng cho phép bạn triển khai các giải pháp ML chính thức kết hợp các mô hình ML và các dịch vụ AWS khác nhau để giải quyết một trường hợp sử dụng được nhắm mục tiêu. Thủ tục thanh toán Chạy phân loại văn bản với Amazon SageMaker JumpStart bằng cách sử dụng TensorFlow Hub và các mô hình Khuôn mặt ôm để tìm hiểu cách sử dụng JumpStart để đào tạo một thuật toán hoặc mô hình được đào tạo trước trong một vài cú nhấp chuột.

Kết luận

Trong bài đăng này, chúng tôi đã thông báo về việc ra mắt thuật toán tích hợp phân loại hình ảnh SageMaker TensorFlow. Chúng tôi đã cung cấp mã ví dụ về cách thực hiện việc học truyền trên tập dữ liệu tùy chỉnh bằng cách sử dụng mô hình được đào tạo trước từ TensorFlow Hub bằng thuật toán này. Để biết thêm thông tin, hãy kiểm tra tài liệu hướng dẫnví dụ máy tính xách tay.


Giới thiệu về tác giả

Transfer learning for TensorFlow image classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Tiến sĩ Ashish Khetan là một nhà khoa học ứng dụng cao cấp với Các thuật toán tích hợp sẵn của Amazon SageMaker và giúp phát triển các thuật toán học máy. Ông lấy bằng Tiến sĩ tại Đại học Illinois Urbana-Champaign. Ông là một nhà nghiên cứu tích cực về học máy và suy luận thống kê, và đã xuất bản nhiều bài báo trong các hội nghị NeurIPS, ICML, ICLR, JMLR, ACL và EMNLP.

Transfer learning for TensorFlow image classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Tiến sĩ Vivek Madan là một nhà khoa học ứng dụng với Nhóm Khởi động Amazon SageMaker. Ông lấy bằng Tiến sĩ tại Đại học Illinois Urbana-Champaign và là Nhà nghiên cứu Sau Tiến sĩ tại Georgia Tech. Anh ấy là một nhà nghiên cứu tích cực về học máy và thiết kế thuật toán, và đã xuất bản các bài báo trong các hội nghị EMNLP, ICLR, COLT, FOCS và SODA.

Transfer learning for TensorFlow image classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.João Moura là Kiến trúc sư Giải pháp Chuyên gia về AI / ML tại Amazon Web Services. Ông chủ yếu tập trung vào các trường hợp sử dụng NLP và giúp khách hàng tối ưu hóa việc đào tạo và triển khai mô hình học sâu. Ông cũng là người tích cực đề xuất các giải pháp ML mã thấp và phần cứng chuyên dụng ML.

Transfer learning for TensorFlow image classification models in Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Raju Penmatcha là Kiến trúc sư Giải pháp Chuyên gia về AI / ML Cấp cao tại AWS. Anh ấy làm việc với các khách hàng giáo dục, chính phủ và tổ chức phi lợi nhuận về các dự án liên quan đến học máy và trí tuệ nhân tạo, giúp họ xây dựng các giải pháp sử dụng AWS. Khi không giúp đỡ khách hàng, anh ấy thích đi du lịch đến những nơi mới.

Dấu thời gian:

Thêm từ Học máy AWS