AssertionError: «обнаружение» в self.models с использованием InsightFace в контейнере Docker LinuxPython

Программы на Python
Ответить
Anonymous
 AssertionError: «обнаружение» в self.models с использованием InsightFace в контейнере Docker Linux

Сообщение Anonymous »

Я разрабатываю приложение Python, использующее Flask и работающее в контейнере Docker на сервере Linux с NGINX. Приложение отлично работает на моем локальном компьютере, но когда я развертываю его на сервере, я сталкиваюсь со следующей ошибкой:

ОШИБКА:app:Exception: Traceback ( последний вызов последний): File
"/app/app.py", строка 32, в анализе_face
analyzer = FaceFeatureAnalyzer() # Создайте здесь экземпляр File "/app/face_feature_analyzer/main_face_analyzer.py", строка 43, в файле
init
self.face_app = FaceAnaанализ(name='antelopev2', root=self.model_root)
"/usr/local/lib/python3.9/site-packages/insightface/app/face_anaанализ.py",
строка 43, в init
укажите «обнаружение» в self.models AssertionError

Вот код
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))

Я также пытался загрузить его в тот же каталог, но эта попытка также приводит к той же ошибке. Вот что я дополнительно пробовал
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'.")

Что я наблюдал и пробовал:
Журналы загрузки и извлечения модели:
• Во время запуска загружается модель antelopev2 и извлечен в /root/.insightface/models/antelopev2. Логи это подтверждают:
Download completed.
Extracting /root/.insightface/models/antelopev2.zip to /root/.insightface/models/antelopev2...
Extraction completed.

Однако при проверке каталога он оказывается пустым или программа не может обнаружить модели.
Добавление моделей вручную
Раньше проблема решалась при загрузке модели antelopev2 вручную и размещении ее в /root/.insightface/models/antelopev2. Я также установил соответствующие разрешения, используя:
chmod -R 755 /root/.insightface/models/antelopev2

После обновления кодовой базы и пересборки контейнера Docker проблема возникла снова.
Содержимое каталога:

Следующие файлы существуют в /root/.insightface/models/antelopev2:#
1k3d68.onnx
2d106det.onnx
genderage.onnx
glintr100.onnx
scrfd_10g_bnkps.onnx

Это ожидаемые файлы .onnx для antelopev2.
Приложение работает локально без каких-либо ошибок. Проблема возникает только в контейнере Docker на сервере Linux.
Несмотря на то, что файлы присутствуют и разрешения установлены правильно, приложение, похоже, не может их обнаружить. Как я могу отладить или устранить эту проблему?
Dockerfile
FROM python:3.9-slim

# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

# Set the working directory in the container
WORKDIR /app

# Install system dependencies including libgl1-mesa-glx and others
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1-mesa-glx \
libglib2.0-0 \
g++ \
build-essential \
&& apt-get clean && rm -rf /var/lib/apt/lists/*

# Copy the requirements file into the container
COPY requirements.txt /app/

# Install Python dependencies
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt

# Copy the rest of the application code into the container
COPY . /app

EXPOSE 7002

# Run the Flask application
CMD ["python", "app.py"]

Docker-compose.yml
version: '3.8'
services:
flask-app:
build:
context: ./backend
container_name: flask-app
ports:
- "7000:7000"
environment:
- FLASK_RUN_HOST=0.0.0.0
- FLASK_RUN_PORT=7000
volumes:
- ./backend:/app
depends_on:
- nginx

nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx:/etc/nginx/sites-enabled
- ./nginx-certificates:/etc/letsencrypt


Подробнее здесь: https://stackoverflow.com/questions/793 ... docker-con
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»