yolov5人脸识别 python
时间: 2025-04-03 12:20:24 浏览: 40
### 基于YOLOv5的人脸识别Python实现
以下是一个完整的基于YOLOv5的人脸识别Python代码示例,该代码实现了从摄像头捕获实时视频流并进行人脸检测的功能:
```python
import cv2
import torch
# 加载预训练的YOLOv5模型 (可以选择不同的版本如 yolov5s, yolov5m 等)
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
# 设置设备为GPU(如果有),否则使用CPU
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model.to(device)
# 打开摄像头(可以替换为视频文件路径)
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
# 将帧传递给模型进行推理
results = model(frame)
# 提取检测结果中的边界框和标签
detections = results.pandas().xyxy[0]
for _, detection in detections.iterrows():
confidence = float(detection['confidence'])
# 如果置信度低于阈值,则跳过此检测
if confidence < 0.5:
continue
class_name = detection['name']
# 只处理类别为人的情况(假设类名为 'person' 或自定义数据集中的 'face' 类别)
if class_name != 'person':
continue
x_min, y_min, x_max, y_max = map(int, detection[['xmin', 'ymin', 'xmax', 'ymax']])
# 绘制矩形框标记人脸位置
cv2.rectangle(frame, (x_min, y_min), (x_max, y_max), (0, 255, 0), 2)
cv2.putText(
frame,
f"{class_name}: {confidence:.2f}",
(x_min, y_min - 10),
cv2.FONT_HERSHEY_SIMPLEX,
0.9,
(0, 255, 0),
2
)
# 显示带有标注的结果图像
cv2.imshow('Real-time Face Detection', frame)
# 按下 'q' 键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
#### 关键点说明
- **加载模型**:通过 `torch.hub.load` 方法加载官方发布的 YOLOv5 预训练权重[^1]。
- **设备设置**:优先尝试使用 GPU (`cuda`) 来加速计算;如果不可用则回退至 CPU[^4]。
- **摄像头输入**:利用 OpenCV 的 `VideoCapture` 接口获取实时视频流。
- **推理过程**:调用模型对象完成前向传播操作,并解析返回的数据结构提取感兴趣的目标区域及其属性信息(例如坐标、分类名称以及预测得分)[^2]。
- **可视化输出**:借助 OpenCV 函数绘制包围盒及附加文字描述以便直观展示检测效果。
---
### 数据准备注意事项
为了确保良好的性能表现,在实际项目开发过程中可能还需要额外关注以下几个方面:
1. 自定义数据集构建——当默认 COCO 数据集中未包含特定领域内的目标样本时,需收集相应图片资料并按照一定格式整理成可供训练使用的素材集合;
2. 修改配置文件——依据个人需求调整超参数设定或者重新设计网络架构部分组件以适应新任务的要求;
3. 调整锚点尺寸——考虑到不同尺度下的物体分布情况差异较大,适当优化先验框大小有助于提升定位精度[^3]。
---
阅读全文
相关推荐


















