简体   繁体   中英

Implementation of image pre-processing methods on android

Could you please suggest a library (or a snippet) to implement pre-processing Python methods (eg numpy.expand_dims() or img_to_array ) on Android API 18 (to deploy an app based on TensorFlow Mobile)? There are analogous libraries to Python on Java (eg ND4J), but they require device or emulator that runs API level 21 or higher.

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.

I an interactive session:

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:])

So basically it uses reshape , with a shape that includes a size 1 dimension in the right place. That could also have been done with the [:,:,np.newaxis,...] syntax.

Whether any of that is portable to Java depends on the array implementation in that language.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM