热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

搭建paddlepaddle的docker环境并编译PaddleOCR

目录1.首先安装docker和nvidia-docker2.准备docker环境2.克隆PaddleOCRrepo代码3.安装第三方库附1:docker容器

目录

1.首先安装docker和nvidia-docker

2.准备docker环境

2.克隆PaddleOCR repo代码

3.安装第三方库

附1:docker容器的常用命令



1.首先安装docker和nvidia-docker

https://blog.csdn.net/u013171226/article/details/115113220

2.准备docker环境

官网上面说明了CPU版本、cuda9版本、cuda10版本的docker环境创建命令,但是我的电脑是cuda11,因此我直接去  https://hub.docker.com/r/paddlepaddle/paddle/tags/  网站找到下面的

然后pull镜像文件。

docker pull paddlepaddle/paddle:2.0.1-gpu-cuda11.0-cudnn8

然后根据下载的镜像文件创建docker容器。

sudo nvidia-docker run --name ppocr -v $PWD:/paddle --shm-size=252G --network=host -itd paddlepaddle/paddle:2.0.1-gpu-cuda11.0-cudnn8 /bin/bash

然后用docker ps看一下当前运行的docker容器

docker ps  #查看当前运行的docker容器。
docker ps -a #查看所有存在的docker容器。

结果如下:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99aba9e2659f paddlepaddle/paddle:2.0.1-gpu-cuda11.0-cudnn8 "/bin/bash" About an hour ago Up About an hour ppocr

然后我们根据ID号进入docker环境:

docker exec -it 99aba9e2659f /bin/bash

2.克隆PaddleOCR repo代码

cd /paddle/
git clone https://github.com/PaddlePaddle/PaddleOCR

3.安装第三方库

cd PaddleOCR
pip3 install -r requirments.txt

刚开始运行的时候提示下面的错误:

ERROR: Could not find a version that satisfies the requirement scikit-image==0.17.2
ERROR: No matching distribution found for scikit-image==0.17.2

然后Python -V发现是Python3.5。怀疑是使用的Python和pip版本比较低,导致找不到0.17.2的版本。然后

λ boyun-DGX-1-with-V100-32 /paddle/PaddleOCR {release/2.0} find / -iname "python"
/var/lib/python
/etc/python
/usr/bin/python
/usr/bin/gcc-8.2.0/libstdc++-v3/python
/usr/local/lib/python3.5/dist-packages/paddle/include/third_party/google/protobuf/compiler/python
/usr/local/lib/python3.5/dist-packages/paddle/include/third_party/boost/mpi/python
/usr/local/lib/python3.5/dist-packages/paddle/include/third_party/boost/parameter/aux_/python
/usr/local/lib/python3.5/dist-packages/paddle/include/third_party/boost/python
/usr/local/lib/python3.5/dist-packages/virtualenv/activation/python
/usr/local/lib/python3.7/dist-packages/visualdl/python
/usr/local/lib/python3.7/dist-packages/paddle/include/third_party/google/protobuf/compiler/python
/usr/local/lib/python3.7/dist-packages/paddle/include/third_party/boost/mpi/python
/usr/local/lib/python3.7/dist-packages/paddle/include/third_party/boost/parameter/aux_/python
/usr/local/lib/python3.7/dist-packages/paddle/include/third_party/boost/python
/usr/local/lib/python3.7/dist-packages/virtualenv/activation/python
/usr/local/lib/python2.7/dist-packages/paddle/include/third_party/google/protobuf/compiler/python
/usr/local/lib/python2.7/dist-packages/paddle/include/third_party/boost/mpi/python
/usr/local/lib/python2.7/dist-packages/paddle/include/third_party/boost/parameter/aux_/python
/usr/local/lib/python2.7/dist-packages/paddle/include/third_party/boost/python
/usr/local/lib/python2.7/dist-packages/virtualenv/activation/python
/usr/local/lib/python3.6/dist-packages/paddle/include/third_party/google/protobuf/compiler/python
/usr/local/lib/python3.6/dist-packages/paddle/include/third_party/boost/mpi/python
/usr/local/lib/python3.6/dist-packages/paddle/include/third_party/boost/parameter/aux_/python
/usr/local/lib/python3.6/dist-packages/paddle/include/third_party/boost/python
/usr/local/lib/python3.6/dist-packages/virtualenv/activation/python
/usr/local/lib/python3.8/dist-packages/paddle/include/third_party/google/protobuf/compiler/python
/usr/local/lib/python3.8/dist-packages/paddle/include/third_party/boost/mpi/python
/usr/local/lib/python3.8/dist-packages/paddle/include/third_party/boost/parameter/aux_/python
/usr/local/lib/python3.8/dist-packages/paddle/include/third_party/boost/python
/usr/local/lib/python3.8/dist-packages/virtualenv/activation/python
/usr/local/gcc-8.2/share/gcc-8.2.0/python
/usr/local/TensorRT-7.1.3.4/doc/python
/usr/local/TensorRT-7.1.3.4/samples/python
/usr/local/TensorRT-7.1.3.4/python
/usr/local/cuda-11.0/share/gdb/python
/usr/share/doc/python
/usr/share/lintian/overrides/python
/usr/share/gcc-8/python
/usr/share/swig3.0/python
/usr/share/python

发现里面其实python3.5,python3.6,python3.7都有的,于是执行

ln -snf /usr/bin/python3.7 /usr/bin/python3

同样对于pip3,

λ boyun-DGX-1-with-V100-32 /paddle/PaddleOCR {release/2.0} find / -iname "pip"
/root/.cache/pip
/usr/local/lib/python3.5/dist-packages/pip
/usr/local/lib/python3.7/dist-packages/pip-20.0.1-py3.7.egg/pip
/usr/local/lib/python2.7/dist-packages/pip-20.0.1-py2.7.egg/pip
/usr/local/lib/python3.6/dist-packages/pip-20.0.1-py3.6.egg/pip
/usr/local/lib/python3.8/dist-packages/pip-20.0.1-py3.8.egg/pip
/usr/local/bin/pip

执行

ln -snf /usr/local/bin/pip3.7 /usr/local/bin/pip3

然后再执行pip3 install -r requirments.txt就可以安装成功了。

附1:docker容器的常用命令

https://blog.csdn.net/u013171226/article/details/115132594

参考文献:官网说明文档  https://www.bookstack.cn/read/PaddleOCR/installation.md


推荐阅读
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 本文探讨了将PEBuilder转换为DIBooter.sh的方法,重点介绍了如何将DI工具集成到启动层,实现离线镜像引导安装。通过使用DD命令替代传统的grub-install工具,实现了GRUB的离线安装。此外,还详细解析了bootice工具的工作原理及其在该过程中的应用,确保系统在无网络环境下也能顺利引导和安装。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 在2020年8月19日的深度分析中,我们探讨了HTML标签中同时存在`a`标签的`href`和`onclick`属性时的触发顺序问题。此外,还讨论了如何在一个自适应高度的父级`div`中,使两个子`div`中的一个固定高度为300px,另一个自动填充剩余空间的方法。最后,文章详细介绍了JavaScript异步加载的多种实现方式,包括但不限于`async`、`defer`属性以及动态脚本插入技术,为开发者提供了丰富的技术参考。 ... [详细]
  • Docker网络基础探讨了如何通过高效的技术手段实现跨主机容器间的顺畅通信与访问。本文深入分析了Docker网络架构,特别是其在多主机环境下的应用,为Go语言开发者提供了宝贵的实践指导和理论支持。 ... [详细]
  • 本周课程涵盖了高精度计算、前缀和及差分技术。在高精度计算部分,我们将探讨如何处理任意进制的数值运算,包括但不限于正数的加法、减法和乘法。通过调整基数,可以灵活应对不同进制的需求。前缀和与差分技术则主要用于高效解决数组和区间查询问题,提升算法性能。 ... [详细]
  • 如何在Spark数据排序过程中有效避免内存溢出(OOM)问题
    本文深入探讨了在使用Spark进行数据排序时如何有效预防内存溢出(OOM)问题。通过具体的代码示例,详细阐述了优化策略和技术手段,为读者在实际工作中遇到类似问题提供了宝贵的参考和指导。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • ESP32 IRAM 内存优化策略与实践总结
    本文总结了针对ESP32 IRAM内存溢出问题的优化策略与实践经验。通过详细分析ESP32的内存结构和IRAM分配机制,提出了一系列有效的解决方案,包括代码优化、内存管理技巧和编译器配置调整,旨在帮助开发者有效解决`.espressif/tools/xtensa-esp32-elf/esp-2`等类似错误,提升系统性能和稳定性。 ... [详细]
  • Go语言实现Redis客户端与服务器的交互机制深入解析
    在前文对Godis v1.0版本的基础功能进行了详细介绍后,本文将重点探讨如何实现客户端与服务器之间的交互机制。通过具体代码实现,使客户端与服务器能够顺利通信,赋予项目实际运行的能力。本文将详细解析Go语言在实现这一过程中的关键技术和实现细节,帮助读者深入了解Redis客户端与服务器的交互原理。 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • 在探讨 AS3 中的数据深度复制技术时,本文详细介绍了实现数据深度克隆的有效方法。通过对比多种方案,最终确定了一种高效且可靠的实现方式,所有代码均来源于公开资源,确保了方法的实用性和可操作性。 ... [详细]
  • 在网络项目中,确保网络安全至关重要,尤其是对于需要严格控制网络端口的场景。本文详细介绍了如何在Linux系统中使用`netstat`和`lsof`工具来检查端口占用情况,并提供了关闭特定端口的具体方法。通过这些工具,开发人员可以更好地管理和监控系统中的网络端口,确保只有必要的端口处于开放状态,从而提高系统的安全性。 ... [详细]
  • 本文将深入探讨Java编程语言中顶级类`Object`的源码实现,旨在为Java新手提供进阶指导。`Object`类是所有Java类的基类,了解其内部机制对于提升编程技能至关重要。文章首先介绍了API文档的使用方法,这对于有开发经验的Java程序员来说是不可或缺的工具。通过详细解析`Object`类的关键方法和属性,读者可以更好地理解Java的核心原理和设计思想。此外,文章还提供了实际代码示例,帮助读者在实践中掌握这些知识。 ... [详细]
  • 精通jQuery:深入解析事件处理机制与应用技巧
    本文详细探讨了jQuery的事件处理机制及其应用技巧,通过具体的代码示例,逐一解析了每个jQuery代码片段与其对应的HTML结构。文章以标记为基准,CSS作为通用样式,确保每段代码都能独立运行。HTML和CSS代码统一放置在文章末尾,方便读者参考和实践。 ... [详细]
author-avatar
沉鈺发忠谦琪伦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有