Посетите симпозиум «Женщины в машинном обучении» 7 декабря Зарегистрируйтесь сейчас

TensorImage

открытый класс TensorImage

TensorImage — это класс-оболочка для объекта Image. При использовании утилит обработки изображений в библиотеке TFLite.support обычно сначала преобразуют объекты изображений в варианты типов в TensorImage.

В настоящее время поддерживаются только изображения RGB, а канал A всегда игнорируется.

Детали хранения данных: объект TensorImage может иметь 2 потенциальных источника правды: Bitmap или TensorBuffer . TensorImage поддерживает состояние и преобразует одно в другое только при необходимости. Типичный вариант использования TensorImage — сначала загрузить Bitmap изображение, затем обработать его с помощью ImageProcessor и, наконец, получить базовый ByteBuffer TensorBuffer и передать его интерпретатору TFLite.

ВАЖНО: для достижения наилучшей производительности TensorImage избегает копирования данных, когда это возможно. Следовательно, он не владеет своими данными. Вызывающие объекты не должны изменять объекты данных, которые передаются в load(Bitmap) или load(TensorBuffer, ColorSpaceType) .

ВАЖНО: не доказано, что все методы являются потокобезопасными.

Публичные конструкторы

ТензорИзображение ()
Инициализирует объект TensorImage .
TensorImage ( Тип данных Тип данных)
Инициализирует объект TensorImage с указанным типом данных.

Публичные методы

статический TensorImage
createFrom ( TensorImage src, DataType dataType)
Создает глубокую копию данного TensorImage с желаемым типом данных.
статический TensorImage
fromBitmap (Растровое изображение)
Инициализирует объект TensorImage DataType.UINT8 с помощью Bitmap .
Битовая карта
получить битмап ()
Возвращает Bitmap представление этого TensorImage .
Байтбуфер
получить буфер ()
Возвращает представление ByteBuffer этого TensorImage с ожидаемым типом данных.
ColorSpaceType
получитьColorSpaceType ()
Получает тип цветового пространства этого TensorImage .
Тип данных
получить тип данных ()
Получает тип данных этого TensorImage .
инт
получитьвысоту ()
Получает высоту изображения.
Изображение
получитьмедиаизображение ()
Возвращает представление Image этого TensorImage .
TensorBuffer
получитьTensorBuffer ()
Возвращает представление TensorBuffer этого TensorImage с ожидаемым типом данных.
инт
получитьширину ()
Получает ширину изображения.
пустота
load (буфер TensorBuffer , ColorSpaceType colorSpaceType)
Загружает TensorBuffer , содержащий значения пикселей с определенным ColorSpaceType .
пустота
загрузить (растровое изображение)
Загружает объект изображения Bitmap в этот TensorImage .
пустота
загрузка (int[] пикселей, форма int[])
Загружает массив int в виде пикселей RGB в этот TensorImage , представляя пиксели внутри.
пустота
загрузка (плавающие [] пиксели, форма int [])
Загружает массив с плавающей запятой в виде пикселей RGB в этот TensorImage , представляющий пиксели внутри.
пустота
загрузить (буфер ByteBuffer , свойства изображения imageProperties)
Загружает ByteBuffer , содержащий значения пикселей с определенными ImageProperties .
пустота
загрузка (буфер TensorBuffer , ImageProperties imageProperties)
Загружает TensorBuffer , содержащий значения пикселей с определенными ImageProperties .
пустота
загрузить (изображение изображения)
Загружает объект Image в этот TensorImage .

Унаследованные методы

Публичные конструкторы

общедоступный TensorImage ()

Инициализирует объект TensorImage .

Примечание. Тип данных этого TensorImageDataType.UINT8 . Используйте TensorImage(DataType) , если предпочтительны другие типы данных.

общедоступный TensorImage ( DataType тип данных)

Инициализирует объект TensorImage с указанным типом данных.

При получении TensorBuffer или ByteBuffer из этого TensorImage , например, с помощью getTensorBuffer() и getBuffer() , значения данных будут преобразованы в указанный тип данных.

Примечание: форма TensorImage не фиксирована. Его можно настроить в соответствии с формой изображения, загружаемого в этот TensorImage .

Параметры
тип данных ожидаемый тип данных результирующего TensorBuffer . Тип всегда фиксируется во время жизни TensorImage . Чтобы преобразовать тип данных, используйте createFrom(TensorImage, DataType) для создания копии и одновременного преобразования типа данных.
Броски
IllegalArgumentException если dataType не является ни DataType.UINT8 , ни DataType.FLOAT32

Публичные методы

общедоступный статический TensorImage createFrom ( TensorImage src, DataType dataType)

Создает глубокую копию данного TensorImage с желаемым типом данных.

Параметры
источник TensorImage для копирования из
тип данных ожидаемый тип данных вновь созданного TensorImage
Возвращает
  • TensorImage , данные которого скопированы из src , а тип данных — dataType

общедоступный статический TensorImage fromBitmap (растровое изображение Bitmap)

Инициализирует объект TensorImage DataType.UINT8 с помощью Bitmap .

Параметры
битовая карта

публичное растровое изображение getBitmap ()

Возвращает Bitmap представление этого TensorImage .

Числовое приведение и ограничение будут применяться, если сохраненные данные не uint8.

Обратите внимание, что надежный способ получить пиксели из растрового изображения ALPHA_8 — использовать copyPixelsToBuffer . Методы растрового изображения, такие как `setPixels()` и `getPixels`, не работают.

Важно: это только ссылка. НЕ ИЗМЕНЯТЬ. Мы не создаем здесь копию из соображений производительности, но если необходимы изменения, сделайте копию.

Возвращает
  • ссылка на Bitmap в конфигурации ARGB_8888 (канал "A" всегда непрозрачен) или в ALPHA_8 , в зависимости от ColorSpaceType этого TensorBuffer .
Броски
Илегалстатеексцептион если TensorImage никогда не загружает данные

публичный байтбуфер getBuffer ()

Возвращает представление ByteBuffer этого TensorImage с ожидаемым типом данных.

Числовое приведение и ограничение будут применяться, если сохраненные данные отличаются от типа данных TensorImage .

Важно: это только ссылка. НЕ ИЗМЕНЯТЬ. Мы не создаем здесь копию из соображений производительности, но если необходимы изменения, сделайте копию.

По сути, это сокращение от getTensorBuffer().getBuffer() .

Возвращает
  • ссылка на ByteBuffer , который содержит данные изображения
Броски
Илегалстатеексцептион если TensorImage никогда не загружает данные

общедоступный ColorSpaceType getColorSpaceType ()

Получает тип цветового пространства этого TensorImage .

Броски
Илегалстатеексцептион если TensorImage никогда не загружает данные

общедоступный тип данных getDataType ()

Получает тип данных этого TensorImage .

Возвращает

общедоступный интервал getHeight ()

Получает высоту изображения.

Броски
Илегалстатеексцептион если TensorImage никогда не загружает данные
IllegalArgumentException если базовые данные повреждены

общедоступное изображение getMediaImage ()

Возвращает представление Image этого TensorImage .

Этот метод работает только тогда, когда TensorImage поддерживается Image , то есть вам нужно сначала загрузить Image через load(Image) .

Важно: это только ссылка. НЕ ИЗМЕНЯТЬ. Мы не создаем здесь копию из соображений производительности, но если необходимы изменения, сделайте копию.

Возвращает
  • ссылка на Bitmap в конфигурации ARGB_8888 (канал "A" всегда непрозрачен) или в ALPHA_8 , в зависимости от ColorSpaceType этого TensorBuffer .
Броски
Илегалстатеексцептион если TensorImage никогда не загружает данные

публичный TensorBuffer getTensorBuffer ()

Возвращает представление TensorBuffer этого TensorImage с ожидаемым типом данных.

Числовое приведение и ограничение будут применяться, если сохраненные данные отличаются от типа данных TensorImage .

Важно: это только ссылка. НЕ ИЗМЕНЯТЬ. Мы не создаем здесь копию из соображений производительности, но если необходимы изменения, сделайте копию.

Возвращает
  • ссылка на TensorBuffer , который содержит данные изображения
Броски
Илегалстатеексцептион если TensorImage никогда не загружает данные

публичный интервал getWidth ()

Получает ширину изображения.

Броски
Илегалстатеексцептион если TensorImage никогда не загружает данные
IllegalArgumentException если базовые данные повреждены

public void load (буфер TensorBuffer , ColorSpaceType colorSpaceType)

Загружает TensorBuffer , содержащий значения пикселей с определенным ColorSpaceType .

Поддерживает только ColorSpaceType.RGB и ColorSpaceType.GRAYSCALE . Используйте load(TensorBuffer, ImageProperties) для других типов цветового пространства.

Примечание: если тип данных buffer не соответствует типу данных этого TensorImage , при вызове getTensorBuffer() и getBuffer() будет применяться числовое приведение и фиксация.

Параметры
буфер TensorBuffer . Его форма должна быть либо (h, w, 3), либо (1, h, w, 3) для изображений RGB, либо (h, w) или (1, h, w) для изображений GRAYSCALE.
colorSpaceType
Броски
IllegalArgumentException если форма буфера не соответствует типу цветового пространства или если тип цветового пространства не поддерживается

общедоступная недействительная загрузка (растровое изображение Bitmap)

Загружает объект изображения Bitmap в этот TensorImage .

Примечание: если TensorImage имеет тип данных, отличный от DataType.UINT8 , при вызове getTensorBuffer() и getBuffer() будет применяться числовое приведение и фиксация, где Bitmap будет преобразован в TensorBuffer .

Важно: при загрузке растрового изображения НЕ ИЗМЕНЯЙТЕ растровое изображение со стороны вызывающей стороны. Объект TensorImage будет полагаться на растровое изображение. Вероятно, это также изменит растровое изображение. В этом методе мы выполняем подход с нулевым копированием для этого растрового изображения, просто сохраняя его ссылку. Используйте bitmap.copy(bitmap.getConfig(), true) для создания копии, если это необходимо.

Примечание. Чтобы добиться максимальной производительности, загружайте изображения одинаковой формы, чтобы избежать перераспределения памяти.

Параметры
битовая карта
Броски
IllegalArgumentException если bitmap не находится в ARGB_8888

общедоступная пустая загрузка (int[] пикселей, форма int[])

Загружает массив int в виде пикселей RGB в этот TensorImage , представляя пиксели внутри.

Примечание. При вызове getTensorBuffer() и getBuffer() для преобразования значений в тип данных этого TensorImage будут применяться числовое приведение и фиксация.

Параметры
пикселей пиксели RGB, представляющие изображение
форма форма изображения должна быть либо в форме (h, w, 3), либо в форме (1, h, w, 3)
Броски
IllegalArgumentException если форма не является ни (h, w, 3), ни (1, h, w, 3)

общедоступная пустая загрузка (пиксели с плавающей точкой [], форма int [])

Загружает массив с плавающей запятой в виде пикселей RGB в этот TensorImage , представляющий пиксели внутри.

Примечание: если TensorImage имеет тип данных, отличный от DataType.FLOAT32 , при вызове getTensorBuffer() и getBuffer() будет применяться числовое приведение и фиксация.

Параметры
пикселей пиксели RGB, представляющие изображение
форма форма изображения должна быть либо в форме (h, w, 3), либо в форме (1, h, w, 3)
Броски
IllegalArgumentException если форма не является ни (h, w, 3), ни (1, h, w, 3)

общедоступная недействительная загрузка (буфер ByteBuffer , ImageProperties imageProperties)

Загружает ByteBuffer , содержащий значения пикселей с определенными ImageProperties .

Примечание: если тип данных buffer не соответствует типу данных этого TensorImage , при вызове getTensorBuffer() и getBuffer() будет применяться числовое приведение и фиксация.

Параметры
буфер
свойства изображения
Броски
IllegalArgumentException если размер буфера меньше размера изображения, указанного высотой, шириной и типом цветового пространства в ImageProperties

public void load (буфер TensorBuffer , ImageProperties imageProperties)

Загружает TensorBuffer , содержащий значения пикселей с определенными ImageProperties .

Форма TensorBuffer не будет использоваться для определения высоты и ширины изображения. Установите свойства изображения через ImageProperties .

Примечание: если тип данных buffer не соответствует типу данных этого TensorImage , при вызове getTensorBuffer() и getBuffer() будет применяться числовое приведение и фиксация.

Параметры
буфер
свойства изображения
Броски
IllegalArgumentException если размер буфера меньше размера изображения, указанного высотой, шириной и типом цветового пространства в ImageProperties

общедоступная пустая загрузка (изображение изображения)

Загружает объект Image в этот TensorImage .

Основное использование этого метода — загрузка объекта Image в качестве входных данных модели в https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage , поддерживаемый Image , не поддерживается ImageProcessor .

* @throws IllegalArgumentException, если ImageFormat image не YUV_420_888

Параметры
изображение