图像处理模型

x86架构下升级pillow库

更新高性能版本的依赖库,升级高性能处理库pillow。注意此操作仅支持x86架构。

  1. 安装高性能pillow库相关依赖。

    • Ubuntu
      apt-get install libtiff5-dev libjpeg8-dev libopenjp2-7-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python3-tk libharfbuzz-dev libfribidi-dev libxcb1-dev
    • CentOS/EulerOS
      yum install libtiff-devel libjpeg-devel openjpeg2-devel zlib-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel harfbuzz-devel fribidi-devel libraqm-devel libimagequant-devel libxcb-devel

  2. 执行命令卸载原生pillow库。

    pip3.7 uninstall -y pillow

  3. 安装SSE4版本pillow-simd。(使用root用户安装,执行如下命令,若使用非root用户安装,需在命令结尾加上--user。)

    pip3.7 install pillow-simd
    如果CPU支持AVX2指令集,可安装AVX2版本pillow-simd。
    CC="cc -mavx2"  pip3.7 install -U --force-reinstall pillow-simd

  4. 安装对应框架版本的torchvision。

    #PyTorch 1.8.1需安装0.9.1版本,PyTorch 1.11.0需安装0.12.0版本。以下以PyTorch 1.8.1安装0.9.1版本为例。
    pip3 install torchvision==0.9.1   

  5. 修改torchvision代码解决pillow-simd缺少PILLOW_VERSION问题。

    将/usr/local/python3.x.x/lib/python3.x/site-packages/torchvision/transforms/functional.py第5行代码修改如下:
    try:
        from PIL import Image, ImageOps, ImageEnhance,PILLOW_VERSION
    except:
        from PIL import Image, ImageOps, ImageEnhance
        PILLOW_VERSION="7.0.0"

安装opencv

在某些对host侧CPU要求较高的模型中,例如目标检测类模型,需要进行较为复杂的图像预处理。为获得更好的图像处理性能,可采用编译安装opencv的方式。

编译安装opencv的步骤如下:

  1. 安装前准备。

    export GIT_SSL_NO_VERIFY=true

  2. 下载源码包。

    git clone https://github.com/opencv/opencv.git
    cd opencv
    mkdir -p build

  3. 源码编译并安装。

    cd build  
    cmake -D BUILD_opencv_python3=yes -D BUILD_opencv_python2=no -D PYTHON3_EXECUTABLE=/usr/local/python3.7.5/bin/python3.7m -D PYTHON3_INCLUDE_DIR=/usr/local/python3.7.5/include/python3.7m -D
    PYTHON3_LIBRARY=/usr/local/python3.7.5/lib/libpython3.7m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/python3.7.5/lib/python3.7/site-packages/numpy/core/include -D PYTHON3_PACKAGES_PATH=/usr/local/python3.7.5/lib/python3.7/site-packages -D PYTHON3_DEFAULT_EXECUTABLE=/usr/local/python3.7.5/bin/python3.7m .. 
    
    make -j$nproc
    make install