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ề height
và width
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
- hướng dẫn Colab Đào tạo lại Trình phân loại hình ảnh ,
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ề height
và width
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 height
và width
. 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.