first commit
This commit is contained in:
BIN
Lab/5_FaceDetection/111.png
Normal file
BIN
Lab/5_FaceDetection/111.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 304 KiB |
BIN
Lab/5_FaceDetection/222.png
Normal file
BIN
Lab/5_FaceDetection/222.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 97 KiB |
BIN
Lab/5_FaceDetection/333.png
Normal file
BIN
Lab/5_FaceDetection/333.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 708 KiB |
184
Lab/5_FaceDetection/人脸识别_第9组_柯劲帆_李桦炅_王子励_李志民.md
Normal file
184
Lab/5_FaceDetection/人脸识别_第9组_柯劲帆_李桦炅_王子励_李志民.md
Normal file
@@ -0,0 +1,184 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
# 目录
|
||||
|
||||
[TOC]
|
||||
|
||||
---
|
||||
**实验分工**
|
||||
|
||||
| 姓名 | 学号 | 分工 |
|
||||
| :----: | :------: | :----------------------------------------------------------- |
|
||||
| 柯劲帆 | 21281280 | 负责完成实验代码的主要部分,对模型做细节化调整,设计识别方法与显示效果。检查修正报告。 |
|
||||
| 李桦炅 | 21281282 | 在实验中协同各个成员进行沟通,确保成员间协作和报告的完成与优化。 |
|
||||
| 王子励 | 21281292 | 参与实验部分代码的修改调整,撰写实验报告。 |
|
||||
| 李志民 | 20281146 | 参与报告撰写,记录实验中的问题并总结。 |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 1. 实验目的
|
||||
|
||||
通过互联网等方式对计算机视觉(Computer Vision)中的Face Detection方向进行自主学习。并进行实践,进一步深入理解。
|
||||
获取摄像头的信息数据,使用视频数据,实现实时Face Detection任务。人脸检测(Face Detection),就是给一幅图像,找出图像中的所有人脸位置,通常用一个矩形框框起来。
|
||||
|
||||
|
||||
|
||||
# 2. 工具/原料
|
||||
|
||||
- PC机一台。
|
||||
|
||||
|
||||
|
||||
# 3. 实验任务
|
||||
|
||||
1.调取本机(个人PC)摄像头模组。
|
||||
2.不限编程语言,不限算法,实现Face Detection任务。
|
||||
|
||||
|
||||
|
||||
# 4. 实验内容
|
||||
|
||||
1.在PC机上通过程序获取无线摄像头的视频数据。
|
||||
2.在视频数据上做实时的人脸跟踪。(实时输出的数据可以各组通过不同算法来实现(如多人检测,id标志,性别等内容))。
|
||||
|
||||
|
||||
|
||||
# 5. 核心代码
|
||||
|
||||
**配置环境**:
|
||||
|
||||
```sh
|
||||
pip install facenet-pytorch opencv-python
|
||||
```
|
||||
|
||||
**运行代码**:
|
||||
|
||||
```python
|
||||
import cv2
|
||||
from facenet_pytorch import MTCNN
|
||||
|
||||
# 设置输入图像的大小
|
||||
image_size = (480, 480)
|
||||
|
||||
# 使用MTCNN创建人脸检测流水线:
|
||||
mtcnn = MTCNN(image_size=image_size, keep_all=True)
|
||||
|
||||
# 打开摄像头
|
||||
cap = cv2.VideoCapture(0) # 0 表示默认摄像头,可以根据需要更改为其他数字
|
||||
|
||||
# 检查摄像头是否成功打开
|
||||
if not cap.isOpened():
|
||||
print("Error: Could not open camera.")
|
||||
exit()
|
||||
|
||||
# 设置窗口名称
|
||||
cv2.namedWindow("Face Detection", cv2.WINDOW_NORMAL)
|
||||
|
||||
while True:
|
||||
# 读取视频流的帧
|
||||
ret, frame = cap.read()
|
||||
|
||||
# 检查帧是否成功读取
|
||||
if not ret:
|
||||
print("Error: Could not read frame.")
|
||||
break
|
||||
|
||||
# 裁剪图像使其成为正方形
|
||||
min_dim = min(frame.shape[0], frame.shape[1])
|
||||
start_x = (frame.shape[1] - min_dim) // 2
|
||||
start_y = (frame.shape[0] - min_dim) // 2
|
||||
cropped_frame = frame[start_y:start_y+min_dim, start_x:start_x+min_dim]
|
||||
|
||||
# 人脸检测
|
||||
boxes, probs = mtcnn.detect(cropped_frame)
|
||||
|
||||
# 绘制人脸边界框
|
||||
if boxes is not None:
|
||||
for box in boxes:
|
||||
# 在原始帧上绘制边界框
|
||||
cv2.rectangle(frame,
|
||||
(int(box[0] + start_x), int(box[1] + start_y)),
|
||||
(int(box[2] + start_x), int(box[3] + start_y)),
|
||||
(0, 255, 0), 4)
|
||||
|
||||
# 在窗口中显示帧
|
||||
cv2.imshow("Face Detection", frame)
|
||||
|
||||
# 检测按键,如果是'q',退出循环
|
||||
if cv2.waitKey(1) & 0xFF == ord('q'):
|
||||
break
|
||||
|
||||
# 释放摄像头资源
|
||||
cap.release()
|
||||
|
||||
# 关闭所有窗口
|
||||
cv2.destroyAllWindows()
|
||||
```
|
||||
|
||||
代码主要功能模块是MTCNN。
|
||||
|
||||
MTCNN的工作原理是通过级联的方式,利用多个卷积神经网络来实现人脸检测和对齐。
|
||||
|
||||

|
||||
|
||||
1. 首先通过P-Net(Proposal Network)粗略地识别出可能包含人脸的区域;
|
||||
2. 然后使用R-Net(Refine Network)对候选框进行进一步的筛选;
|
||||
3. 最后通过O-Net(Output Network)精细化地定位人脸关键点和提取人脸特征。
|
||||
|
||||
MTCNN可以同时完成人脸位置的精准定位、人脸对齐和特征提取,从而在人脸识别应用中发挥关键作用。
|
||||
|
||||
|
||||
|
||||
# 6. 实验结果
|
||||
|
||||
通过对相关知识的学习后,小组成员们最后完成了使用python语言在自己的pc机上完成了调取摄像头画面并框选人脸的任务。不过不尽人意的是由于条件的限制,不能够识别框选出侧脸。
|
||||
|
||||
<img src="333.png" alt="cover" style="zoom: 33%;" />
|
||||
|
||||
|
||||
|
||||
# 7. 实验感想
|
||||
|
||||
通过实现人脸识别项目,我们深刻体会到了团队合作的重要性和技术创新的挑战。在实验过程中,我们遇到了多种技术难题,例如算法优化和数据处理。通过共同努力,我们克服了这些难关,实现了高效的人脸识别。这个过程不仅提升了我们的编程能力和问题解决技巧,也让我们更深刻地理解了人脸识别技术的潜力与局限。
|
||||
BIN
Lab/5_FaceDetection/人脸识别_第9组_柯劲帆_李桦炅_王子励_李志民.pdf
Normal file
BIN
Lab/5_FaceDetection/人脸识别_第9组_柯劲帆_李桦炅_王子励_李志民.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user