Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 有人能帮我理解这个代码吗?张流岩_Android_Tensorflow_Tensorflow Lite - Fatal编程技术网

Android 有人能帮我理解这个代码吗?张流岩

Android 有人能帮我理解这个代码吗?张流岩,android,tensorflow,tensorflow-lite,Android,Tensorflow,Tensorflow Lite,在SorFlow Lite Android应用程序中,我们必须将位图转换为字节缓冲区,用于此操作的代码为: for (int i = 0; i < DIM_IMG_SIZE_X; ++i) { for (int j = 0; j < DIM_IMG_SIZE_Y; ++j) { final int val = intValues[pixel++]; imgData.putFloat((((val >> 16) & 0xFF)-IMAGE_M

在SorFlow Lite Android应用程序中,我们必须将位图转换为字节缓冲区,用于此操作的代码为:

  for (int i = 0; i < DIM_IMG_SIZE_X; ++i) {
  for (int j = 0; j < DIM_IMG_SIZE_Y; ++j) {
    final int val = intValues[pixel++];
    imgData.putFloat((((val >> 16) & 0xFF)-IMAGE_MEAN)/IMAGE_STD);
    imgData.putFloat((((val >> 8) & 0xFF)-IMAGE_MEAN)/IMAGE_STD);
    imgData.putFloat((((val) & 0xFF)-IMAGE_MEAN)/IMAGE_STD);
  }
}
for(int i=0;i>16)和0xFF)-图像平均值/图像标准值);
imgData.putFloat(((val>>8)和0xFF)-图像平均值/图像标准值);
imgData.putFloat(((val)和0xFF)-图像平均值/图像标准值);
}
}

有人能解释一下什么是图像和STD,以及这些代码行中发生了什么吗?

提供的代码解释如下:

for (int i = 0; i < DIM_IMG_SIZE_X; ++i) { 
for (int j = 0; j < DIM_IMG_SIZE_Y; ++j) { 
for(int i=0;i
在这里,我们创建循环,循环将在列(x轴)上迭代,然后在列(y轴)中的每个像素上迭代

  • 这里,
    IMAGE\u MEAN
    是从0到255的所有图像的所有像素值的平均值。它可能是127.5(0和255的平均值)

  • STD将是标准偏差。它是方差的平方根。请参阅

这些值用于标准化。标准化是指以数据平均值为零,标准偏差为1的方式对数据进行整理。参见。此处,公式为

x_新=(x-平均值)/std

putFloat
方法在
imgData
对象上被调用3次,因为它将RGB标准值附加到列表中。每个像素都有这3个值,这3个值是标准化和附加的3个标量,范围为0到255

  • >>运算符使用位运算从单个像素整数值中获取这3个值。您可以在internet上获取有关它们的信息
这条路径如下:

  • 逐像素读取图像

  • 从像素获取RGB值

  • 标准化3个值并将其存储在列表中

IMAGE\u MEAN
IMAGE\u STD
似乎是变量,在方法中的某个地方初始化或作为类变量初始化。如果它们都是大写,则很可能是类变量,可能是最终的,也可能是静态的。在初始化旁边的注释可能会让您更深入地了解它们的本质。(这是一个很好的例子,说明了为什么您应该始终为以后可能使用您的代码的人注释代码)