API SavingModel phổ biến cho tác vụ hình ảnh

Trang này mô tả cách TF2 SavingModels dành cho các tác vụ liên quan đến hình ảnh sẽ triển khai API SavingModel có thể tái sử dụng như thế nào. (Điều này thay thế Chữ ký chung cho hình ảnh cho định dạng TF1 Hub hiện không còn được dùng nữa .)

Vector đặc điểm hình ảnh

Tóm tắt cách sử dụng

Vectơ đặc trưng hình ảnh là một tensor 1-D dày đặc đại diện cho toàn bộ hình ảnh, thường được sử dụng bởi bộ phân loại chuyển tiếp nguồn cấp dữ liệu đơn giản trong mô hình người tiêu dùng. (Đối với các CNN cổ điển, đây là giá trị thắt cổ chai sau khi phạm vi không gian được gộp lại hoặc làm phẳng đi, nhưng trước khi phân loại xong; để biết điều đó, hãy xem phân loại hình ảnh bên dưới.)

Một SavingModel có thể tái sử dụng để trích xuất đặc điểm hình ảnh có phương thức __call__ trên đối tượng gốc để ánh xạ một loạt hình ảnh thành một loạt vectơ đặc trưng. Nó có thể được sử dụng như vậy:

obj = hub.load("path/to/model")  # That's tf.saved_model.load() after download.
images = ...  # A batch of images with shape [batch_size, height, width, 3].
features = obj(images)   # A batch with shape [batch_size, num_features].

Trong Keras, tương đương là

features = hub.KerasLayer("path/to/model")(images)

Đầu vào tuân theo quy ước chung cho đầu vào hình ảnh . Tài liệu mô hình chỉ định phạm vi cho phép về heightwidth của đầu vào.

Đầu ra là một tensor đơn của dtype float32 và hình dạng [batch_size, num_features] . batch_size giống như trong đầu vào. num_features là hằng số dành riêng cho mô-đun, không phụ thuộc vào kích thước đầu vào.

Chi tiết API

API SavingModel có thể tái sử dụng cũng cung cấp danh sách obj.variables (ví dụ: để khởi tạo khi không tải).

Một mô hình hỗ trợ tinh chỉnh cung cấp danh sách obj.trainable_variables . Nó có thể yêu cầu bạn vượt qua training=True để thực thi ở chế độ đào tạo (ví dụ: đối với bỏ học). Một số mô hình cho phép các đối số tùy chọn ghi đè các siêu tham số (ví dụ: tỷ lệ bỏ học; được mô tả trong tài liệu mô hình). Mô hình cũng có thể cung cấp danh sách obj.regularization_losses . Để biết chi tiết, hãy xem API SavingModel có thể tái sử dụng .

Trong Keras, việc này được hub.KerasLayer xử lý: khởi tạo nó bằng trainable=True để cho phép tinh chỉnh và (trong trường hợp hiếm hoi áp dụng ghi đè hparam) với arguments=dict(some_hparam=some_value, ...)) .

Ghi chú

Việc áp dụng loại bỏ đối với các tính năng đầu ra (hoặc không) nên được giao cho người tiêu dùng mô hình. Bản thân SavingModel không nên thực hiện loại bỏ trên các kết quả đầu ra thực tế (ngay cả khi nó sử dụng loại bỏ nội bộ ở những nơi khác).

Ví dụ

Các SavingModels có thể tái sử dụng cho các vectơ đặc trưng của hình ảnh được sử dụng trong

Phân loại hình ảnh

Tóm tắt cách sử dụng

Phân loại hình ảnh ánh xạ các pixel của hình ảnh thành điểm tuyến tính (log) để trở thành thành viên trong các lớp phân loại do nhà xuất bản mô-đun chọn . Điều này cho phép người tiêu dùng mô hình rút ra kết luận từ phân loại cụ thể mà mô-đun nhà xuất bản đã học được. (Để phân loại hình ảnh bằng một tập hợp các lớp mới, thay vào đó, người ta thường sử dụng lại mô hình Vector đặc điểm hình ảnh bằng một bộ phân loại mới.)

Một SavingModel có thể tái sử dụng để phân loại hình ảnh có phương thức __call__ trên đối tượng gốc để ánh xạ một loạt hình ảnh thành một loạt nhật ký. Nó có thể được sử dụng như vậy:

obj = hub.load("path/to/model")  # That's tf.saved_model.load() after download.
images = ...  # A batch of images with shape [batch_size, height, width, 3].
logits = obj(images)   # A batch with shape [batch_size, num_classes].

Trong Keras, tương đương là

logits = hub.KerasLayer("path/to/model")(images)

Đầu vào tuân theo quy ước chung cho đầu vào hình ảnh . Tài liệu mô hình chỉ định phạm vi cho phép về heightwidth của đầu vào.

logits đầu ra là một tenxơ đơn của dtype float32 và hình dạng [batch_size, num_classes] . batch_size giống như trong đầu vào. num_classes là số lớp trong phân loại, là hằng số dành riêng cho mô hình.

Giá trị logits[i, c] là điểm dự đoán tư cách thành viên của ví dụ i trong lớp có chỉ số c .

Nó phụ thuộc vào phân loại cơ bản xem những điểm số này có được sử dụng với softmax (đối với các lớp loại trừ lẫn nhau), sigmoid (đối với các lớp trực giao) hay thứ gì khác hay không. Tài liệu mô-đun nên mô tả điều này và tham khảo định nghĩa về các chỉ mục của lớp.

Chi tiết API

API SavingModel có thể tái sử dụng cũng cung cấp danh sách obj.variables (ví dụ: để khởi tạo khi không tải).

Một mô hình hỗ trợ tinh chỉnh cung cấp danh sách obj.trainable_variables . Nó có thể yêu cầu bạn vượt qua training=True để thực thi ở chế độ đào tạo (ví dụ: đối với bỏ học). Một số mô hình cho phép các đối số tùy chọn ghi đè các siêu tham số (ví dụ: tỷ lệ bỏ học; được mô tả trong tài liệu mô hình). Mô hình cũng có thể cung cấp danh sách obj.regularization_losses . Để biết chi tiết, hãy xem API SavingModel có thể tái sử dụng .

Trong Keras, việc này được hub.KerasLayer xử lý: khởi tạo nó bằng trainable=True để cho phép tinh chỉnh và (trong trường hợp hiếm hoi áp dụng ghi đè hparam) với arguments=dict(some_hparam=some_value, ...)) .

Đầu vào hình ảnh

Điều này là phổ biến đối với tất cả các loại mô hình hình ảnh.

Một mô hình lấy một loạt hình ảnh làm đầu vào chấp nhận chúng dưới dạng tenxơ 4-D dày đặc của dtype float32 và hình dạng [batch_size, height, width, 3] có các phần tử là giá trị màu RGB của các pixel được chuẩn hóa theo phạm vi [0, 1] . Đây là những gì bạn nhận được từ tf.image.decode_*() theo sau là tf.image.convert_image_dtype(..., tf.float32) .

Mô hình chấp nhận bất kỳ batch_size nào. Tài liệu mô hình chỉ định phạm vi cho phép đối với heightwidth . Kích thước cuối cùng được cố định ở 3 kênh RGB.

Các mô hình nên sử dụng bố channels_last (hoặc NHWC ) của Tensors xuyên suốt và để trình tối ưu hóa biểu đồ của TensorFlow ghi lại channels_first (hoặc NCHW ) nếu cần.