在 Qt 中使用 tensorflow lite

Use tensorflow lite with Qt

环境:

我想在 Qt5 中使用 tensorflow-lite,但是当我尝试导入 java 类 时出现了很多问题。但是如何下载 tensorflow-lite-gpu、tensorflow-lite-cpu 和 tensorflow-lite-support?

android 工作室用 build.gradle 中的 3 行来完成这项工作,我也尝试将这 3 行添加到 build.gradle 中。

dependencies {
    // Build off of nightly TensorFlow Lite
    implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
    implementation 'org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly'
    implementation 'org.tensorflow:tensorflow-lite-support:0.0.0-nightly'    
}

错误信息

pastebin 因为它很长

我可以通过 android studio 构建 this example 没有任何问题,我如何在 Qt 中使用 java api of tensorflow?

答案很简单,只需要在 build.gradle(from QtCreator, projects(alt+x)->other files->build.gradle)

  1. 将以下行放在 build.gradle

    的 "android" 块中
     compileOptions {
       sourceCompatibility = '1.8'
       targetCompatibility = '1.8'
     }
    
     aaptOptions {
       noCompress "tflite"
     }
    
  2. 将 build.gradle 的依赖块(不是构建脚本中的块)更改为

    dependencies {
       implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
    
       // Build off of nightly TensorFlow Lite
       implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
       implementation 'org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly'
       implementation 'org.tensorflow:tensorflow-lite-support:0.0.0-nightly' 
    }
    

这应该可以完成工作,完整的 build.gradle 看起来像

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
    }
}

repositories {
    google()
    jcenter()
}

apply plugin: 'com.android.application'

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])

    // Build off of nightly TensorFlow Lite
    implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
    implementation 'org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly'
    implementation 'org.tensorflow:tensorflow-lite-support:0.0.0-nightly'
    // Use local TensorFlow library
    // implementation 'org.tensorflow:tensorflow-lite-local:0.0.0'
}

android {
    /*******************************************************
     * The following variables:
     * - androidBuildToolsVersion,
     * - androidCompileSdkVersion
     * - qt5AndroidDir - holds the path to qt android files
     *                   needed to build any Qt application
     *                   on Android.
     *
     * are defined in gradle.properties file. This file is
     * updated by QtCreator and androiddeployqt tools.
     * Changing them manually might break the compilation!
     *******************************************************/

    compileSdkVersion androidCompileSdkVersion.toInteger()

    buildToolsVersion androidBuildToolsVersion

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java']
            aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl']
            res.srcDirs = [qt5AndroidDir + '/res', 'res']
            resources.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
       }
    }

    compileOptions {
        sourceCompatibility = '1.8'
        targetCompatibility = '1.8'
    }

    aaptOptions {
        noCompress "tflite"
    }

    lintOptions {
        abortOnError false
    }
}