写一个用yolov5做人脸识别的代码
时间: 2024-02-14 15:25:14 浏览: 72
当然可以!以下是一个使用YOLOv5进行人脸识别的示例代码:
```python
import torch
import cv2
from PIL import Image
from torchvision.transforms import functional as F
# 加载模型
model = torch.hub.load('ultralytics/yolov5', 'custom', path='yolov5s.pt')
# 设置设备
device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')
model.to(device).eval()
# 加载图像
image_path = 'test.jpg'
image = Image.open(image_path)
# 图像预处理
image_tensor = F.to_tensor(image).unsqueeze(0).to(device)
# 运行模型进行预测
results = model(image_tensor)
# 提取人脸框和置信度
faces = results.pred[:, :4].detach().cpu().numpy()
confidences = results.pred[:, 4].detach().cpu().numpy()
# 设置阈值
threshold = 0.5
# 绘制人脸框和置信度
for face, confidence in zip(faces, confidences):
if confidence > threshold:
x1, y1, x2, y2 = face
cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.putText(image, f'{confidence:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
# 显示结果
image.show()
```
请确保已经安装了`torch`、`torchvision`和`opencv-python`库。此代码使用了`yolov5s`模型进行预测,可以根据需要更改模型的大小(如`yolov5m`或`yolov5x`)。
你可以将图像路径替换为自己的图像,并根据需要调整阈值来过滤人脸检测结果。
阅读全文