Tham dự Hội nghị chuyên đề Women in ML vào ngày 7 tháng 12 Đăng ký ngay

TensorImage

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
lớp công khai TensorImage

TensorImage là lớp bao bọc cho đối tượng Image. Khi sử dụng các utils xử lý hình ảnh trong thư viện TFLite.support, lúc đầu, việc chuyển đổi các đối tượng hình ảnh trong các loại biến thể thành TensorImage là điều thường thấy.

Hiện tại, chỉ hình ảnh RGB được hỗ trợ và kênh A luôn bị bỏ qua.

Chi tiết về lưu trữ dữ liệu: một đối tượng TensorImage có thể có 2 nguồn chân lý tiềm năng: Bitmap hoặc TensorBuffer . TensorImage duy trì trạng thái và chỉ chuyển đổi trạng thái này sang trạng thái khác khi cần thiết. Một trường hợp sử dụng điển hình của TensorImage là trước tiên tải một hình ảnh Bitmap , sau đó xử lý nó bằng ImageProcessor , và cuối cùng lấy ByteBuffer cơ bản của TensorBuffer và đưa nó vào trình thông dịch TFLite.

QUAN TRỌNG: để đạt được hiệu suất tốt nhất, TensorImage tránh sao chép dữ liệu bất cứ khi nào có thể. Do đó, nó không sở hữu dữ liệu của mình. Người gọi không nên sửa đổi các đối tượng dữ liệu được truyền để load(Bitmap) hoặc load(TensorBuffer, ColorSpaceType) .

QUAN TRỌNG: tất cả các phương pháp không được chứng minh là an toàn cho luồng.

Người xây dựng công cộng

TensorImage ()
Khởi tạo một đối tượng TensorImage .
TensorImage ( DataType dataType)
Khởi tạo đối tượng TensorImage với kiểu dữ liệu được chỉ định.

Phương thức công khai

TensorImage tĩnh
createFrom ( TensorImage src, DataType dataType)
Tạo bản sao sâu của một TensorImage nhất định với kiểu dữ liệu mong muốn.
TensorImage tĩnh
fromBitmap (Bản đồ bitmap)
Khởi tạo đối tượng TensorImage của DataType.UINT8 bằng Bitmap .
Bản đồ bit
getBitmap ()
Trả về biểu diễn Bitmap của TensorImage này.
ByteBuffer
getBuffer ()
Trả về biểu diễn ByteBuffer của TensorImage này với kiểu dữ liệu mong đợi.
ColorSpaceType
getColorSpaceType ()
Nhận loại không gian màu của TensorImage này.
Loại dữ liệu
getDataType ()
Nhận kiểu dữ liệu của TensorImage này.
int
getHeight ()
Nhận chiều cao hình ảnh.
Hình ảnh
getMediaImage ()
Trả về biểu diễn Image của TensorImage này.
TensorBuffer
getTensorBuffer ()
Trả về biểu diễn TensorBuffer của TensorImage này với kiểu dữ liệu mong đợi.
int
getWidth ()
Nhận chiều rộng hình ảnh.
vô hiệu
tải (bộ đệm TensorBuffer , ColorSpaceType colorSpaceType)
Tải TensorBuffer chứa các giá trị pixel bằng ColorSpaceType cụ thể.
vô hiệu
tải (Bản đồ bitmap)
Tải một đối tượng hình ảnh Bitmap vào TensorImage này.
vô hiệu
tải (int [] pixel, int [] shape)
Tải một mảng int dưới dạng pixel RGB vào TensorImage này, đại diện cho các pixel bên trong.
vô hiệu
tải (float [] pixel, int [] shape)
Tải một mảng float dưới dạng pixel RGB vào TensorImage này, đại diện cho các pixel bên trong.
vô hiệu
tải (Bộ đệm ByteBuffer , ImageProperties imageProperties)
Tải một ByteBuffer chứa các giá trị pixel với các ImageProperties tính Hình ảnh cụ thể.
vô hiệu
tải (bộ đệm TensorBuffer , ImageProperties imageProperties)
Tải TensorBuffer chứa các giá trị pixel với các Thuộc tính Hình ảnh cụ ImageProperties .
vô hiệu
tải (Hình ảnh)
Tải một đối tượng Image vào TensorImage này.

Phương thức kế thừa

Người xây dựng công cộng

public TensorImage ()

Khởi tạo một đối tượng TensorImage .

Lưu ý: kiểu dữ liệu của TensorImage này là DataType.UINT8 . Sử dụng TensorImage(DataType) nếu các kiểu dữ liệu khác được ưu tiên.

public TensorImage ( DataType dataType)

Khởi tạo đối tượng TensorImage với kiểu dữ liệu được chỉ định.

Khi nhận được TensorBuffer hoặc ByteBuffer từ TensorImage này, chẳng hạn như sử dụng getTensorBuffer()getBuffer() , các giá trị dữ liệu sẽ được chuyển đổi thành kiểu dữ liệu được chỉ định.

Lưu ý: hình dạng của TensorImage không cố định. Nó có thể được điều chỉnh theo hình dạng của hình ảnh được tải vào TensorImage này.

Thông số
loại dữ liệu kiểu dữ liệu mong đợi của TensorBuffer kết quả. Loại luôn cố định trong suốt thời gian tồn tại của TensorImage . Để chuyển đổi kiểu dữ liệu, hãy sử dụng createFrom(TensorImage, DataType) để tạo bản sao và chuyển đổi kiểu dữ liệu cùng một lúc.
Ném
Ngoại lệ Đối số bất hợp pháp nếu dataType không phải là DataType.UINT8 hoặc DataType.FLOAT32

Phương thức công khai

public static TensorImage createFrom ( TensorImage src, DataType dataType)

Tạo bản sao sâu của một TensorImage nhất định với kiểu dữ liệu mong muốn.

Thông số
src TensorImage để sao chép từ
loại dữ liệu kiểu dữ liệu mong đợi của TensorImage mới được tạo
Lợi nhuận
  • một TensorImage có dữ liệu được sao chép từ src và kiểu dữ liệu là dataType

public Bitmap getBitmap ()

Trả về biểu diễn Bitmap của TensorImage này.

Đúc và kẹp số sẽ được áp dụng nếu dữ liệu được lưu trữ không phải là uint8.

Lưu ý rằng, cách đáng tin cậy để lấy pixel từ ALPHA_8 Bitmap là sử dụng copyPixelsToBuffer . Các phương thức bitmap như, `setPixels ()` và `getPixels` không hoạt động.

Quan trọng: nó chỉ mang tính chất tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo một bản sao ở đây vì lo ngại về hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Lợi nhuận
  • tham chiếu đến Bitmap trong cấu hình ARGB_8888 (kênh "A" luôn mờ) hoặc trong ALPHA_8 , tùy thuộc vào ColorSpaceType của TensorBuffer này.
Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu

public ByteBuffer getBuffer ()

Trả về biểu diễn ByteBuffer của TensorImage này với kiểu dữ liệu mong đợi.

Đúc và kẹp số sẽ được áp dụng nếu dữ liệu được lưu trữ khác với kiểu dữ liệu của TensorImage .

Quan trọng: nó chỉ mang tính chất tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo một bản sao ở đây vì lo ngại về hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Về cơ bản, nó là một đoạn ngắn của getTensorBuffer().getBuffer() .

Lợi nhuận
  • một tham chiếu đến ByteBuffer chứa dữ liệu hình ảnh
Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu

public ColorSpaceType getColorSpaceType ()

Nhận loại không gian màu của TensorImage này.

Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu

public DataType getDataType ()

Nhận kiểu dữ liệu của TensorImage này.

Lợi nhuận

public int getHeight ()

Nhận chiều cao hình ảnh.

Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu
Ngoại lệ Đối số bất hợp pháp nếu dữ liệu cơ bản bị hỏng

public Image getMediaImage ()

Trả về biểu diễn Image của TensorImage này.

Phương pháp này chỉ hoạt động khi TensorImage được hỗ trợ bởi Image , nghĩa là trước tiên bạn cần tải Image thông qua load(Image) .

Quan trọng: nó chỉ mang tính chất tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo một bản sao ở đây vì lo ngại về hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Lợi nhuận
  • tham chiếu đến Bitmap trong cấu hình ARGB_8888 (kênh "A" luôn mờ) hoặc trong ALPHA_8 , tùy thuộc vào ColorSpaceType của TensorBuffer này.
Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu

public TensorBuffer getTensorBuffer ()

Trả về biểu diễn TensorBuffer của TensorImage này với kiểu dữ liệu mong đợi.

Đúc và kẹp số sẽ được áp dụng nếu dữ liệu được lưu trữ khác với kiểu dữ liệu của TensorImage .

Quan trọng: nó chỉ mang tính chất tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo một bản sao ở đây vì lo ngại về hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Lợi nhuận
  • một tham chiếu đến TensorBuffer chứa dữ liệu hình ảnh
Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu

public int getWidth ()

Nhận chiều rộng hình ảnh.

Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu
Ngoại lệ Đối số bất hợp pháp nếu dữ liệu cơ bản bị hỏng

tải khoảng trống công khai (bộ đệm TensorBuffer , ColorSpaceType colorSpaceType)

Tải TensorBuffer chứa các giá trị pixel bằng ColorSpaceType cụ thể.

Chỉ hỗ trợ ColorSpaceType.RGBColorSpaceType.GRAYSCALE . Sử dụng load(TensorBuffer, ImageProperties) cho các loại không gian màu khác.

Lưu ý: nếu kiểu dữ liệu của buffer không khớp với kiểu dữ liệu của TensorImage này, việc ép và kẹp kiểu số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer() .

Thông số
đệm TensorBuffer sẽ được tải. Hình dạng của nó phải là (h, w, 3) hoặc (1, h, w, 3) cho hình ảnh RGB và (h, w) hoặc (1, h, w) cho hình ảnh GRAYSCALE
colorSpaceType
Ném
Ngoại lệ Đối số bất hợp pháp nếu hình dạng của bộ đệm không phù hợp với loại không gian màu hoặc nếu loại không gian màu không được hỗ trợ

tải khoảng trống công cộng (bitmap bitmap)

Tải một đối tượng hình ảnh Bitmap vào TensorImage này.

Lưu ý: nếu TensorImage có kiểu dữ liệu khác với DataType.UINT8 , ép và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer() , nơi Bitmap sẽ được chuyển đổi thành TensorBuffer .

Quan trọng: khi tải một bitmap, KHÔNG SỬA ĐỔI bitmap từ phía người gọi nữa. Đối tượng TensorImage sẽ dựa trên bitmap. Nó có thể cũng sẽ sửa đổi bitmap. Trong phương pháp này, chúng tôi thực hiện phương pháp không sao chép cho bitmap đó, bằng cách chỉ cần giữ tham chiếu của nó. Sử dụng bitmap.copy(bitmap.getConfig(), true) để tạo bản sao nếu cần.

Lưu ý: để đạt hiệu quả tốt nhất, vui lòng tải các hình ảnh có hình dạng giống nhau để tránh cấp phát lại bộ nhớ.

Thông số
bitmap
Ném
Ngoại lệ Đối số bất hợp pháp nếu bitmap không có trong ARGB_8888

public void load (int [] pixel, int [] shape)

Tải một mảng int dưới dạng pixel RGB vào TensorImage này, đại diện cho các pixel bên trong.

Lưu ý: ép và kẹp kiểu số sẽ được áp dụng để chuyển các giá trị thành kiểu dữ liệu của TensorImage này khi gọi getTensorBuffer()getBuffer() .

Thông số
điểm ảnh các pixel RGB đại diện cho hình ảnh
hình dạng hình dạng của hình ảnh, phải ở dạng (h, w, 3) hoặc ở dạng (1, h, w, 3)
Ném
Ngoại lệ Đối số bất hợp pháp nếu hình dạng không phải là (h, w, 3) cũng không phải (1, h, w, 3)

public void load (float [] pixel, int [] shape)

Tải một mảng float dưới dạng pixel RGB vào TensorImage này, đại diện cho các pixel bên trong.

Lưu ý: nếu TensorImage có kiểu dữ liệu khác với DataType.FLOAT32 , ép và kẹp kiểu số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer() .

Thông số
điểm ảnh các pixel RGB đại diện cho hình ảnh
hình dạng hình dạng của hình ảnh, phải ở dạng (h, w, 3) hoặc ở dạng (1, h, w, 3)
Ném
Ngoại lệ Đối số bất hợp pháp nếu hình dạng không phải là (h, w, 3) cũng không phải (1, h, w, 3)

tải khoảng trống công cộng (bộ đệm ByteBuffer , ImageProperties imageProperties)

Tải một ByteBuffer chứa các giá trị pixel với các ImageProperties tính Hình ảnh cụ thể.

Lưu ý: nếu kiểu dữ liệu của buffer không khớp với kiểu dữ liệu của TensorImage này, việc ép và kẹp kiểu số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer() .

Thông số
đệm
imageProperties
Ném
Ngoại lệ Đối số bất hợp pháp nếu kích thước bộ đệm nhỏ hơn kích thước hình ảnh được chỉ ra bởi chiều cao hình ảnh, chiều rộng và loại không gian màu trong ImageProperties

tải khoảng trống công cộng (bộ đệm TensorBuffer , ImageProperties imageProperties)

Tải TensorBuffer chứa các giá trị pixel với các Thuộc tính Hình ảnh cụ ImageProperties .

Hình dạng của TensorBuffer sẽ không được sử dụng để xác định chiều cao và chiều rộng của hình ảnh. Đặt thuộc tính hình ảnh thông qua ImageProperties .

Lưu ý: nếu kiểu dữ liệu của buffer không khớp với kiểu dữ liệu của TensorImage này, việc ép và kẹp kiểu số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer() .

Thông số
đệm
imageProperties
Ném
Ngoại lệ Đối số bất hợp pháp nếu kích thước bộ đệm nhỏ hơn kích thước hình ảnh được chỉ ra bởi chiều cao hình ảnh, chiều rộng và loại không gian màu trong ImageProperties

tải khoảng trống công cộng (Hình ảnh hình ảnh)

Tải một đối tượng Image vào TensorImage này.

Cách sử dụng chính của phương pháp này là tải đối tượng Image làm đầu vào mô hình vào https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage được hỗ trợ bởi Image không được ImageProcessor hỗ trợ.

* @throws IllegalArgumentException nếu ImageFormat của image không phải là YUV_420_888

Thông số
hình ảnh