Я получаю сообщение об ошибке при попытке собрать apk приложения ioni c 3 с использованием face api js. При запуске ioni c serve он работает без каких-либо ошибок, но при создании apk и отладке на chrome я получаю следующие ошибки:
1) Ошибка: на основе предоставленной формы, [1,1,512 , 9], тензор должен иметь 4608 значений, но имеет 3784
2) Ошибка: Не перехвачено (в обещании): Ошибка: SsdMobilenetv1 - загрузить модель перед выводом
Вот ioni c info и зависимости:
Ionic:
ionic (Ionic CLI) : 4.2.0
Ionic Framework : ionic-angular 3.9.9
@ionic/app-scripts : 3.2.4
Cordova:
cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1)
Cordova Platforms : android 7.1.4
Cordova Plugins : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.2.1, (and 6 other plugins)
System:
Android SDK Tools : 26.1.1
NodeJS : v12.14.1
npm : 6.13.2
OS : Windows 10
"devDependencies": {
"@ionic/app-scripts": "^3.2.4",
"typescript": "^2.6.2"
}
Вот код в ts-файле:
ionViewDidLoad() {
console.log('ionViewDidLoad');
let proceed = this.load_face_models();
proceed.then(
()=>{
console.log( 'models loaded');
return this.compareFaces();
}
)
.then(
d => console.log('dist prom',d)
)
}
async load_face_models(){
try {
await faceapi.nets.ssdMobilenetv1.loadFromUri('assets/models');
await faceapi.nets.faceLandmark68Net.loadFromUri('assets/models');
await faceapi.nets.faceRecognitionNet.loadFromUri('assets/models');
} catch (error) {
console.log(error);
}
}
async compareFaces(){
try {
let fetch1 = await faceapi.fetchImage(this.img1);
// console.log('fetch 1', fetch1);
let fetch2 = await faceapi.fetchImage(this.img2);
// console.log('fetch 2', fetch2);
const pred_1 = await faceapi.detectSingleFace(fetch1).withFaceLandmarks().withFaceDescriptor();
// console.log('pred 1', pred_1);
const pred_2 = await faceapi.detectSingleFace(fetch2).withFaceLandmarks().withFaceDescriptor();
// console.log('pred 2', pred_2);
const distance = await faceapi.euclideanDistance(pred_1.descriptor, pred_2.descriptor);
this.dist = distance;
console.log(' distance ', distance);
return distance;
} catch (error) {
console.log(error);
}
}