在android上实现图像预处理方法

时间:2017-09-05 14:58:14

标签: python tensorflow keras dl4j nd4j

你能否建议一个库(或一个片段)在Android API 18上实现预处理Python方法(例如numpy.expand_dims()img_to_array)(基于TensorFlow Mobile部署应用程序)? Java上有类似的Python库(例如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 个答案:

答案 0 :(得分:0)

我是一个互动环节:

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中取决于该语言的数组实现。