android - 在 Qt 中使用 tensorflow lite
问题描述
环境 :
- 操作系统:Win10 64位
- 数量:5.12.3
- NDK:r18b
- JDK:jdk1.8.0_201
我想将 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 一起使用?
解决方案
答案很简单,只需要在build.gradle中添加几行(from QtCreator, projects(alt+x)->other files->build.gradle)
将以下行放在 build.gradle 的“android”块中
compileOptions { sourceCompatibility = '1.8' targetCompatibility = '1.8' } aaptOptions { noCompress "tflite" }
将 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
}
}
推荐阅读
- c# - 遍历未知对象类型的图并改变一些对象属性
- css - Vuetify v-tooltip 无法更改 css
- javascript - 在选择选项上设置值以选择 JSON 数据
- php - jQuery Validator Remote - 我可以获取参数以及真/假响应吗?
- haskell - Haskell:如何编写与两种包装类型的内部交互的代码?
- microsoft-graph-api - 是否可以使用具有不同发送/接收日期的 Microsoft Graph 创建消息?
- python - 将代码从 python 转换为 java 或 c# 或伪代码
- powershell - 在powershell中,在函数中包含参数或在函数中放置参数有区别吗?
- javascript - 前馈神经网络反向传播问题
- r - 用R中的data.frame中的给定替换字符替换数字