当前位置: 首页 > news >正文

Ubuntu下编译安装DLib的GPU版本并实现人脸检测和人脸关键点检测

1. 安装CUDA和CUDNN

首先需要安装好cuda和cudnn,具体可以参考我的另一篇博客。

2. 安装依赖库

pip install scikit-image opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

3. 下载Dlib库

git clone https://gitee.com/binghai228/dlib.git

4. 编译和安装Dlib

cd dlib
mkdir build
cd build
cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1
cmake --build .
cd ..
python setup.py install --set USE_AVX_INSTRUCTIONS=1 --set DLIB_USE_CUDA=1

安装好以后,先测试下是否能正常启用。在终端中输入python进入交互式命令行,然后输入下面的代码:

import dlib
print(dlib.DLIB_USE_CUDA)

输出为true则为成功。

5. 人脸检测和关键点检测

完整代码如下:

import dlib
import cv2
import os# load face detector and shape predictor
# detector = dlib.get_frontal_face_detector()
detector = dlib.cnn_face_detection_model_v1("../model/mmod_human_face_detector.dat")
predictor = dlib.shape_predictor('../model/shape_predictor_68_face_landmarks.dat')img_folder = '../img/'
dst_folder = '../result/'# 检索img_folder下的所有图片
img_files = os.listdir(img_folder)# 逐张处理
for img_file in img_files:# 读取图片org_img = cv2.imread(img_folder + img_file)# 图像拷贝height, width = org_img.shape[:2]img = org_img.copy()# 等比缩放scale = 800.0 / widthnew_height = int(height * scale)img = cv2.resize(img, (800, new_height))# 检测人脸gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = detector(gray, 1)# 人脸关键点定位shape = predictor(gray, faces[0].rect)# 获取关键点的上下左右边界left = shape.part(0).xtop = shape.part(27).yright = shape.part(16).xbottom = shape.part(8).yh,w,c = img.shape# 可视化if len(faces) == 1:for i in range(68):cv2.circle(img, (shape.part(i).x, shape.part(i).y), 1, (0, 0, 255), 2)# 保存结果cv2.imwrite(dst_folder + img_file, img)print(img_folder + img_file)

运行效果如下:

在3090GPU上面测试,平均单张图像检测时间26ms。

http://www.xdnf.cn/news/978679.html

相关文章:

  • “十五五”时期智慧城市赋能全国一体化数据市场建设:战略路径与政策建议[ 注:本建议基于公开政策文件与行业实践研究,数据引用截至2025年6月11日。]
  • 商品中心—3.商品可采可补可售的技术文档下
  • 前端面试宝典---事件循环面试题
  • 小白学Pinia状态管理
  • STM32G DMA串口发送接收
  • Linux开发工具之VsCode(Filezila、MobaXterm、Vim三合一)
  • 【笔记】NVIDIA AI Workbench 中安装 cuDNN 9.10.2
  • 每日Prompt:人像写真
  • 内存泄漏系列专题分析之二十:camx swap内存泄漏实例分析
  • Babylon.js引擎(二)
  • 【Chipyard】 conda 环境安装与使用
  • k8s在节点上加污点
  • k8s 部署服务常见错误原因
  • Windows 安装 Maven
  • 1Panel 部署 OpenResty + Redis 实现 IP 动态封禁教程
  • 软考 系统架构设计师系列知识点之杂项集萃(87)
  • Visual Studio 2022 运行提示:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
  • jsoncpp ubuntu编译问题
  • Proof of Talk专访CertiK联创顾荣辉:全周期安全方案护航Web3生态
  • Cilium动手实验室: 精通之旅---22.Cilium Traffic Optimization
  • OA协同平台有哪些功能?OA协同办公软件平台如何选择?
  • 腾讯开源 ovCompose 跨平台框架:实现一次跨三端(Android/iOS/鸿蒙)
  • 网络请求与本地存储:Axios 与 AsyncStorage 在 React Native 中的应用
  • 升级 Ubuntu Linux 内核的几种不同方法
  • 同步与异步:软件工程中的时空艺术与实践智慧-以蜻蜓hr人才系统举例-优雅草卓伊凡
  • 二刷苍穹外卖 day02
  • 2023蓝桥杯C/C++ B组国赛
  • PyTorch:让深度学习飞入寻常百姓家(从零开始玩转张量与神经网络!)
  • 开疆智能ModbusTCP转Canopen网关连接汇川PLC配置案例
  • 【android bluetooth 框架分析 04】【bt-framework 层详解 4】【AdapterState介绍】