Как использовать face-api- js в ioni c 3? - PullRequest
0 голосов
/ 30 мая 2020

Я получаю сообщение об ошибке при попытке собрать 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);
        }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...