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

news2024/11/16 2:53:02

目录

一、实验目的

二、实验环境

三、实验步骤

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.coloradmin.cn/o/2105755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElasticSearch分布式搜索引擎入门

一、ElasticSearch Elasticsearch是一个基于 Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布, 是一种流行的企业级搜索引擎。…

图像白平衡

目录 效果 背景 什么是白平衡? 实现原理 将指定图色调调整为参考图色调主要流程 示例代码 效果 将图一效果转换为图二效果色调: 调整后,可实现色调对换 背景 现有两张图像,色调不一致,对于模型重建会有影响。因…

海洋运输船5G智能工厂物联数字孪生平台,推进制造业数字化转型

海洋运输船5G智能工厂物联数字孪生平台,推进制造业数字化转型。在当今全球制造业的浪潮中,数字化转型已成为不可逆转的趋势,它不仅重塑了生产流程,更深刻影响着企业的竞争力与可持续发展能力。其中,海洋运输船5G智能工…

基于python的Selenium webdriver环境搭建(笔记)

一、PyCharm安装配置Selenium环境 本文使用环境:windows11、Python 3.8.1、PyCharm 2019.3.3、Selenium 3.141.0 测试开发环境搭建综述 安装python和pycharm安装浏览器安装selenium安装浏览器驱动测试环境是否正确 这里我们直接从第三步开始 1.1 Seleium安装…

QT实现文本的读写

使用QT读写文件 来,在程序中文件的读写是非常重要的,毕竟我们在大多数时候都是要访问文本文件的,那么今天就来学习一下怎么使用QT来读写文件。 1.写界面 直接在ui界面中编辑即可 布局小技巧我们先选择两个按钮,然后水平布局&am…

iOS18 beta版本怎么回退至iOS17正式版本?

截止目前,苹果最近的iOS18的beta测试版本已经发了8版了,有许多朋友们都已升级提前尝鲜了,升级体验后许多果粉朋友们觉得有许多功能还是不够稳定,有些许bug,就想要降级,回退到iOS17的正式版,但又…

deep-live-cam实时换中文整合包下载,双击exe直接运行

windows环境整合包下载地址: 点击下载 直接解压,双击启动.exe即可使用 硬件要求:有英伟达显卡,且要支持CUDA 硬件不符合要求也不用急,软件也有对应mac版本和windows非N卡版本,我还没做成整合包,…

2. GIS数据工程师岗位职责、技术要求和常见面试题

本系列文章目录: 1. GIS开发工程师岗位职责、技术要求和常见面试题 2. GIS数据工程师岗位职责、技术要求和常见面试题 3. GIS后端工程师岗位职责、技术要求和常见面试题 4. GIS前端工程师岗位职责、技术要求和常见面试题 5. GIS工程师岗位职责、技术要求和常见面试…

沐风老师3DMax地形拟合插件使用方法详解

3DMax地形拟合插件使用教程 3DMax地形拟合插件,只需单击几下鼠标,即可将地形表面与道路对齐。它很容易使用。 (注意:如果不仔细阅读,会误认为是这是一个道路拟合(投影)到地形的插件&#xff0c…

HarmonyOS开发实战( Beta5版)高负载组件的渲染实践规范

简介 在应用开发中,有的页面需要在列表中加载大量的数据,就会导致组件数量较多或者嵌套层级较深,从而引起组件负载加重,绘制耗时增长。虽然可以通过组件复用避免组件重复创建,但是如果每个列表项中包含的组件较多&…

C/C++:函数指针

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 引言函数指针的概念函数指针的实现C语言实现C实现 函数指针的应用 引言 我们之前学过各种各样指针,今天我们来讨论一下函数指针 我们先分析C和C不同定义函数指针的方式,然后进…

uniapp去除顶部标题栏

相信很多同学和我一样,刚学uniapp的时候想去除自带的这个标题栏不知道如何去除🤪 其实很简单,只需两个步骤即可彻底除掉,首先找到项目文件夹下的pages.json路由文件点开,在这个文件里可以看到你创建的所有页面&#x…

git修改提交名字

大家在使用git的时候,有的时候可能不是使用自己的账号,或者说账号的信息不符合自己的预期,具体表现在什么地方呢?在提交代码的时候,名字不是自己的,或者是名字不是自己想要的。 下面就是如何查看和修改。 …

视频智能分析平台LntonAIServer视频质量诊断功能花屏、抖动、遮挡等检测

LntonAIServer新增了视频质量诊断功能,该功能专注于提升视频监控系统的稳定性和可用性,主要通过自动化检测来识别视频流中常见的质量问题,比如花屏、抖动、遮挡等问题。这些问题是影响视频监控效果的主要因素之一,而自动化的检测能…

K8S介绍及Kubeadm方式安装K8S(前期工作)

1.K8S介绍 1.Kubernetes简介 Kubernetes 缩写:K8S,k 和 s 之间有八个字符,所以因此得名。 Kubernetes 由 google 的 Brog 系统作为原型,后经 Go 语言延用 Brog 的思路重写,并捐献给 CNCF 基金会开源。 Kubernetes …

ts函数的参数加一个_是什么意思

先说一下总结,在TypeScript(TS)和Vue 3项目中,给函数的参数加一个下划线(_)前缀通常是一种约定或习惯,用来表示该参数在当前函数体内是故意未使用的,需要注意的是,这种做…

电脑开机出现no operation system found错误原因分析及解决方法

最近有网友问我电脑一启动提示:no operation system found,这个提示意思是未找到操作系统。并且出现bios能认别硬盘,快捷启动时找不到硬盘,出现该提示的原因有很多,下面我们来详细分析一下开机出现no operation system…

我的世界桃花源官网源码 游戏官网

我的世界桃花源官网源码 游戏官网 源码下载:https://download.csdn.net/download/m0_66047725/89714345 更多资源下载:关注我。

【python因果推断库6】使用 pymc 模型的工具变量建模 (IV)1

目录 使用 pymc 模型的工具变量建模 (IV) 使用 pymc 模型的工具变量建模 (IV) 这份笔记展示了一个使用工具变量模型(Instrumental Variable, IV)的例子。我们将会遵循 Acemoglu, Johnson 和 Robinson (2001) 的一个案例研究,该研究尝试解开…

MemLong: 长文本的新记忆大师,可将上下文长度从4k提升到80k!

这篇文章介绍了一个名为MemLong的模型,它通过使用外部检索器来增强长文本建模的能力。MemLong结合了一个不可微的检索-记忆模块和一个部分可训练的解码器-仅语言模型,并引入了一种细粒度、可控的检索注意力机制,利用语义级别的相关块。在多个…