Javascript Can';face-api.js的t负载模型

Javascript Can';face-api.js的t负载模型,javascript,reactjs,face-detection,face-recognition,face-api,Javascript,Reactjs,Face Detection,Face Recognition,Face Api,我不知道如何加载“模型”,以便React web应用程序的客户端可以开始分析图像。我甚至不太明白什么是“模型” 我从做npm I face api.js开始 然后,我通过在顶部的“face api.js”中键入import*作为faceapi将其导入到我的注册组件中 在我的componentDidMount()函数中,我输入了以下代码: faceapi.nets.ssdMobilenetv1.loadFromUri('/models').then(result => { console

我不知道如何加载“模型”,以便React web应用程序的客户端可以开始分析图像。我甚至不太明白什么是“模型”

我从做
npm I face api.js开始

然后,我通过在顶部的“face api.js”
中键入
import*作为faceapi将其导入到我的注册组件中

在我的
componentDidMount()
函数中,我输入了以下代码:

faceapi.nets.ssdMobilenetv1.loadFromUri('/models').then(result => {
  console.log(result);
}).catch(error => {
  console.log(error)
})
这给了我以下错误: 语法错误:“JSON.parse:JSON数据第1行第1列出现意外字符”

因此,我尝试在face-api.js目录中查找“models”目录,但什么也找不到。然后我回到Github,找到了一个“权重”文件夹(我读到它与模型相关)。我下载了它,并把它的内容放在我的注册组件附近的“模型”文件夹中(见附图)。还是一样的错误

最后,我想做的就是知道用户是否上传了包含人脸的图片。任何面孔。我不需要更多的东西了。我做错了什么


对于使用VueJs的示例,我在public/dist目录中添加了模型,并按照github示例的说明进行了操作

Promise.all([
faceapi.nets.faceRecognitionNet.loadFromUri(“/models”),
faceapi.nets.ssdMobilenetv1.loadFromUri('/models'),faceapi.nets.faceLandmark68Net.loadFromUri('/models'),
])
.then(async()=>{//这里有一些代码})

您可以使用
loadFromDisk
而不是
loadFromUri

运行以下操作时,可以将模型的文件扩展名更改为
.dir
,而不是
.json

faceapi.nets.ssdMobilenetv1.loadFromUri('/models')
它在public/models目录中查找模型,但只加载json文件(通过检查浏览器中的“网络”选项卡来验证这一点)。它可能在本地计算机上运行,但在部署时会失败

在我们的例子中,它在生产中失败了,因为它需要来自*shard1文件的数据,但我们的服务器无法获取没有任何扩展名的文件。 为了解决这个问题,我们用“.shard”扩展名为所有这些文件添加后缀,并更改了相应json文件中的路径: 发件人:

致:

在此处找到此解决方案:

...,"paths": ["file_name_shard1"]}]
...,"paths": ["file_name_shard1.shard"]