DeepFace【部署 04】轻量级人脸识别和面部属性分析框架deepface使用Docker部署CPU+GPU两个版本及cuDNN安装
使用Docker部署CPU+GPU
- 1.CPU
- 2.GPU
- 3.cuDNN安装
- 3.1 Prerequisites
- 3.2 下载Linux版本cuDNN
- 3.3 安装
1.CPU
本说明基于DeepFace的Docker镜像文件deepface_image.tar进行说明。
# 1.导入镜像
docker load -i deepface_image.tar# 2.创建模型文件夹【并将下载好的模型文件上传】
mkdir -p /root/.deepface/weights/# 3.启动容器
# 网络隔离性受影响但性能好
docker run --name deepface --privileged=true --restart=always --net="host" -v /root/.deepface/weights/:/root/.deepface/weights/ -d deepface_image
# 一般使用
docker run --name deepface --privileged=true --restart=always -p 5000:5000 -v /root/.deepface/weights/:/root/.deepface/weights/ -d deepface_image
# 使用最新的代码进行容器启动
docker run --name deepface_src --privileged=true --restart=always --net="host" \
-v /root/.deepface/weights/:/root/.deepface/weights/ \
-v /opt/test-facesearch/deepfacesrc/:/app/deepface/ \
-d deepface_image
警告信息:
# 执行命令
docker run --name deepface --privileged=true --restart=always --net="host" -p 5000:5000 -v /root/.deepface/weights/:/root/.deepface/weights/ -d deepface_image# 警告
WARNING: Published ports are discarded when using host network mode
这个警告通常出现在使用Docker的host网络模式时,因为在这种模式下,容器与主机共享相同的网络命名空间,因此容器中的端口将直接映射到主机上,而不需要进行端口转发。因此,使用-p选项来发布容器端口是无效的,并且会导致警告信息。要解决这个问题,您可以尝试以下方法:
- 如果您不需要将容器端口映射到主机上,请删除-p选项。
- 如果您需要将容器端口映射到主机上,请使用Docker的其他网络模式(例如bridge模式)。
- 如果您确实需要使用host网络模式,请考虑使用主机IP地址来访问容器中的服务,而不是使用端口转发。
2.GPU
首先要启动容器安装tensorrt:
pip install tensorrt -i https://pypi.tuna.tsinghua.edu.cn/simple
安装后的启动命令:
docker run --name deepface --privileged=true --restart=always --net="host" \
-e PATH=/usr/local/cuda-11.2/bin:$PATH -e LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH \
-v /root/.deepface/weights/:/root/.deepface/weights/ \
-v /usr/local/cuda-11.2/:/usr/local/cuda-11.2/ \
-v /opt/xinan-facesearch-service-public/deepface/api/app.py:/app/app.py \
-d deepface_image
测试fastmtcnn将最新代码挂载到目录下:
docker run --name deepface_gpu_src --privileged=true --restart=always --net="host" \
-e PATH=/usr/local/cuda-11.2/bin:$PATH -e LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH \
-v /root/.deepface/weights/:/root/.deepface/weights/ \
-v /usr/local/cuda-11.2/:/usr/local/cuda-11.2/ \
-v /opt/test-facesearch/deepfacesrc/:/app/deepface/ \
-v /opt/xinan-facesearch-service-public/deepface/api/app.py:/app/app.py \
-d deepface_image
跟CPU部署不同点:
- 设置了两个环境变量
-e PATH=/usr/local/cuda-11.2/bin:$PATH -e LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH - 添加了一个挂载目录
-v /usr/local/cuda-11.2/:/usr/local/cuda-11.2/ - 添加了一个挂载文件
-v /deepface/api/app.py:/app/app.py
文件/deepface/api/app.py内容如下:
import tensorrt as tr
import tensorflow as tf
from flask import Flask
from routes import blueprintdef create_app():available = tf.config.list_physical_devices('GPU')print(f"available:{available}")app = Flask(__name__)app.register_blueprint(blueprint)return app
调用tensorflow前需要先引入tensorrt。
3.cuDNN安装
官网安装文档:https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
cuDNN的支持矩阵:https://docs.nvidia.com/deeplearning/cudnn/support-matrix/index.html
The NVIDIA CUDA® Deep Neural Network library (cuDNN) is a GPU-accelerated library of primitives for deep neural networks. cuDNN provides highly tuned implementations for standard routines such as forward and backward convolution, attention, matmul, pooling, and normalization.
安装环境:
[root@localhost ~]# cat /etc/centos-release
CentOS Linux release 7.7.1908 (Core)
3.1 Prerequisites
需要先安装1.GPU Driver和2.CUDAToolkit
nvidia-smi# 查询结果
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.27.04 Driver Version: 460.27.04 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
和3.zlib
yum list installed | grep zlib# 查询结果
zlib.x86_64 1.2.7-18.el7 @anaconda
zlib-devel.x86_64 1.2.7-18.el7 @base
3.2 下载Linux版本cuDNN
下载cuDNN需要先注册NVIDIA开发者计划:https://developer.nvidia.com/developer-program,下载页面:https://developer.nvidia.com/cudnn,选择平台和对应的版本进行下载,本次下载的为cudnn-11.2-linux-x64-v8.1.1.33.tgz大小为1.2G。浏览器下载容易失败,可复制浏览器的下载链接在Linux服务器上进行下载【腾讯云服务器速度12MB/s】:
wget https://developer.download.nvidia.cn/compute/machine-learning/cudnn/secure/8.1.1.33/11.2_20210301/cudnn-11.2-linux-x64-v8.1.1.33.tgz?G2wTHq8E--2jJ9iEfgtFbqfMGX0I1XD6BIksPkVIiU9F3ttrupv_oYvURaZX1dV71EIqEI767WbG5svvSMBElcaVrqZl15UEOUORNWbYwKZDyxidGmwHmG44XiEo6yyM1Rt7ct6NGlVXnxx0etcI9pNJ1PiaHYddY86Lc_yaBLdJwy9hqku4TW6NSNr7XfuCYXvGOPvOmraR4EOfg6Q=&t=eyJscyI6IndlYnNpdGUiLCJsc2QiOiJkZXZlbG9wZXIubnZpZGlhLmNvbS9jdWRhLTEwLjItZG93bmxvYWQtYXJjaGl2ZT90YXJnZXRfb3M9TGludXgifQ==
3.3 安装
The following steps describe how to build a cuDNN dependent program. Choose the installation method that meets your environment needs. For example, the tar file installation applies to all Linux platforms. The Debian package installation applies to Debian 11, Ubuntu 18.04, Ubuntu 20.04, and 22.04. The RPM package installation applies to RHEL7, RHEL8, and RHEL9. In the following sections:
- your CUDA directory path is referred to as /usr/local/cuda/
- your cuDNN download path is referred to as
可根据不同平台选择适合的安装方法,tar文件适合所有的Linux平台,安装步骤为:
- 解压安装包
tar -xvf cudnn-linux-$arch-8.x.x.x_cudaX.Y-archive.tar.xz
- Copy the following files into the CUDA toolkit directory
$ sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
$ sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
安装文件为cudnn-11.2-linux-x64-v8.1.1.33.tgz实际操作步骤为:
# 1.解压
tar -zxvf cudnn-11.2-linux-x64-v8.1.1.33.tgz# 2.复制并赋权
# 解压后的文件夹名称为cuda
# inculde【18个文件】
cp ./cuda/include/cudnn*.h /usr/local/cuda/include
# lib64【8个文件 15个软连接】-P 选项表示保留源文件或目录的属性
cp -P ./cuda/lib64/libcudnn* /usr/local/cuda/lib64
# 所有用户赋可读权限
chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
另一个版本的安装文件为cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz步骤为:
# 1.解压
tar -xvf cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz# 2.复制并赋权 inculde【18个文件】 lib【13个文件 20个软连接】
cp ./cudnn-linux-x86_64-8.6.0.163_cuda11-archive/include/cudnn*.h /usr/local/cuda/include
cp -P ./cudnn-linux-x86_64-8.6.0.163_cuda11-archive/lib/libcudnn* /usr/local/cuda/lib64
chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
相关文章:
DeepFace【部署 04】轻量级人脸识别和面部属性分析框架deepface使用Docker部署CPU+GPU两个版本及cuDNN安装
使用Docker部署CPUGPU 1.CPU2.GPU3.cuDNN安装3.1 Prerequisites3.2 下载Linux版本cuDNN3.3 安装 1.CPU 本说明基于DeepFace的Docker镜像文件deepface_image.tar进行说明。 # 1.导入镜像 docker load -i deepface_image.tar# 2.创建模型文件夹【并将下载好的模型文件上传】 mk…...
程序生活 - 减肥小记
文章目录 缘起健康就好了吗?关于外在和物质生活难与易 我的减肥生活一些细节轻断食戒糖、油炸、重口味睡眠改变社交方式用运动化解压力不喝牛奶 缘起 2017年的一次腿受伤,让我从一个怎么都吃不胖的人,变成了一个实实在在的胖子。 如果你从来…...
深度学习_4_实战_直线最优解
梯度 实战 代码: # %matplotlib inline import random import torch import matplotlib.pyplot as plt # from d21 import torch as d21def synthetic_data(w, b, num_examples):"""生成 Y XW b 噪声。"""X torch.normal(0,…...
《视觉SLAM十四讲》公式推导(三)
文章目录 CH3-8 证明旋转后的四元数虚部为零,实部为罗德里格斯公式结果 CH4 李群与李代数CH4-1 SO(3) 上的指数映射CH4-2 SE(3) 上的指数映射CH4-3 李代数求导对极几何:本质矩阵奇异值分解矩阵内积和迹 CH3-8 证明旋转后的四元数虚部为零,实部…...
pnpm、npm、yarn的区别
pnpm、npm、yarn是三种不同的包管理器,它们之间有一些区别。 安装速度:pnpm的安装速度比npm和yarn快,因为它使用了只下载必需的模块,而不是下载整个依赖树。此外,pnpm还可以并行下载模块,从而进一步提高下…...
搞定蓝牙——第四章(GATT协议)
搞定蓝牙——第四章(GATT协议) 原理介绍层次结构server和client端Attribute ESP32代码 文章下面用的英文表示: server和client:服务端和客户端 char.:characteristic缩写,特征 Attribute:属性 ATT:Attribut…...
Go语言入门心法(十四): Go操作Redis实战
Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 Go语言入门心法(四): 异常体系 Go语言入门心法(五): 函数 Go语言入门心法(六): HTTP面向客户端|服务端编程 Go语言入门心法(七): 并发与通道 Go语言入门心法(八): mysql驱动安装报错o…...
Java学习笔记(三)
前言 这个主要就是想记录一个点,就是二维数组保存的元素就是一维数组的地址,这个概念大家都知道了,那么接下来就是我最近写程序发生的一个事情了。 随机打乱一个一维数组 这个程序我相信大家都是会写的,通过randomArr来随机打乱…...
Flutter笔记:GetX模块中不使用 Get.put 怎么办
Flutter笔记 GetX模块中不使用 Get.put 怎么办 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/13400672…...
2023前端面试整理
1. 介绍一下最近参与的项目,负责那些业务,在开发过程中遇到过问题吗?最后是咋样处理的? 之前负责过大小十几个项目,负责过浙里办的整套上架流程,负责过数据大屏统计,后台管理系统文书生成表单生成等,浙政钉…...
文化融合:TikTok如何弥合跨文化差异
随着全球化的加速和数字媒体的崛起,社交媒体平台已经成为连接世界各地人们的纽带。其中,TikTok作为一个引领者,正在以惊人的速度消除跨文化差异,促进文化融合,使人们更加了解和尊重不同背景和传统。 本文将深入探讨Ti…...
asp.net core获取config和env
配置文件的读取和使用 //读取配置文件直接使用 var configModel configuration.GetSection("DataBaseConfig").Get<DataBaseConfigModel>(); //读取配置文件注入到IOC中 services.Configure<AssemblyConfig>(configuration.GetSection("AssemblyC…...
Git不常用命令(持续更新)
今日鸡汤:当你最满足的时候,通常也最孤独;当你最愤慨的时候,通常也最可怜。 此博文会列出一些平时不常用,但是能提高效率的git命令,后续会出IDEA对应的操作步骤 快看看你是不是都用过... 分支(…...
PostPreSql 数据库的一些用法
1、varchar 类型转换成数字 select sum(CAST(order_num AS NUMERIC)) from ads_port_cli_cons_freq_rpt where yr2023 and mon 08...
小工具推荐:FastGithub的下载及使用
前言:FastGithub是基于dotnet开发的一款开源Github加速器,通过自动获取与GitHub相关的IP地址并更新本地hosts文件来提高资源访问速度,使GitHub的访问畅通无阻。原理(复制过来的): ①修改本机的DNS服务指向…...
硬件信息查看工具 EtreCheckpro mac中文版功能介绍
etrecheckpro mac中文版是一款专业的硬件信息查看工具,它能够快速的检测Mac电脑的软硬件信息,加强用户对自己计算机的了解,EtreCheckPro for Mac下载首先会对电脑的软硬件信息进行扫描收集,之后才会显示出来。EtreCheck Mac版报告…...
宝塔Python3.7安装模块报错ModuleNotFoundError: No module named ‘Crypto‘解决办法
前言 今晚遇到一个问题,宝塔服务器上安装脚本的模块时,出现以下报错,这里找到了解决办法 Traceback (most recent call last):File "/www/wwwroot/unifysign/fuck_chaoxing/fuck_xxt.py", line 4, in <module>from Crypto.…...
优化改进YOLOv5算法:加入ODConv+ConvNeXt提升小目标检测能力——(超详细)
为了提升无人机视角下目标检测效果,基于YOLOv5算法,在YOLOv5主干中实现了Omnidimensional Convolution(ODConv),以在不增加网络宽度和深度的情况下提高精度,还在YOLOv5骨干网中用ConvNeXt块替换了原始的C3块,以加快检测速度。 1 Omni-dimensional dynamic convolution …...
ElasticSearch安装、插件介绍及Kibana的安装与使用详解
ElasticSearch安装、插件介绍及Kibana的安装与使用详解 1.安装 ElasticSearch 1.1 安装 JDK 环境 因为 ElasticSearch 是用 Java 语言编写的,所以必须安装 JDK 的环境,并且是 JDK 1.8 以上,具体操作步骤自行百度 安装完成查看 java 版本 …...
JVM | 命令行诊断与调优 jhsdb jmap jstat jps
目录 jmap 查看堆使用情况 查看类列表,包含实例数、占用内存大小 生成jvm的堆转储快照dump文件 jstat 查看gc的信息,查看gc的次数,及时间 查看VM内存中三代(young/old/perm)对象的使用和占用大小 查看元数据空…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
