实验报告: lookie-lookie 项目测试与分析

目录

一、实验目的

二、实验环境

三、实验步骤

1. 下载与准备项目

1.1 从 GitHub 获取项目

1.2 查看项目文件结构

2. 运行项目

2.1 启动项目

2.2 浏览器设置

3. 项目体验

3.1 功能测试

3.2 运行截图

4. 文件结构分析

4.1 总体结构

4.2 主要文件和目录说明

5. 数据传输分析

5.1 前端与摄像头的交互

5.2 TensorFlow.js 模型的加载与推理

5.3 数据安全与隐私

四、实验结果

1. 运行效果

2. 性能分析

3. 用户体验

五、实验总结


一、实验目的

        本次实验的主要目的在于运行和分析一个基于 TensorFlow.js 的静态网页项目——lookie-lookie。该项目能够在浏览器中通过摄像头实时追踪用户的眼球运动,且无需任何后端支持。通过本次实验,我们将深入了解前端如何结合机器学习技术实现实时的用户交互功能,并分析项目的文件结构和数据传输机制。

二、实验环境

  • 操作系统: Windows 11
  • 浏览器: Microsoft Edge
  • 项目依赖: 无需安装额外依赖,纯静态网页项目,基于 TensorFlow.js

三、实验步骤

1. 下载与准备项目

1.1 从 GitHub 获取项目

  • 访问 lookie-lookie 的 GitHub 项目页面。cpury/lookie-lookie: Learning to track eye movement in the browser (github.com)
  • 点击绿色的 Code 按钮,选择 Download ZIP 将项目下载到本地。
  • 将下载的 ZIP 文件解压到指定的工作目录。

1.2 查看项目文件结构

打开解压后的项目文件夹,查看其内部结构,主要包含以下文件和文件夹:

  • index.html
  • style.css
  • normalize.css
  • js/ 文件夹
  • blogcode/ 文件夹
  • hint.mp3
  • README.md
  • LICENSE
  • package-lock.json
  • .gitignore

2. 运行项目

2.1 启动项目

  • 在文件浏览器中,双击 index.html 文件,默认使用 Microsoft Edge 浏览器打开。

2.2 浏览器设置

  • 首次打开页面时,浏览器会请求访问摄像头的权限。
  • 点击 允许,授权网页访问本地摄像头。

3. 项目体验

3.1 功能测试

  • 在摄像头启用后,页面开始实时捕捉并追踪用户的眼球运动。
  • 移动眼睛,观察页面上对应的反馈和显示效果。
  • 测试在不同光照条件和距离下的追踪效果和准确性。

3.2 运行截图

  • 截图1: 项目初始界面
  • 截图2: 眼球追踪进行中
  • 截图3: 不同光照条件下的追踪效果

4. 文件结构分析

4.1 总体结构

lookie-lookie-master/
├── assets/
│   ├── images/        # 存储图片资源
│   └── sounds/        # 存储音频资源
├── js/
│   ├── vendor/        # 存储第三方库或依赖文件
│   │   └── clmtrackr.js
│   ├── dataset.js     # 自定义数据集相关逻辑
│   ├── facetracker.js # 人脸跟踪相关代码
│   ├── globals.js     # 全局变量或配置
│   ├── heat.js        # 热图生成或显示相关逻辑
│   ├── main.js        # 主逻辑文件,启动和管理整个应用
│   ├── mouse.js       # 鼠标交互相关代码
│   ├── training.js    # 训练模型或数据的逻辑
│   └── ui.js          # 用户界面相关逻辑
├── blogcode/
│   ├── clmtrackr.js   # 相关测试代码或示例
│   ├── index.html     # 示例页面
│   └── main.js        # 示例项目主逻辑文件
├── index.html         # 项目主页面
├── style.css          # 项目主样式文件
├── normalize.css      # 样式标准化文件
├── hint.mp3           # 提示音效文件
├── README.md          # 项目说明文档
├── LICENSE            # 许可证文件
├── package-lock.json  # 记录项目依赖的版本信息
└── .gitignore         # Git 忽略文件配置

4.2 主要文件和目录说明

  • assets/ 文件夹:用于存储所有的图片和音频等静态资源,按照类别进行进一步划分。

  • js/ 文件夹

    • vendor/:用于存放所有第三方库或依赖文件,如 clmtrackr.js
    • 其他文件则是项目的核心逻辑代码,按照功能模块分布在不同的文件中,如主逻辑、数据集处理、人脸跟踪、UI 处理等。
  • blogcode/ 文件夹:存放博客文章或项目示例相关的代码,如果这些文件不是项目运行的必要部分,可以将它们独立存放。

  • index.html:项目的主页面,通常放在根目录。

  • style.cssnormalize.css:CSS 文件可以放在根目录,或者根据项目复杂度将其放入 assets/styles/ 之类的文件夹中。

  • README.md:项目说明文件,包含项目的描述、使用方法、依赖说明等。

  • LICENSE:项目的许可证文件。

  • package-lock.json.gitignore:用于管理项目依赖和版本控制的文件。

5. 数据传输分析

5.1 前端与摄像头的交互

  • 媒体流获取: 通过调用浏览器的 getUserMedia API,获取用户设备的摄像头视频流。

  • // set up video

      if (navigator.mediaDevices) {

        navigator.mediaDevices

          .getUserMedia({

            video: true,

          })

          .then(facetracker.gumSuccess)

          .catch(facetracker.gumFail);

      } else if (navigator.getUserMedia) {

        navigator.getUserMedia(

          {

            video: true,

          },

          facetracker.gumSuccess,

          facetracker.gumFail,

        );

      } else {

        ui.showInfo(

          'Your browser does not seem to support getUserMedia. 😭 This will probably only work in Chrome or Firefox.',

          true,

        );

      }

  • 视频帧捕获: 将实时的视频帧传递给 TensorFlow.js 模型进行处理,实现实时的眼球追踪。

5.2 TensorFlow.js 模型的加载与推理

  • 模型加载: 在浏览器中使用 TensorFlow.js 加载预训练的眼球追踪模型。模型文件通常以 JSON 格式存储,并伴随有二进制权重文件。

  • 数据预处理: 将从摄像头获取的图像数据进行预处理,如缩放、灰度化、归一化等,以适配模型的输入要求。

  • 实时推理: 处理每一帧视频数据,模型输出眼球的位置坐标,然后在页面上渲染相应的视觉反馈。

5.3 数据安全与隐私

  • 本地处理: 所有的视频数据和模型推理均在本地浏览器中完成,没有数据上传到服务器,保障了用户的隐私和数据安全。

  • 权限控制: 浏览器在首次访问摄像头时会请求用户授权,用户可随时撤销该权限。

四、实验结果

1. 运行效果

  • 项目成功在 Microsoft Edge 浏览器中运行,实现了对用户眼球运动的实时追踪。
  • 界面简洁直观,交互顺畅,响应速度快。

2. 性能分析

  • 响应性: 在硬件性能良好的设备上,眼球追踪的延迟极低,几乎实现了实时响应。
  • 准确性: 在良好的光照条件下,追踪结果准确稳定;在弱光或过曝情况下,准确性会有所下降。
  • 资源占用: 项目对 CPU 和内存的占用较为合理,长时间运行不会导致浏览器卡顿。
  • 兼容性: 除了 Microsoft Edge,项目在其他主流浏览器(如 Chrome、Firefox)中也能正常运行。

3. 用户体验

  • 易用性: 项目操作简单,用户只需授权摄像头权限即可开始体验。
  • 趣味性: 实时的眼球追踪带来了新颖的交互方式,具有一定的娱乐和实用价值。
  • 拓展性: 项目可进一步扩展,结合其他交互元素实现更丰富的功能,如页面滚动、元素选取等。

五、实验总结

        通过本次实验,我们成功运行并分析了基于 TensorFlow.js 的静态网页项目 lookie-lookie,深入了解了前端如何结合机器学习技术实现实时的用户交互功能。

收获与体会:

  • 技术融合: 体验了如何在浏览器环境中利用 TensorFlow.js 实现复杂的计算任务,无需借助后端服务器,体现了前端技术的强大和灵活性。
  • 数据安全: 了解到在本地浏览器中处理敏感数据(如摄像头视频流)的重要性和实现方式,增强了对用户隐私保护的认知。
  • 项目结构: 通过对文件结构的分析,理解了一个完整的前端项目应如何组织代码和资源,以实现高可维护性和可扩展性。
  • 性能优化: 认识到在实时应用中,如何通过优化数据处理和模型推理流程,提升应用的响应速度和用户体验。

改进与建议:

  • 模型优化: 可尝试优化或更换更高效的模型,以提升在低性能设备上的运行效果。
  • 多浏览器兼容性测试: 进一步测试并优化项目在更多浏览器和操作系统上的兼容性。
  • 功能扩展: 增加更多的交互功能,如根据眼球运动控制页面元素,实现无触控操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/416350.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

09-03 周二 ansible部署和节点管理过程

09-03 周二 ansible部署和节点管理过程 时间版本修改人描述2024年9月3日10:08:58V0.1宋全恒新建文档, 简介 首先要找一个跳板机,来确保所有的机器都可以访问。然后我们围绕ansible来搭建环境,方便一键执行所有的命令,主要的任务是…

SQL语言的规则和规范

规则 是什么呢,规则就是我们最基本,每时每刻都要遵守的比如人行道靠右,不能逆行, 规范 呢就是锦上添花,如果你不这么做,是不那么道德,不那么好的,就像小学生见到老师要问好&#…

机器学习:opencv图像识别--图片运算、边界、阈值处理、平滑处理

目录 一、图片运算 1.加法 1. 2.add 3.加权相加 2.减法 二、图片边界 三、图像阈值处理 四、图像平滑处理 1.生成椒盐噪声 2.滤波器 1.均值滤波 2.方框滤波 3.高斯滤波 4.中值滤波 一、图片运算 1.加法 1. 直接将图片上每个像素点的值加上给定值或者两张图片…

wpf image source绑定相对路径方法

当使用image source绑定相对路径图片资源时&#xff0c;出现问题&#xff1a;未能找到路径C:\windows/System32…路径的一部分 解决方法&#xff1a; 将文件放到指定文件夹中包含在当前项目中 具体绑定语句为&#xff1a; <Image Stretch"Fill" x:Name"imgT…

(计算机论文)基于SpringBoot和Vue的台球赛事服务网站的设计与实现

毕业设计&#xff08;论文&#xff09; 博主可接毕设论文&#xff01;&#xff01;&#xff01; 基于SpringBoot和Vue的台球赛事服务网站的设计与实现 摘 要 在快速发展的信息时代&#xff0c;体育竞赛作为群众文化娱乐的一部分&#xff0c;已日益受到广泛关注。台球&#xff…

python 怎样计算字符串的长度

python 计算字符串长度&#xff0c;一个中文算两个字符&#xff0c;先转换成utf8&#xff0c;然后通过计算utf8的长度和len函数取得的长度&#xff0c;进行对比即可知道字符串内中文字符的数量&#xff0c;自然就可以计算出字符串的长度了。 valueu脚本12 length len(value) u…

排查SQL Server中的内存不足及其他疑难问题

文章目录 引言I DMV 资源信号灯资源信号灯 DMV sys.dm_exec_query_resource_semaphores( 确定查询执行内存的等待)查询性能计数器什么是内存授予?II DBCC MEMORYSTATUS 查询内存对象III DBCC 命令释放多个 SQL Server 内存缓存 - 临时度量值IV 等待资源池 %ls (%ld)中的内存…

统计学习与方法实战——K近邻算法

K近邻算法 K近邻算法备注k近邻模型算法距离度量 k k k值选择分类决策规则构造KDTree k k k近邻查找范围查询 代码结构总结 K近邻算法 备注 kNN是一种基本分类与回归方法. 多数表决规则等价于0-1损失函数下的经验风险最小化&#xff0c;支持多分类&#xff0c; 有别于前面的感…

QT做一个USB HID设备识别软件

1.下载 HidApi库&#xff1a;GitHub - yigityuce/HidApi: Human Interface Device Api (HidApi) with C 2.pro文件添加 DEFINES - UNICODE LIBS -lsetupapi 3.h文件 #ifndef My_Usb_Hid_Device_H #define My_Usb_Hid_Device_H#include <QWidget> #include <QStr…

数据结构(6.4_6)——拓扑排序

AOV网 AOV网&#xff1a;用顶点表示活动的网。 用DAG图(有向无环图)表示一个工程&#xff0c;顶点表示活动&#xff0c;有向边<Vi,Vj>表示活动Vi必须先于vj进行 拓扑排序&#xff08;找到做事的先后顺序&#xff09; 对有回路的图进行拓扑排序 拓扑排序的实现代码 回…

Redis过期键监听

在 Redis 中&#xff0c;为了监听过期键事件&#xff0c;需要使用 Redis 的 Keyspace Notifications 功能。这一功能允许客户端订阅某些事件的发生&#xff0c;比如键过期、键删除等。 启用过期键监听 在 Redis 的配置文件 redis.conf 中&#xff0c;确保配置项 notify-keysp…

Python画笔案例-031 绘制器形图

1、绘制蝌蚪 通过 python 的turtle 库绘制器形图&#xff0c;如下图&#xff1a; 2、实现代码 绘制器形图&#xff0c;以下为实现代码&#xff1a; """器形图.py采用前进&#xff0c;倒退&#xff0c;左转&#xff0c;右转命令制作的一个图形。 ""&q…

场外个股期权机构有哪些?

今天带你了解场外个股期权机构有哪些&#xff1f;场外个股期权交易商名单包括了多家券商&#xff0c;这些券商在场外期权市场中扮演着重要的角色。 场外个股期权通常涉及的主要机构包括&#xff1a; 1.投资银行&#xff1a;这些机构常常作为交易的中介或对手方&#xff0c;为…

绝区零苹果电脑能玩吗,如何在Mac上玩绝区零?绝区零MacBook 下载安装保姆级教程

《绝区零》是一款由米哈游开发的都市动作冒险游戏&#xff0c;游戏的故事背景设定在一个名为「新艾利都」的现代化大都市中&#xff0c;玩家将扮演一对「绳匠」兄妹展开冒险。很多玩家都在问苹果电脑笔记本Mac怎么玩绝区零&#xff0c;今天就给大家介绍一下《绝区零》是一款什么…

【UE5】控件蓝图——树视图(TreeView)的基本使用

目录 前言 效果 步骤 一、显示根节点 二、显示子节点 前言 我们在视口中添加1个方块&#xff0c;2个球体&#xff0c;5个圆柱 它们在大纲视图中的层级关系如下&#xff0c;那么如何将这种层级关系显示在树视图中是本篇文章要解决的问题。 效果 步骤 一、显示根节点 1…

跨境电商代购系统中前台基本功能介绍:帮助更快的了解跨境代购业务

前台多语言&#xff1a;可支持语言有中文&#xff08;繁体&#xff09;中文&#xff08;简体&#xff09;英文等。多语言使用百度翻译引擎接口实现&#xff0c;翻译效果与百度一致&#xff1b;网站语言分为两大块&#xff1a;1.系统后台有语言包可以编辑修改网站标题以及发布文…

mongodb在Java中条件分组聚合查询并且分页(时间戳,按日期分组,年月日...)

废话不多说&#xff0c;先看效果图&#xff1a; SQL查询结果示例&#xff1a; 多种查询结果示例&#xff1a; 原SQL&#xff1a; db.getCollection("hbdd_order").aggregate([{// 把时间戳格式化$addFields: {orderDate: {"$dateToString": {"for…

[数据集][目标检测]课堂行行为检测数据集VOC+YOLO格式4065张12类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4065 标注数量(xml文件个数)&#xff1a;4065 标注数量(txt文件个数)&#xff1a;4065 标注…

【MySQL】索引性能分析工具详解——>为sql优化(select)做准备

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…

DS18B20时序抓图

关于时序文字描述参见&#xff1a;DS18B20时序描述 一个完整的读数过程如下&#xff1a; 对应的过程如下&#xff1a; Reset Presence RomCmd:0xCC(Skip Rom) FunCmd:0xBE(Read Scratchpad) Data:0x01A0(Temperature,26) Reset Presence RomCmd:0xCC(Skip Rom) FunCmd:0x44(Co…