首页 > 解决方案 > 在 Qt 中使用 tensorflow lite

问题描述

环境 :

我想将 tensorflow-lite 与 Qt5 一起使用,但是当我尝试导入 java 类时会出现很多问题。但是我怎样才能下载 tensorflow-lite-gpu、tensorflow-lite-cpu 和 tensorflow-lite-support?

android studio 使用 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 构建这个示例而没有任何问题,我如何将 tensorflow 的 java api 与 Qt 一起使用?

标签: androidc++qttensorflowtensorflow-lite

解决方案


答案很简单,只需要在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 的依赖项块(不是 buildscript 中的那个)更改为

    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
    }
}

推荐阅读