图像分类模型部署在移动端,移动端对图像的处理问题影响预测结果。

1.在安卓端对图像进行归一化

public static float[] normalizeBitmap(Bitmap source,int size,float mean,float std){
        float[] output = new float[size * size * 3];

        int[] intValues = new int[source.getHeight() * source.getWidth()];
        source.getPixels(intValues, 0, source.getWidth(), 0, 0, source.getWidth(), source.getHeight());
        for (int i = 0; i < intValues.length; ++i) {
            final int val = intValues[i];
            output[i * 3] = ((val & 0xFF) - mean)/std;
            output[i * 3 + 1] = (((val & 65280) >> 8)  - mean)/std;
            output[i * 3 + 2] = (((val & 16711680 ) >> 16) - mean)/std;
        }
        return output;
    }

需要注意的是,三个output[]对应的是三个RGB通道的值,这三的值的顺序与python代码中RGB三色的顺序要一值,不然会出现预测结果部分值异常。

猜你喜欢

转载自blog.csdn.net/weixin_44139445/article/details/106077681