You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署EasyOCR视频识别服务遇NNPACK硬件不兼容问题求助

解决EasyOCR部署后NNPACK初始化失败导致容器崩溃的问题

我们在应用中使用EasyOCR超分析模型处理视频输入识别文本,本地GPU及CPU环境运行正常。通过Docker+Jenkins部署至客户服务器后,服务可正常启动,但视频处理时出现报错:

[W1102 18:08:49.641464899 NNPACK.cpp:61] Could not initialize NNPACK! Reason: Unsupported hardware

随后容器崩溃。从处理日志可见视频已开始处理:

Speed: 4.9ms preprocess, 434.4ms inference, 3.2ms postprocess per image at shape (1, 3, 384, 640)
Speed: 3.2ms preprocess, 401.5ms inference, 1.9ms postprocess per image at shape (1, 3, 384, 640)

已在Dockerfile中设置ENV USE_NNPACK=0尝试禁用NNPACK,但问题仍存在。以下为部署所用依赖文件及Docker配置:

requirements.txt

Flask==2.1.2
flask_cors==3.0.10
requests==2.27.1
ultralytics==8.0.134
Werkzeug==2.0.3
matplotlib>=3.2.2
numpy>=1.18.5
opencv-python-headless>=4.1.1  # Changed to headless version for server
Pillow<10.0.0  # Ensures no 'ANTIALIAS' issue
PyYAML>=5.3.1
requests>=2.23.0
scipy>=1.4.1
tqdm>=4.64.0
tensorboard>=2.4.1
pandas>=1.1.4
seaborn>=0.11.0
ipython
psutil
thop>=0.1.1

Dockerfile

# Use an official lightweight Python image
FROM python:3.10-slim

# Set environment variable
ENV USE_NNPACK=0

# Set up the working directory
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install system dependencies
RUN apt-get update && \
    apt-get install -y \
    libgl1-mesa-glx \
    libglib2.0-0 && \
    rm -rf /var/lib/apt/lists/*

# Install Python dependencies
COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt && \
    pip install easyocr==1.6.2 && \
    pip uninstall -y opencv-python-headless opencv-python && \
    pip install opencv-python

# Expose the application port
EXPOSE 5001

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

解决方法

  1. 代码层面强制禁用NNPACK
    在ANPR_Test.py的开头添加以下代码,直接从PyTorch层面禁用NNPACK,避免环境变量被依赖库覆盖:

    import torch
    torch.backends.nnpack.enabled = False
    torch.backends.mkldnn.enabled = False
    
  2. 更换CPU优化的基础镜像
    将原python:3.10-slim镜像替换为预配置CPU优化PyTorch的镜像,比如pytorch/pytorch:2.0.1-cpu,该镜像针对不同CPU架构做了兼容处理,减少硬件适配问题。修改Dockerfile开头:

    FROM pytorch/pytorch:2.0.1-cpu
    

    更换后可简化系统依赖安装步骤,因为基础镜像已包含大部分必要组件。

  3. 验证服务器CPU架构兼容性
    在客户服务器的容器内执行cat /proc/cpuinfo,检查CPU是否支持SSE4.1/AVX等NNPACK所需指令集。如果是ARM架构或老旧x86 CPU,需确保所有依赖库是对应架构的编译版本。

  4. 指定纯CPU版本的PyTorch依赖
    在requirements.txt中添加指定CPU版本的PyTorch,避免自动引入NNPACK相关组件:

    torch==2.0.1+cpu
    torchvision==0.15.2+cpu
    

    安装时使用以下命令确保拉取纯CPU包:

    pip install --no-cache-dir torch==2.0.1+cpu torchvision==0.15.2+cpu -f https://download.pytorch.org/whl/cpu
    

内容的提问来源于stack exchange,提问作者nil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 14:17:21