|
【人工智能】
Android 8.1 NNAPI相关问题
发表于 2018-10-31 17:18:25
浏览:9443
|
回复:3
打印
只看该作者
[复制链接]
楼主
我尝试在RK3399上运行tensorflow-master的TF Lite Android App,读取本地图片并在Android Studio Logcat中输出结果。中途遇到一些问题,请各位不吝赐教。
一、 NNAPI在Android8.1上会被自动使用吗,还是必须设置tflite.setUseNNAPI(true)? 此外android studio3.1的Profiler并不显示GPU,该怎样确认GPU被NNAPI使用了。
二、为什么convertBitmapToByteBuffer()方法在Android7.1只耗时30ms,在Android8.1上会达到500ms? CPU或者GPU是NNAPI自动选择的吗?是否可以自己指定设备?
- <p>/** Writes Image data into a {@code ByteBuffer}. */
- private void convertBitmapToByteBuffer(Bitmap bitmap) {
- if (imgData == null) {
- return;
- }
- imgData.rewind();
- bitmap.getPixels(intValues, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
- // Convert the image to floating point.
- int pixel = 0;
- long startTime = SystemClock.uptimeMillis();
- for (int i = 0; i < getImageSizeX(); ++i) {
- for (int j = 0; j < getImageSizeY(); ++j) {
- final int val = intValues[pixel++];
- addPixelValue(val);
- }
- }
- long endTime = SystemClock.uptimeMillis();
- Log.d(TAG, "Timecost to put values into ByteBuffer: " + Long.toString(endTime - startTime));</p><p>}</p>
复制代码
- protected void addPixelValue(int pixelValue) {
- imgData.putFloat((((pixelValue >> 16) & 0xFF) - IMAGE_MEAN) / IMAGE_STD);
- imgData.putFloat((((pixelValue >> 8) & 0xFF) - IMAGE_MEAN) / IMAGE_STD);
- imgData.putFloat(((pixelValue & 0xFF) - IMAGE_MEAN) / IMAGE_STD);
- }
复制代码
|
|