Học chuyển giao cho các mô hình phát hiện đối tượng 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ài đăng này là bài thứ hai trong loạt bài về các thuật toán tích hợp mới trong SageMaker. bên trong bài viết đầu tiên, chúng tôi đã trình bày cách SageMaker cung cấp thuật toán tích hợp để phân loại hình ảnh. Hôm nay, chúng tôi thông báo rằng SageMaker cung cấp thuật toán tích hợp mới để phát hiện đối tượng bằng TensorFlow. Thuật toán học có giám sát này hỗ trợ học chuyển giao cho nhiều mô hình được đào tạo trước có sẵn trong TensorFlow. Nó lấy hình ảnh làm đầu vào và xuất ra các đối tượng có trong hình ảnh cùng với các hộp giới hạn. 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 phương pháp 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 in Xưởng sản xuất Amazon SageMaker. Để biết thêm thông tin, hãy tham khảo Tensorflow phát hiện đối tượng và sổ ghi chép ví dụ Giới thiệu về SageMaker Tensorflow – Phát hiện đối tượng.

Tính năng phát hiện đối tượng bằng TensorFlow trong SageMaker cung cấp khả năng học chuyển 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 huấn luyện, một đầu phát hiện đối tượng được khởi tạo ngẫu nhiên mới sẽ thay thế đầu hiện có của mô hình TensorFlow. Toàn bộ mạng, bao gồm cả mô hình được đào tạo trước hoặc chỉ lớp trên cùng (đầu phát hiện đối tượng) có thể được tinh chỉnh trên dữ liệu huấn luyện mới. Trong chế độ học chuyển giao này, bạn có thể đạt được mục đích đà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át hiện đối tượng TensorFlow mới

Phần này mô tả cách sử dụng thuật toán phát hiện đối tượng 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 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 mô hình FPN ResNet50 V1 được xác định bởi model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 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á của SageMaker Python SDK, bạn cần tìm nạp URI hình ảnh Docker, URI tập lệnh huấn luyện 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 đào tạo 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ố mô hình. Lưu ý rằng URI hình ảnh Docker và URI tập lệnh huấn luyện đều giống nhau đối với tất cả các mô hình phát hiện đối tượng TensorFlow. URI mô hình được đào tạo trước 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 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_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8", "*"
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-tensorflow-od-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_od_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"

Chúng tôi cung cấp Tập dữ liệu PennFudanPed làm tập dữ liệu mặc định để tinh chỉnh các mô hình. Bộ dữ liệu bao gồm hình ảnh của người đi bộ. Đ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:

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

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_od_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át hiện đối tượng SageMaker TensorFlow mới để học chuyển trên tập dữ liệu tùy chỉnh, hãy triển khai mô hình 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 như không cần tinh chỉnh trước trên tập dữ liệu tùy chỉnh, hãy xem sổ ghi chép mẫu sau: Giới thiệu về SageMaker TensorFlow – Phát hiện đối tượng.

Giao diện đầu vào/đầu ra cho thuật toán phát hiện đối tượng 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 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 chứa hình ảnh thư mục con và một tập tin annotations.json.
  • Đầu ra - Có hai đầu ra. Đầu tiên là một mô hình được tinh chỉnh, có thể được triển khai để suy luận hoặc đào tạo thêm bằng cách sử dụng đào tạo gia tăng. Thứ hai là một tệp ánh xạ các chỉ mục lớp tới nhãn lớp; cái này được lưu cùng với mô hình.

Thư mục đầu vào sẽ giống như ví dụ sau:

input_directory
      | -- images
            |--abc.png
            |--def.png
      |--annotations.json

Sản phẩm annotations.json tập tin nên có thông tin cho bounding_boxes và nhãn lớp của chúng. Nó phải có một từ điển với các phím "images""annotations". Giá trị cho "images" khóa phải là danh sách các mục, một mục cho mỗi hình ảnh của biểu mẫu {"file_name": image_name, "height": height, "width": width, "id": image_id}. Giá trị của "annotations" khóa phải là danh sách các mục, một mục cho mỗi hộp giới hạn của biểu mẫu {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

Suy luận với thuật toán phát hiện đối tượng 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 hộp, lớp dự đoán và điểm cho mỗi dự đoán. Mô hình phát hiện đối tượng TensorFlow xử lý một hình ảnh cho mỗi yêu cầu và chỉ xuất ra một dòng trong JSON. Sau đây là ví dụ về phản hồi trong JSON:

accept: application/json;verbose

{"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], "classes":[classidx1, class_idx2,...], "scores":[score_1, score_2,...], "labels": [label1, label2, ...], "tensorflow_model_output":}

If accept được thiết lập để application/json, thì mô hình chỉ xuất ra các hộp, lớp và điểm được dự đoán. Để biết thêm chi tiết về đào tạo và suy luận, hãy xem sổ ghi chép mẫu Giới thiệu về SageMaker TensorFlow – Phát hiện đối tượng.

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 tính năng phát hiện đối tượng SageMaker TensorFlow và bất kỳ thuật toán tích hợp nào khác chỉ bằng vài cú nhấp chuột thông 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 huấn luyện và triển khai các thuật toán tích hợp cũng như các mô hình được huấn luyện trước từ nhiều khung 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à nhiều dịch vụ AWS khác để giải quyết trường hợp sử dụng được nhắm mục tiêu.

Sau đây là hai video cho thấy cách bạn có thể tái tạo cùng một quy trình tinh chỉnh và triển khai mà chúng tôi vừa trải qua với một vài cú nhấp chuột qua giao diện người dùng JumpStart.

Tinh chỉnh mô hình được đào tạo trước

Đây là quá trình tinh chỉnh mô hình phát hiện đối tượng được đào tạo trước tương tự.

Triển khai mô hình được tinh chỉnh

Sau khi quá trình đào tạo mô hình kết thúc, bạn có thể triển khai trực tiếp mô hình tới một điểm cuối liên tục, theo thời gian thực chỉ bằng một cú nhấp chuột.

Kết luận

Trong bài đăng này, chúng tôi đã công bố ra mắt thuật toán tích hợp phát hiện đối tượng SageMaker TensorFlow. Chúng tôi đã cung cấp mã ví dụ về cách thực hiện học chuyển giao trên tập dữ liệu tùy chỉnh bằng mô hình được đào tạo trước từ TensorFlow 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ả

Chuyển giao kiến ​​thức cho các mô hình phát hiện đối tượng TensorFlow trong Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.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 tại Urbana-Champaign và là Nhà nghiên cứu sau Tiến sĩ tại Georgia Tech. Ông là nhà nghiên cứu tích cực về học máy và thiết kế thuật toán, đồng thời đã xuất bản các bài báo trong các hội nghị EMNLP, ICLR, COLT, FOCS và SODA.

Chuyển giao kiến ​​thức cho các mô hình phát hiện đối tượng TensorFlow trong Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.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.

Chuyển giao kiến ​​thức cho các mô hình phát hiện đối tượng TensorFlow trong Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.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.

Dấu thời gian:

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