我正在构建一个使用张量流来识别图像的本机应用程序,我按照此tutorial中的步骤进行操作。
我根据解释做了一切,包括"获取文件" 的部分。我创建了assets文件夹并将文件放入其中(路径正确)。
但是当我运行这段代码时:
const tfImageRecognition = new TfImageRecognition({
model: require('./assets/tensorflow_inception_graph.pb'),
labels: require('./assets/tensorflow_labels.txt'),
});
该应用程序出现以下错误:
我已经尝试创建一个新项目,我导入了react-native-tensorflow import { TfImageRecognition } from 'react-native-tensorflow';
,我更新了缓存,删除了文件夹node_modules,还创建了文件" rn -cli.config.js "本教程中要求提供对assets文件夹中文件的访问权限。知道如何解决这个问题吗?
我使用expo在移动设备上运行应用程序(android)。
答案 0 :(得分:1)
这个问题并没有发生在我身上。尝试react-native start --reset-cache
,然后再次运行该应用。
答案 1 :(得分:1)
有一种更好的方法。
import model from './assets/tensorflow_inception_graph.pb';
import labels from './assets/tensorflow_labels.txt';
const tfImageRecognition = new TfImageRecognition({
model,
labels
});
重新启动服务器。
答案 2 :(得分:1)
我尝试了与你提到的相同的例子我访问了图像和文本。
我将assets
内的文件存储在同一目录中。您可以共享代码以产生您遇到的错误吗?
async recognizeImage() {
try {
const tfImageRecognition = new TfImageRecognition({
model:require('./assets/tensorflow_inception_graph.pb'),
labels: require('./assets/tensorflow_labels.txt')
})
const results = await tfImageRecognition.recognize({
image: this.image
})
const resultText = `Name: ${results[0].name} - Confidence: ${results[0].confidence}`
this.setState({result: resultText})
await tfImageRecognition.close()
} catch(err) {
alert(err)
}
}
正如您提到的使用expo
,我假设已经运行npm eject
。由于react-native-tensorflow
此库需要原生更改
答案 3 :(得分:1)
您必须在rn-cli.config.js中添加扩展名,以便要求tensorflow_inception_graph.pb和tensorflow_labels.txt
module.exports = {
getAssetExts() {
return ['pb', 'txt']
}
}
答案 4 :(得分:0)
用./替换./,所以最终代码为 -
model: require('../assets/tensorflow_inception_graph.pb'),
labels: require('../assets/tensorflow_labels.txt')