测试场景:
测试对象:
测试范围:基于不同需求测试项,测试算法精度
测试项 |
说明 |
是否需要测试 |
优先级 |
备注 |
瞳孔状态 |
静止、移动 |
是 |
P0 |
已与研发确认 |
双目锁定 |
单人 |
是 |
P0 |
|
干扰 |
遮挡、是否佩戴眼镜 |
是 |
P0 |
|
光照 |
室内 |
是 |
P1 |
|
室外 |
否 |
P2 |
||
资源消耗 |
CPU、GPU、Memory |
否 |
P2 |
评测指标
维度 |
指标 |
计算方式 |
说明 |
测试优先级 |
是否需要测试 |
备注 |
准确度 accuracy |
均方根误差 |
RMSE=√Σ(Yi-Yi^) ²/n |
衡量估计值与真实值的平均误差 |
P0 |
是 |
已与研发确认 |
精确度 precision |
相对位移 |
D=-(xC−xA,yC−yA,zC−zA)-|dc-da|/n |
衡量每两次的估计值与真实值的相对位移差值 |
P0 |
是 |
|
平均绝对误差 |
MAE = (Σ|xi - yi|) / N |
衡量估计值和真实值之的平均绝对误差分布 |
P1 |
是 |
||
标准差 |
σ = √[Σ(xi-μ)²/n] |
衡量估计值的分散度 |
P2 |
否 |
||
连续漏检率 cfnr |
CFNR |
首帧检测时间、时间离散和集中程度、丢帧率 |
连续时间内的漏检帧数采样 |
P1 |
是 |
|
漏检率 fnr |
FNR |
FN / FN + TP |
正例样本帧数采样 |
P2 |
否 |
|
误报率 fpr |
FPR |
FP / FP + TN |
负例样本帧数采样 |
P2 |
否 |
评测指标-误报率
脚本设计方案:
使用OpenCV库进行本地视频中的面部和眼部检测,并将检测到的帧保存到磁盘
编号 |
名称 |
用途及特点 |
备注 |
1 |
UnityEyes Dataset |
计算机图形学、虚拟现实和眼动追踪 |
三维坐标。三维数据集不可用原因: 1. 算法数据格式:左右相机图像+相机内外参+瞳孔三维坐标 2. tobii 提供的SDK接口无法直接操作摄像头输入,即使是数据集格式符合条件,也不具备可操作性 |
2 |
TEyeD |
包含 2000 多万张图像,眼动数据集 |
二维坐标。二维数据集不符合3D精度要求 |
3 |
BioID Face Database |
瞳孔检测和人脸识别的研究 |
|
4 |
MPIIGaze Dataset |
瞳孔定位和视线追踪 |
|
5 |
UT Multiview Datase |
多视图瞳孔数据,瞳孔追踪和检测 |
|
6 |
GazeCapture |
不同摄像头和场景的眼睛追踪数据 |
开发数据集
编号 |
名称 |
用途及特点 |
备注 |
1 |
ColumnbiaGaze |
眼动跟踪和注视点估计 |
- |
2 |
GI4E |
人眼瞳孔中心检测 |
|
3 |
MPIIFaceGaze |
视线跟踪技术数据集 |
|
4 |
LFW |
人脸识别的数据集 |
二维图像 |
5 |
UBIRIS v2 |
虹膜识别数据集 |
|
6 |
GazeCapture |
不同摄像头和场景的眼睛追踪数据 |
二维坐标 |
论文参考
[1] Macneil R .Tracking the Closed Eye by Calibrating Electrooculography with Pupil-Corneal Reflection[J]. 2020.DOI:10.14288/1.0394158.
[2] Fuhl W , Weber D , Kasneci E .Pistol: Pupil Invisible Supportive Tool to extract Pupil, Iris, Eye Opening, Eye Movements, Pupil and Iris Gaze Vector, and 2D as well as 3D Gaze[J]. 2022.DOI:10.48550/arXiv.2201.06799.
[3] Ou W L , Kuo T L , Chang C C ,et al.Deep-Learning-Based Pupil Center Detection and Tracking Technology for Visible-Light Wearable Gaze Tracking Devices[J].Applied Sciences, 2021.DOI:10.3390/app11020851.
[4] Fei X , Zhang Y , Kong D ,et al.Quantitative Model Study of the Psychological Recovery Benefit of Landscape Environment Based on Eye Movement Tracking Technology[J]. 2023.
[5]Diane C. Mézière, Yu L , Reichle E D ,et al.Using Eye‐Tracking Measures to Predict Reading Comprehension[J].Reading Research Quarterly, 2023, 58(3):425-449.
[6] Cheng S , Ping Q , Wang J ,et al.EasyGaze:Hybrid eye tracking approach for handheld mobile devices[J].虚拟现实与智能硬件(中英文), 2022(002):004.
人眼数据集通常用于眼部相关的计算机视觉、眼动追踪、瞳孔检测、情感识别以及生物特征识别等领域的研究和开发。以下是一些常见的人眼数据集:
-
BioID Face Database: 这个数据库包含1,521张近距离的人脸图像,其中包括瞳孔位置的标记。它通常用于瞳孔检测和人脸识别的研究。
-
Columbia Gaze Data Set: 这个数据集包含56名参与者的近距离肖像图像,每名参与者提供了9张图像,其中包括注视点的标记。这个数据集通常用于研究注视点估计。
-
MPIIGaze Dataset: 这个数据集包括多个参与者的眼部图像,每个参与者在室内和室外环境下进行拍摄。它用于研究眼动追踪和注视点估计。
-
UnityEyes Dataset: 这个数据集包括以3D模型生成的虚拟眼部图像。它通常用于眼动追踪和瞳孔检测的研究。
-
GazeCapture Dataset: 该数据集包含来自移动设备的用户眼睛图像,被广泛用于研究用户的视线和注视点。
-
UT Multiview Dataset: 这个数据集包含多视图图像,用于眼部特征提取和眼部运动研究。
这些数据集在不同研究领域和应用中都有其特定的用途。在研究中,根据需要选择一个适合的数据集,并确保遵守数据使用的相关规定和协议。这些数据集通常由学术界或研究机构提供,可以在它们的官方网站或研究论文中找到更多信息。
下载xml依赖-面部 眼部文章来源:https://www.toymoban.com/news/detail-848044.html
https://github.com/opencv/opencv/blob/4.x/data/haarcascades/haarcascade_eye.xml文章来源地址https://www.toymoban.com/news/detail-848044.html
import cv2
import os
# 加载Haar级联分类器文件
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 打开本地视频文件
video_path = '1.mp4'
cap = cv2.VideoCapture(video_path)
# 检查视频是否成功打开
if not cap.isOpened():
print("无法打开视频文件")
exit()
# 创建目录用于保存分帧图片
output_dir = 'frames'
if not os.path.exists(output_dir):
os.makedirs(output_dir)
frame_count = 0
eye_detected_count = 0
face_detected_count = 0
frame_filename_list = []
frame_filename_no_eyes = []
while True:
ret, frame = cap.read()
if not ret:
break
frame_count += 1
frame_filename = 0
# 在每一帧上检测眼部
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
eyes = eye_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
if len(eyes) > 0:
eye_detected_count += 1
for (ex, ey, ew, eh) in eyes:
# 在眼部位置显示红色点阵
cv2.circle(frame, (ex + ew // 2, ey + eh // 2), 10, (0, 0, 255), -1)
else:
# 未检测到眼部的分帧图片
frame_filename = os.path.join(output_dir, f'frame_{frame_count:04d}_no_eyes.jpg')
cv2.imwrite(frame_filename, frame)
frame_filename_no_eyes.append(frame_filename)
# 在每一帧上检测面部
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
if len(faces) > 0:
face_detected_count += 1
for (fx, fy, fw, fh) in faces:
# 在面部位置显示绿色矩形
cv2.rectangle(frame, (fx, fy), (fx + fw, fy + fh), (0, 255, 0), 2)
cv2.imshow('Face and Eye Detection', frame)
# 按Esc键退出检测窗口
if cv2.waitKey(1) == 27:
break
# 保存分帧图片
frame_filename = os.path.join(output_dir, f'frame_{frame_count:04d}.jpg')
cv2.imwrite(frame_filename, frame)
# 释放视频捕获对象
cap.release()
cv2.destroyAllWindows()
# 打印统计信息
print(f"总帧数: {frame_count}")
print(f"检测到眼部的帧数: {eye_detected_count}")
print(f"检测到面部的帧数: {face_detected_count}")
print(f"未检测到眼部的图片数: {len(frame_filename_no_eyes)}")
print("未检测到眼部的图片名称:")
for filename in frame_filename_no_eyes:
print(filename)
到了这里,关于3D双目跟踪瞳孔识别瞳孔定位算法测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!