Ich entwickle eine Python-Anwendung, die Flask verwendet und in einem Docker-Container auf einem Linux-Server mit NGINX läuft. Die Anwendung funktioniert einwandfrei auf meinem lokalen Computer, aber wenn ich sie auf dem Server bereitstelle, erhalte ich die folgende Fehlermeldung:
ERROR:app:Exception: Traceback ( letzter Aufruf zuletzt): Datei
"/app/app.py", Zeile 32, inanalys_face
analyzer = FaceFeatureAnalyzer() # Hier eine Instanz erstellen Datei „/app/face_feature_analyzer/main_face_analyzer.py“, Zeile 43, in
init
self.face_app = FaceAnalysis(name='antelopev2', root=self.model_root) Datei
"/usr/local/lib/python3.9/site-packages/insightface/app/face_analysis.py",
Zeile 43, in init
assert 'detection' in self.models AssertionError
Hier ist der Code
class FaceFeatureAnalyzer:
def __init__(self):
self.model_root = "/root/.insightface"
self.model_path = os.path.join(self.model_root, "models/antelopev2")
self.zip_path = os.path.join(self.model_root, "models/antelopev2.zip")
self.model_url = "https://github.com/deepinsight/insightf ... lopev2.zip"
# Initialize FaceAnalysis
self.face_app = FaceAnalysis(name='antelopev2', root=self.model_root)
self.face_app.prepare(ctx_id=0, det_size=(640, 640))
Ich habe auch versucht, es in dasselbe Verzeichnis herunterzuladen, aber dieser Versuch führte ebenfalls zu demselben Fehler. Folgendes habe ich zusätzlich versucht
class FaceFeatureAnalyzer:
def __init__(self):
# Initialize the InsightFace model
self.face_app = FaceAnalysis(name='antelopev2')
self.face_app.prepare(ctx_id=0, det_size=(640, 640))
logger.info("Initialized FaceAnalysis with model 'antelopev2'.")
Was ich beobachtet und versucht habe:
Modell-Download- und Extraktionsprotokolle:
• Während des Startvorgangs wird das Modell antelopev2 heruntergeladen und nach /root/.insightface/models/antelopev2 extrahiert. Die Protokolle bestätigen dies:
Download completed.
Extracting /root/.insightface/models/antelopev2.zip to /root/.insightface/models/antelopev2...
Extraction completed.
Bei der Überprüfung des Verzeichnisses erscheint es jedoch leer oder das Programm kann die Modelle nicht erkennen.
Manuelles Hinzufügen der Modelle
Zuvor wurde das Problem behoben, indem das antelopev2-Modell manuell heruntergeladen und in /root/.insightface/models/antelopev2 platziert wurde. Ich habe auch die entsprechenden Berechtigungen festgelegt mit:
chmod -R 755 /root/.insightface/models/antelopev2
Nachdem die Codebasis aktualisiert und der Docker-Container neu erstellt wurde, trat das Problem erneut auf.
Verzeichnisinhalte:
Die folgenden Dateien sind in /root/.insightface/models/antelopev2 vorhanden:#
1k3d68.onnx
2d106det.onnx
genderage.onnx
glintr100.onnx
scrfd_10g_bnkps.onnx
Dies sind die erwarteten .onnx-Dateien für antelopev2.
Die Anwendung funktioniert lokal ohne Fehler. Das Problem tritt nur im Docker-Container auf dem Linux-Server auf.
Obwohl die Dateien vorhanden und die Berechtigungen korrekt festgelegt sind, scheint die Anwendung sie nicht erkennen zu können. Wie kann ich dieses Problem debuggen oder beheben?
AssertionError: 'Erkennung' in self.models mit InsightFace im Linux Docker Container ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post