docker - 使用来自 docker 的 openvino
问题描述
我正在尝试从 docker 容器中使用 OpenVINO。我使用来自官方网站https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_docker_linux.html的 docker 文件
FROM ubuntu:18.04
USER root
WORKDIR /
SHELL ["/bin/bash", "-xo", "pipefail", "-c"]
# Creating user openvino
RUN useradd -ms /bin/bash openvino && \
chown openvino -R /home/openvino
ARG DEPENDENCIES="autoconf \
automake \
build-essential \
cmake \
cpio \
curl \
gnupg2 \
libdrm2 \
libglib2.0-0 \
lsb-release \
libgtk-3-0 \
libtool \
udev \
unzip \
dos2unix"
RUN apt-get update && \
apt-get install -y --no-install-recommends ${DEPENDENCIES} && \
rm -rf /var/lib/apt/lists/*
WORKDIR /thirdparty
RUN sed -Ei 's/# deb-src /deb-src /' /etc/apt/sources.list && \
apt-get update && \
apt-get source ${DEPENDENCIES} && \
rm -rf /var/lib/apt/lists/*
# setup Python
ENV PYTHON python3.6
RUN apt-get update && \
apt-get install -y --no-install-recommends python3-pip python3-dev lib${PYTHON}=3.6.9-1~18.04 && \
rm -rf /var/lib/apt/lists/*
ARG package_url=ARG package_url=http://registrationcenter-download.intel.com/akdlm/irc_nas/16612/l_openvino_toolkit_p_2020.2.120.tgz
ARG TEMP_DIR=/tmp/openvino_installer
WORKDIR ${TEMP_DIR}
ADD ${package_url} ${TEMP_DIR}
# install product by installation script
ENV INTEL_OPENVINO_DIR /opt/intel/openvino
RUN tar -xzf ${TEMP_DIR}/*.tgz --strip 1
RUN sed -i 's/decline/accept/g' silent.cfg && \
${TEMP_DIR}/install.sh -s silent.cfg && \
${INTEL_OPENVINO_DIR}/install_dependencies/install_openvino_dependencies.sh
WORKDIR /tmp
RUN rm -rf ${TEMP_DIR}
# installing dependencies for package
WORKDIR /tmp
RUN ${PYTHON} -m pip install --no-cache-dir setuptools && \
find "${INTEL_OPENVINO_DIR}/" -type f -name "*requirements*.*" -path "*/${PYTHON}/*" -exec ${PYTHON} -m pip install --no-cache-dir -r "{}" \; && \
find "${INTEL_OPENVINO_DIR}/" -type f -name "*requirements*.*" -not -path "*/post_training_optimization_toolkit/*" -not -name "*windows.txt" -not -name "*ubuntu16.txt" -not -path "*/python3*/*" -not -path "*/python2*/*" -exec ${PYTHON} -m pip install --no-cache-dir -r "{}" \;
WORKDIR ${INTEL_OPENVINO_DIR}/deployment_tools/open_model_zoo/tools/accuracy_checker
RUN source ${INTEL_OPENVINO_DIR}/bin/setupvars.sh && \
${PYTHON} -m pip install --no-cache-dir -r ${INTEL_OPENVINO_DIR}/deployment_tools/open_model_zoo/tools/accuracy_checker/requirements.in && \
${PYTHON} ${INTEL_OPENVINO_DIR}/deployment_tools/open_model_zoo/tools/accuracy_checker/setup.py install
WORKDIR ${INTEL_OPENVINO_DIR}/deployment_tools/tools/post_training_optimization_toolkit
RUN if [ -f requirements.txt ]; then \
${PYTHON} -m pip install --no-cache-dir -r ${INTEL_OPENVINO_DIR}/deployment_tools/tools/post_training_optimization_toolkit/requirements.txt && \
${PYTHON} ${INTEL_OPENVINO_DIR}/deployment_tools/tools/post_training_optimization_toolkit/setup.py install; \
fi;
# Post-installation cleanup and setting up OpenVINO environment variables
RUN if [ -f "${INTEL_OPENVINO_DIR}"/bin/setupvars.sh ]; then \
printf "\nsource \${INTEL_OPENVINO_DIR}/bin/setupvars.sh\n" >> /home/openvino/.bashrc; \
printf "\nsource \${INTEL_OPENVINO_DIR}/bin/setupvars.sh\n" >> /root/.bashrc; \
fi;
RUN find "${INTEL_OPENVINO_DIR}/" -name "*.*sh" -type f -exec dos2unix {} \;
USER openvino
WORKDIR ${INTEL_OPENVINO_DIR}
CMD ["/bin/bash"]
但是,如果我尝试使用这一行启动 python 程序:
from openvino.inference_engine import IECore
它写 ModuleNotFoundError, No module named 'openvino'。我尝试使用这些命令获取文件 setupvars.sh,但没有帮助。
RUN /bin/bash -c "source /opt/intel/openvino/bin/setupvars.sh"
RUN source /opt/intel/openvino/bin/setupvars.sh
我应该怎么做才能使用来自 docker 的 openvino python 应用程序?
解决方案
如果您正在构建 Docker 映像,并尝试在 Docker 映像之外运行 OpenVINO Python 应用程序,它将无法正常工作。您可以创建 Docker 映像并以交互方式运行 Docker 映像以执行映像中的 Python 应用程序。有关.
_ _
在我的环境中使用时,在您的 Dockerfile 中发现了几个问题。在进行以下更改和步骤之后,您应该能够导入openvino模块并运行 Python 应用程序:
在 Dockerfile 第 34 行中:docker run
// Before:
apt-get install -y --no-install-recommends python3-pip python3-dev lib${PYTHON}=3.6.9-1~18.04 && \
// After:
apt-get install -y --no-install-recommends python3-pip python3-dev lib${PYTHON} && \
在 Dockerfile 第 36 行:
// Before:
ARG package_url=ARG package_url=http://registrationcenter-download.intel.com/akdlm/irc_nas/16612/l_openvino_toolkit_p_2020.2.120.tgz
// After:
ARG package_url=http://registrationcenter-download.intel.com/akdlm/irc_nas/16612/l_openvino_toolkit_p_2020.2.120.tgz
完成上述更改后,运行docker build . -t <image-name>
(即docker build . -t openvino-ubuntu)构建 Docker 镜像。如果成功,您将看到Successfully built bf2280a70ffd Successfully tagged openvino-<image-name>:latest
.
然后以交互方式运行图像docker run -it <image_name>
(即docker run -it openvino-ubuntu)。您会看到类似于以下内容的内容:
[setupvars.sh] OpenVINO environment initialized
openvino@ce618ea2bc47:/opt/intel/openvino_2020.2.120$
要验证 Python 是否能够从openvino模块导入ICore,请使用 Python 解释器进行测试:
openvino@ce618ea2bc47:/opt/intel/openvino_2020.2.120$ python3
Python 3.6.9 (default, Apr 18 2020, 01:56:04)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from openvino.inference_engine import IECore
>>>
要运行 OpenVINO Python 应用程序,请测试/opt/intel/openvino/deployment_tools/inference_engine/samples/python中的示例应用程序之一,例如object_detection_sample_ssd.py:
openvino@ce618ea2bc47:/opt/intel/openvino_2020.2.120$ python3 /opt/intel/openvino/deployment_tools/inference_engine/samples/python/object_detection_sample_ssd/object_detection_sample_ssd.py
usage: object_detection_sample_ssd.py [-h] -m MODEL -i INPUT [INPUT ...]
[-l CPU_EXTENSION] [-d DEVICE]
[--labels LABELS] [-nt NUMBER_TOP]
object_detection_sample_ssd.py: error: the following arguments are required: -m/--model, -i/--input
推荐阅读
- sql - 如何创建触发器来解压 json 数据?
- python-3.x - Pandas 列上的多个条件
- javascript - 使用 divs 创建 javascript 事件系统;这是一个好的解决方案吗?
- r - 如何在 R 中使用 apply 复制此循环?
- python - Tkinter 使用固定纵横比调整大小
- android - 根据 EditText 中的日期和时间选择器显示通知
- python - Tkinter:基于列表中位置的文本样式
- firebase - Flutter Firebase 身份验证 - 取消链接身份验证提供程序不会导致原始(匿名)用户
- reactjs - 类型属性依赖于另一个属性的返回类型
- html - 更改浏览器大小时网站混乱