Chữ ký chung cho hình ảnh

Trang này mô tả các chữ ký chung cần được triển khai bởi các mô-đun ở định dạng Trung tâm TF1 cho các tác vụ liên quan đến hình ảnh. (Đối với định dạng TF2 SavedModel , hãy xem API SavedModel tương tự.)

Một số mô-đun có thể được sử dụng cho nhiều nhiệm vụ (ví dụ: các mô-đun phân loại hình ảnh có xu hướng thực hiện một số trích xuất tính năng trên đường đi). Do đó, mỗi mô-đun cung cấp (1) chữ ký được đặt tên cho tất cả các tác vụ được nhà xuất bản dự đoán và (2) đầu ra chữ ký mặc định output = m(images) cho tác vụ chính được chỉ định của nó.

Véc tơ đặc trưng hình ảnh

Tóm tắt 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 để phân loại theo mô hình người tiêu dùng. (Không giống như các kích hoạt trung gian của CNN, nó không cung cấp phân tích không gian. Không giống như phân loại hình ảnh , nó loại bỏ phân loại được học bởi mô hình nhà xuất bản.)

Mô-đun để trích xuất đối tượng địa lý hình ảnh có một chữ ký mặc định ánh xạ một loạt hình ảnh với một loạt các vectơ đặc trưng. Nó có thể được sử dụng như vậy:

  module_spec = hub.load_module_spec("path/to/module")
  height, width = hub.get_expected_image_size(module_spec)
  images = ...  # A batch of images with shape [batch_size, height, width, 3].
  module = hub.Module(module_spec)
  features = module(images)   # A batch with shape [batch_size, num_features].

Nó cũng xác định chữ ký được đặt tên tương ứng.

Đặc điểm kỹ thuật chữ ký

Chữ ký được đặt tên để trích xuất các vectơ đặc điểm hình ảnh được gọi là

  outputs = module(dict(images=images), signature="image_feature_vector",
                   as_dict=True)
  features = outputs["default"]

Đầu vào tuân theo quy ước chung cho đầu vào của hình ảnh .

Từ điển đầu ra chứa đầu ra "default" của dtype float32 và shape [batch_size, num_features] . Kích batch_size giống như trong đầu vào, nhưng không được biết tại thời điểm xây dựng đồ thị. num_features là một hằng số dành riêng cho mô-đun đã biết, không phụ thuộc vào kích thước đầu vào.

Các vectơ đặc trưng này có nghĩa là có thể sử dụng để phân loại bằng một bộ phân loại chuyển tiếp nguồn cấp dữ liệu đơn giản (giống như các đối tượng tổng hợp từ lớp phức hợp trên cùng trong CNN điển hình để phân loại hình ảnh).

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 để cho người tiêu dùng mô-đun. Bản thân mô-đun không được thực hiện việc bỏ học đối với các kết quả đầu ra thực tế (ngay cả khi nó sử dụng tính năng bỏ học nội bộ ở những nơi khác).

Từ điển kết quả đầu ra có thể cung cấp các kết quả đầu ra khác, ví dụ, kích hoạt các lớp ẩn bên trong mô-đun. Các khóa và giá trị của chúng phụ thuộc vào mô-đun. Bạn nên đặt tiền tố cho các khóa phụ thuộc vào kiến ​​trúc bằng một tên kiến ​​trúc (ví dụ: để tránh nhầm lẫn giữa lớp trung gian "InceptionV3/Mixed_5c" với lớp phức hợp trên cùng "InceptionV2/Mixed_5c" ).

Phân loại hình ảnh

Tóm tắt sử dụng

Phân loại hình ảnh ánh xạ các pixel của một hình ảnh thành điểm tuyến tính (logits) cho tư cách thành viên trong các lớp của 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 đưa ra kết luận từ cách phân loại cụ thể mà mô-đun nhà xuất bản học được chứ không chỉ các tính năng cơ bản của nó (xem Vectơ đặc trưng hình ảnh ).

Mô-đun để trích xuất đối tượng địa lý hình ảnh có chữ ký mặc định ánh xạ một loạt hình ảnh tới một loạt bản ghi. Nó có thể được sử dụng như vậy:

  module_spec = hub.load_module_spec("path/to/module")
  height, width = hub.get_expected_image_size(module_spec)
  images = ...  # A batch of images with shape [batch_size, height, width, 3].
  module = hub.Module(module_spec)
  logits = module(images)   # A batch with shape [batch_size, num_classes].

Nó cũng xác định chữ ký được đặt tên tương ứng.

Đặc điểm kỹ thuật chữ ký

Chữ ký được đặt tên để trích xuất các vectơ đặc điểm hình ảnh được gọi là

  outputs = module(dict(images=images), signature="image_classification",
                   as_dict=True)
  logits = outputs["default"]

Đầu vào tuân theo quy ước chung cho đầu vào của hình ảnh .

Từ điển đầu ra chứa đầu ra "default" của dtype float32 và shape [batch_size, num_classes] . Kích batch_size giống như trong đầu vào, nhưng không được biết tại thời điểm xây dựng đồ thị. num_classes là số lớp trong phân loại, là một hằng số đã biết độc lập với kích thước đầu vào.

Đánh giá outputs["default"][i, c] cho ra điểm dự đoán thành viên của ví dụ i trong lớp có chỉ số c .

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

Từ điển kết quả đầu ra có thể cung cấp các kết quả đầu ra khác, ví dụ, kích hoạt các lớp ẩn bên trong mô-đun. Các khóa và giá trị của chúng phụ thuộc vào mô-đun. Bạn nên đặt tiền tố cho các khóa phụ thuộc vào kiến ​​trúc bằng một tên kiến ​​trúc (ví dụ: để tránh nhầm lẫn giữa lớp trung gian "InceptionV3/Mixed_5c" với lớp phức hợp trên cùng "InceptionV2/Mixed_5c" ).

Đầu vào hình ảnh

Điều này là phổ biến cho tất cả các loại mô-đun hình ảnh và chữ ký hình ảnh.

Chữ ký lấy một loạt hình ảnh làm đầu vào chấp nhận chúng dưới dạng hàng chục 4-D dày đặc của kiểu 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 pixel được chuẩn hóa thành 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ô-đun có chính xác một (hoặc một đầu vào chính) hình ảnh sử dụng tên "images" cho đầu vào này.

Mô-đun chấp nhận mọi kích batch_size và tương ứng đặt thứ nguyên đầu tiên của TensorInfo.tensor_shape thành "không xác định". Kích thước cuối cùng được cố định thành số 3 của kênh RGB. Kích thước heightwidth được cố định thành kích thước mong đợi của hình ảnh đầu vào. (Công việc trong tương lai có thể loại bỏ hạn chế đó đối với các mô-đun tích hợp đầy đủ.)

Người tiêu dùng mô-đun không nên kiểm tra hình dạng trực tiếp, nhưng lấy thông tin kích thước bằng cách gọi hub.get_eosystem_image_size () trên mô-đun hoặc thông số kỹ thuật của mô-đun và dự kiến ​​sẽ thay đổi kích thước hình ảnh đầu vào cho phù hợp (thường là trước / trong quá trình phân phối).

Để đơn giản, mô-đun TF-Hub sử dụng bố cục NHWC channels_last của Tensors và để nó cho trình tối ưu hóa đồ thị của TensorFlow để ghi lại thành NCHW channels_first nếu cần. Nó đã làm điều đó theo mặc định kể từ phiên bản TensorFlow 1.7.