Soll ich tf-lite-Modelle im Front-End oder Back-End einer Flutter-App ausführen?
Posted: 07 Jan 2025, 06:52
Ich baue eine App, die ein tf-lite-Modell namens MoveNet verwendet, das 17 Körperschlüsselpunkte erkennt, sowie mein eigenes tf-lite-Modell darüber hinaus (nennen wir es PoseClassifier), um Posen basierend auf den Daten zu klassifizieren zurückgegeben von MoveNet.
Ich benötige Hilfe bei der Entscheidung, ob ich die tf-lite-Modelle im Front-End oder Back-End ausführen soll. Ich werde die Optionen unten erklären
Ich benötige Hilfe bei der Entscheidung, ob ich die tf-lite-Modelle im Front-End oder Back-End ausführen soll. Ich werde die Optionen unten erklären
- Führen Sie alles im Frontend aus. Verwenden Sie das tf-lite-Plugin von Flutter, um
MoveNet und PoseClassifier direkt auf dem Gerät auszuführen. Dies würde
eine sofortige Reaktion auf die Benutzeroberfläche ermöglichen, um den Benutzer darüber zu informieren, wann er
eine bestimmte Pose einnimmt oder verlässt, ohne sich auf Netzwerklatenz-/Konnektivitätsprobleme verlassen zu müssen - Hybrider Ansatz. Führen Sie MoveNet im Front-End aus, um die Schlüsselpunktdaten abzurufen, und senden Sie diese Informationen an das PoseClassifier-Modell im Back-End, indem Sie eine dieser Unteroptionen verwenden.
2A. Senden und empfangen Sie kontrovers die Daten einer kleinen Anzahl
Frames von der Kamera des Benutzers (bis dieser den Stream beendet). Es würde zu einer geringen Latenz kommen, da PoseClassifier ausgeführt werden muss
und dann die Daten zurückgeben muss, aber das Feedback kommt sehr nahe an Echtzeit
2B. Verarbeiten Sie das gesamte Video auf einmal im Front-End über MoveNet
(nachdem der Benutzer den Stream beendet hat) und senden Sie diese Daten an das Back-End
zur Verarbeitung durch PoseClassifier. Dies wäre keine Echtzeit,
da Sie Ergebnisse erst nach Ende des Videos erhalten würden. - Führen Sie alles auf dem aus Backend. Senden Sie die rohen Videodaten an das Back-End, wo MoveNet und PoseClassifier sie verarbeiten und die Ergebnisse zurückgeben. Auf den ersten Blick gefällt mir diese Option nicht, da ich davon ausgehe, dass der Versuch, ein großes Video an das Back-End zu senden, einige Zeit in Anspruch nehmen würde.