AI挑战营(进阶):2.WSL2cuda+pytorch+insight初探
[复制链接]
一、docker 运行ubuntu22尝试
个人pc是windows,参考牛人文章发现用的ubuntu22,首先考虑使用docker运行ubuntu22容器,这样即不影响其它已有环境,也不担心其它环境影响它
AI挑战营(进阶):1. InsightFace 快速上手 - 嵌入式系统 - 电子工程世界-论坛
docker之前已经有部署,docker pull ubuntu:22.04下载ubuntu22的image,成功运行
使用下面的命令可以安装cuda
apt install nvidia-cuda-toolkit*
apt install nvidia-cuda-dev
cuda安装完成后,发现nvida的驱动没有安装,于是安装了驱动
运行nvidia-smi后报未知错误,docker中运行ubuntu22来使用nvidia应该还是有问题的
二、WSL2中运行ubuntu22
在wsl2中新建ubuntu22的实例,可以直接在vscode远程中选择发行版
创建完成后,运行nvidia-smi,直接看到下面的输出
还是微软贴心。
安装cuda 11.8版本,查找官网发现下面的安装命令,运行成功
完成后运行nvcc -V,可以得到下面的输出,证明cuda安装成功。
使用命令安装pytorch
第一次安装时报错了,说sha值不对应,重新运行一次,安装成功
使用下面的命令安装insightface和onnxruntime_gpu
pip install insightface
pip install mxnet onnxruntime-gpu
运行人脸分割测试
import cv2
import numpy as np
import insightface
from insightface.app import FaceAnalysis
from insightface.data import get_image as ins_get_image
app = FaceAnalysis(name="buffalo_sc",providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))
img = cv2.imread('input.jpeg')
faces = app.get(img)
rimg = app.draw_on(img, faces)
cv2.imwrite("./output.jpg", rimg)
得到下面的图像
运行人脸识别
选取joey作为目标
import cv2
import numpy as np
import insightface
from insightface.app import FaceAnalysis
from insightface.data import get_image as ins_get_image
app = FaceAnalysis(name="buffalo_sc",providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))
img = cv2.imread('input.jpeg')
faces = app.get(img)
feats = []
for face in faces:
feats.append(face.normed_embedding)
feats = np.array(feats, dtype=np.float32)
target = cv2.imread('joy.png')
target_faces = app.get(target)
target_feat = np.array(target_faces[0].normed_embedding, dtype=np.float32)
sims = np.dot(feats, target_feat)
print(sims)
target_index = int(sims.argmax())
rimg = app.draw_on(img, [faces[target_index]])
cv2.imwrite("joy_output_target.jpg", rimg)
几张人脸得到的相似度如下:
[ 0.9816556 0.05519836 0.09217417 -0.2159264 0.02295483 0.21829614]
绘制结果如下:
|