Реализация методов предварительной обработки изображений на Android

Не могли бы вы предложить библиотеку (или фрагмент) для реализации предварительной обработки методов Python (например, numpy.expand_dims() или же img_to_array) на Android API 18 (для развертывания приложения на базе TensorFlow Mobile)? Существуют библиотеки, аналогичные Python на Java (например, ND4J), но для них требуется устройство или эмулятор, работающий на уровне API 21 или выше.

from keras.preprocessing.image import img_to_array
import numpy as np

    image = img_to_array(image)
    image = np.expand_dims(image, axis=0)
    image /= 255.

1 ответ

Я интерактивный сеанс:

In [168]: np.source(np.expand_dims)
In file: /usr/local/lib/python3.5/dist-packages/numpy/lib/shape_base.py

def expand_dims(a, axis):
    """
    .... docs
    """
    a = asarray(a)
    shape = a.shape
    if axis > a.ndim or axis < -a.ndim - 1:
        # 2017-05-17, 1.13.0
        warnings.warn("Both axis > a.ndim and axis < -a.ndim - 1 are "
                      "deprecated and will raise an AxisError in the future.",
                      DeprecationWarning, stacklevel=2)
    # When the deprecation period expires, delete this if block,
    if axis < 0:
        axis = axis + a.ndim + 1
    # and uncomment the following line.
    # axis = normalize_axis_index(axis, a.ndim + 1)
    return a.reshape(shape[:axis] + (1,) + shape[axis:])

Так что в основном он использует reshapeс формой, которая включает в себя размер 1 измерение в нужном месте. Это также можно было бы сделать с [:,:,np.newaxis,...] синтаксис.

Является ли все это переносимым на Java, зависит от реализации массива на этом языке.

Другие вопросы по тегам