【psychopy】【脑与认知科学】认知过程中的面孔识别加工
目录
实验描述
实验思路
python实现
实验描述
现有的文献认为,人们对倒置的面孔、模糊的面孔等可能会出现加工时长增加、准确率下降的问题,现请你设计一个相关实验,判断不同的面孔是否会出现上述现象。请按照认知科学要求,画出对应的实验流程图,并叙述实验的对照组如何设置,并分析实验结果。
熟悉程度判断实验举例:可以显示大家都认识的名人。也可以是陌生人,让被试先通过照片打乱顺序看几遍,再进入判断阶段,判断该照片是否看过。然后通过正确率、反应时等指标进行比较。
实验思路
我们首先准备好一个包含128个人的人脸照片,如图1所示,其中64张为男生,64张为女生。

图1
我们实验的设计思路是,先从这128张照片中随机选出15张照片,然后向被试者展示这15张照片的前10张照片,并提示被试者尝试记住它们,然后从展示过的照片中随机选出5张和刚刚选取的15照片中未展示的后5张照片组成10张照片,打乱这10张照片的顺序,再次展示给被试者,被试者需要判断该图片是否展示过,记录过程中的正确率和反应时间。
实验流程图如图2所示。

图2
我们设置了三个对照组。
- 原始照片对照组:这是基准对照组,接受未经过任何处理的原始照片。这个对照组的目的是确定参与者在没有任何外部干扰的情况下的表现,从而提供一个基准水平。
- 倒置照片对照组:这个对照组接受倒置的照片,以比较参与者在处理倒置图像时的表现。这个对照组可以帮助确定倒置图像对认知能力的影响。
- 模糊照片对照组:这个对照组接受模糊的照片,以比较参与者在处理模糊图像时的表现。这个对照组可以帮助确定模糊图像对认知能力的影响。
我们全程使用python的psychopy库完成实验的设计。
我们首先写一个函数,用于展示提示文字,被试者可以按任意键结束提示,如图3所示。

图3
然后从我们的人脸数据库中随机选出15张照片,然后向被试者展示这15张照片的前10张照片,并提示被试者尝试记住它们,每张照片展示2秒,如图4所示。

图4
然后从展示过的照片中随机选出5张和刚刚选取的15照片中未展示的后5张照片组成10张照片,打乱这10张照片的顺序,再次展示给被试者,被试者需要判断该图片是否展示过,如果展示过则输入Y,没有展示过则输入N,如图5所示。

图5
记录过程中判断的正确率与被试者的反应时间,并输出反馈结果到窗口中,如图6所示。

图6
最后将数据写入excel文件,如图7所示。

图7
对于图片的倒置处理,我们可以设置图片展示的旋转度为180度,如图8所示。

图8
对于图片的模糊处理,我们使用python的模糊滤波器库函数进行对图片模糊处理,如图9所示。

图9
然后我们开始运行程序,首先展示的是提示文字,如图10所示。

图10
原始图片组实验展示的图片如图11所示。

图11
倒置图片对照组展示的倒置图片如图12所示。

图12
模糊图片对照组展示的模糊图片如图13所示。

图13
然后显示提示文字,如图14所示。

图14
然后被试者判断展示的图片是否出现过,会给出判断结果和反应时间,如图15所示,为判断正确的结果。

图15
判断错误的结果如图16所示。

图16
经过多次实验,我们可以得到三组实验每组30次的记录数据,如图17所示。

图17
我们将数据进行整理,计算出每组实验的正确率,如图18所示。

图18
每组实验记录的平均反应时间如图19所示。

图19
由实验结果可以知道,人脸对于经过倒置和模糊处理的图像存在反应时间加长的情况,而且倒置处理比模糊处理的时长增加的更加明显。而对于正确率,实验结果显示,正确率最高的是模糊图片,其次是正常图片和倒置图片。
倒置图片的正确率比较低是因为人们在日常生活中接触到的大多数视觉信息都是正常方向的,我们对正常方向的物体和场景有更多的经验和熟悉度。当图片被倒置时,它与我们通常的观察经验不符,这可能导致我们处理图像时出现困惑或错误,也使得我们处理图像以及提取特征更加困难。
而模糊图片的正确率比较高可能是因为模糊图像可能会引起被试者更多的注意力,因为被试者需要更加集中精力去解释和理解图像,模糊图像通过简化和平滑图像,降低被试者的认知负荷,不需要处理过多的细节和复杂性,可以使被试者更容易理解和处理图像,当然也有可能是实验测试次数较少的原因。
python实现
import os
import random
import pandas
from psychopy import visual, event, core# 展示提示文字
def showCue(text):cue = visual.TextStim(win, text=text, pos=(0, 0))cue.draw()win.flip()event.waitKeys()facesPath = 'face'
faces = os.listdir(facesPath)
showFaces = random.sample(faces, 15)
win = visual.Window(size=(1000, 618))
showCue('将展示10张照片,每张照片展示2秒\n请尝试记住它们,按任意键开始')
for face in showFaces[:10]:facePath = os.path.join(facesPath, face)faceImage = visual.ImageStim(win, image=facePath)faceImage.draw()win.flip()core.wait(2)
showedFaces = random.sample(showFaces[:10], 5) # 随机取出5张展示过的照片
showFaces = showedFaces + showFaces[10:] # 取出未展示过的5张照片和展示过的照片组合在一起
random.shuffle(showFaces) # 重新打乱图片顺序
showCue('接下来将展示10张照片\n你需要判断该照片是否出现过\n如果出现过请按Y,否则请按N\n按任意键开始')
data = {'结果': [], '反应时间': []}
for face in showFaces[:10]:Time = core.Clock()facePath = os.path.join(facesPath, face)faceImage = visual.ImageStim(win, image=facePath)faceImage.draw()win.flip()key = event.waitKeys(keyList=['y', 'n'])time = Time.getTime()if key[0] == 'y' and face in showedFaces or key[0] == 'n' and face not in showedFaces:result = '正确'else:result = '错误'showCue(result + '!反应时间为' + str(time) + '秒!\n' + '按任意键继续')data['结果'].append(result)data['反应时间'].append(time)
win.close()
# 将数据写入excel
excel = 'normalData.xlsx'
df = pandas.DataFrame(data)
try:DF = pandas.read_excel(excel) # 该execl文件已经存在则追加数据DF = pandas.concat([DF, df], ignore_index=True)DF.to_excel(excel, index=False)
except FileNotFoundError: # 没有该excel文件将创建一个新的df.to_excel(excel, index=False)
相关文章:
【psychopy】【脑与认知科学】认知过程中的面孔识别加工
目录 实验描述 实验思路 python实现 实验描述 现有的文献认为,人们对倒置的面孔、模糊的面孔等可能会出现加工时长增加、准确率下降的问题,现请你设计一个相关实验,判断不同的面孔是否会出现上述现象。请按照认知科学要求,画…...
File类的常用API
判断文件类型 public boolean isDirectory() public boolean isFile() 获取文件信息 public boolean exists() public String getAbsolutePath() public String getPath() 返回创建文件对象时传入的抽象路径的字符串形式 public String getName() public long lastModi…...
02【Git分支的使用、Git回退、还原】
上一篇:01【Git的基本命令、底层命令、命令原理】 下一篇:03【Git的协同开发、TortoiseGit、IDEA的操作Git】 文章目录 02【Git分支的使用、Git回退、还原】一、分支1.1 分支概述1.1.1 Git分支简介1.1.2 Git分支原理 1.2 创建分支1.2.1 创建普通分支1.…...
Qt文件 I/O 操作
一.QFile 文件读取 QIODevice::ReadOnly QString filePath"/home/chenlang/RepUtils/1.txt"; QFile file(filePath); 1.逐行读取 if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {QTextStream in(&file);while (!in.atEnd()) {QString line i…...
Springboot 使用JavaMailSender发送邮件 + Excel附件
目录 1.生成Excel表格 1.依赖设置 2.代码: 2.邮件发送 1.邮件发送功能实现-带附件 2.踩过的坑 1.附件名中文乱码问题 3.参考文章: 需求描述:项目审批完毕后,需要发送邮件通知相关人员,并且要附带数据库表生成的…...
软件工程——期末复习知识点汇总
本帖的资料来源于某国内顶流高校的期末考试资料,仅包含核心的简答题,大家结合个人情况,按需复习~ 总的来说,大层面重点包括如下几个方面: 软件过程需求工程 设计工程软件测试软件项目管理软件过程管理 1.掌握软件生命…...
postgresSQL 数据库本地创建表空间读取本地备份tar文件与SQL文件
使用pgAdmin4,你安装PG得文件夹****/16/paAdmin 4 /runtime/pgAdmin4.exe 第一步:找到Tablespaces 第二步:创建表空间名称 第三步:指向数据文件 第四步:找到Databases,创建表空间 第五步:输入数…...
Elasticsearch跨集群检索配置
跨集群检索字面意思,同一个检索语句,可以检索到多个ES集群中的数据,ES集群默认是支持跨集群检索的,只需要动态的增加入节点即可,下面跟我一起来体验下ES的跨集群检索的魅力。 Elasticsearch 跨集群检索推荐的是不同集群…...
第九章 软件BUG和管理
一、学习目的与要求 软件测试的目的就是为了发现软件BUG。通过本章的学习,应了解软件BUG的产生和影响,掌握软件开发过程中产生的BUG种类,掌握使BUG重现的技术,了解软件BUG报告单应该包括的主要内容及软件BUG的管理流程。 二、考核…...
大厂面试题-Java并发编程基础篇(二)
目录 一、wait和notify这个为什么要在synchronized代码块中? 二、ThreadLocal是什么?它的实现原理呢? 三、基于数组的阻塞队列ArrayBlockingQueue原理 四、怎么理解线程安全? 五、请简述一下伪共享的概念以及如何避免 六、什…...
测绘屠夫报表系统V1.0.0-beta
1. 简介 测绘屠夫报表系统,能够根据变形监测数据:水准、平面、轴力、倾斜等数据,生成对应的报表,生成报表如下图。如需进一步了解,可以加QQ:3339745885。视频教程可以在bilibili观看。 2. 软件主界面 3. …...
『力扣刷题本』:移除链表元素
一、题目 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]示例 2: 输入&a…...
图像特征Vol.1:计算机视觉特征度量|第一弹:【纹理区域特征】
目录 一、前言二、纹理区域度量2.1:边缘特征度量2.2:互相关和自相关特征2.3:频谱方法—傅里叶谱2.4:灰度共生矩阵(GLCM)2.5:Laws纹理特征2.6:局部二值模式(LBP) 一、前言 …...
day01:数据库DDL
一:基础概念 数据库:存储数据的仓库,数据是有组织的进行存储 数据库管理系统:操纵和管理数据库的大型软件 SQL:操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 关系图 二:数据模型 关系型数据库:建…...
9、定义错误页
在layouts目录下新建error.vue,可以通过layout函数使用布局文件,通过props: [“error”]能拿到错误信息对象。 <template><div>{{ error.statusCode }}: {{ error.message }}</div> </template><script> export default {…...
有关多线程环境下的Volatile、lock、Interlocked和Synchronized们
📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅…...
spring boot利用redis作为缓存
一、缓存介绍 在 Spring Boot 中,可以使用 Spring Cache abstraction 来实现缓存功能。Spring Cache abstraction 是 Spring 框架提供的一个抽象层,它对底层缓存实现(如 Redis、Ehcache、Caffeine 等)进行了封装,使得在…...
Android Studio 查看Framework源码
1、背景 安卓系统源码量很庞大,选择好的开发工具和方式去开发可以提升开发效率,常用的开发工具有Source Insight 、Visual Studio Code、Android Studio,vscode适合C和C代码开发,java层代码无法跳转和提示,因此&#…...
FileInputStream文件字节输入流
一.概念 以内存为基准,把磁盘文件中的数据以字节形式读入内存中 二.构造器 public FileInputStream(File file) public FileInputStream(String pathname) 这两个都是创建字节输入流管道与源文件接通 三.方法 public int read() :每次读取一个字节返回,如…...
【Qt】窗口和对话框区别、主窗口和二级窗口区别、QMainWindow和QDialog区别
窗口和对话框(Window and Dialog Widgets) 未嵌入在父界面中的界面称为窗口。(通常,窗口具有边框和标题栏,尽管也可以使用合适的窗口标志创建没有此类标志的窗口)。 在Qt中,QMainWindow和QDial…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
