所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开
一个也不能少-点名系统-AI挑战赛
ZZ小海鸥 ZZ小海鸥 2020-01-21 21:05:34
1
1
简单
projectImage

设计缘起:

在大学里,每节课,基本都是很多个班级学生混一起在大教室上课,而逃课一直是令校领导和辅导员老师头痛的问题,辅导员,老师也是想尽办法防止学生逃课,比如最常用的手段就是上课点名签到。口头喊到的点名,还是会有其他同学帮喊“到”,而老师又记不清这名学生是不是他本人。

而小学初中高中,常常春游、秋游,每每这时候,是班主任们头疼的时候,“李想、李想,到了没有”,学生们帮老师找,然后才发现“李想”早就到了。找人点名,弄得心烦意乱。

设计思路:

于是我想,可以设计一个点名系统——一个也不少,录入人脸和姓名,而点名进行人脸签到时,与人脸库数据进行对比,签了后,统计出没有到场的人告知老师。

(当然可能现在很多学校都自配了这种高级系统了吧。当然那些系统肯定是贵贵的,而且每个教室配备一个,多么不划算,我们的一个也不少系统,只需要一台带摄像头的电脑就够了。(●'◡'●))

projectImage
步骤1 步骤1
创建角色、背景

1.创建角色:标题、录入名单按钮、开始名单按钮、清空名单按钮、新增名单按钮、查阅名单按钮、开始点名按钮、播报缺席者按钮、导入名单按钮、确定导入按钮、重新导入按钮、退出按钮,并为每个按钮添加造型,确定按下与没按下状态的造型。

projectImage

2.创建背景。

projectImage

3.在编写脚本中,这里将所有智能对话操作都由“Mind+”角色完成,而按钮角色只做切换作用,使用广播接收功能。

步骤2 步骤2
认识AI图像识别

在此介绍下在这个项目中会用到的AI图像识别的一些脚本。

projectImage
projectImage
projectImage

积木分三大类,同时也表示了使用的三大步骤:

 基础设置:包含了账户控制、摄像头相关操作及图像保存选项,只需要选择性的调用一次即可。

获取图像:获取图像源数据,可以从摄像头、本地、网络三种方式获取。仅从摄像头获取需要用到电脑摄像头。 

识别图像:获取图像之后通过识别相关的积木进行图像识别操作并获得结果。

projectImage

【切换至独立账户】积木:AI图像识别功能调用的百度AI服务,因此需要使用百度AI的账户。

账户注册方法:

1. 登录百度AI开放平台,https://ai.baidu.com,点击页面右上角“控制台”,然后“注册”或者“登录”自己的百度账号。 

2.登录成功后进入控制台页面,点击左边栏“人脸识别”,在新页面中点击“创建应用”,将“语音技术”、“文字识别”、“图像识别”、“人体分析”全部勾选,(有些用不上,但是都可以勾选,可以多选不可少选)。 

3.在“应用管理”中复制AppID、API Key、Secret Key下方的参数,填到Mind+中“切换至独立账户”中。 

4.填好之后可以点击一下此积木,如果运行出错会提示错误信息,没有提示即为正确。

【使用[弹窗/舞台]显示摄像头画面】积木:切换显示的位置,使用舞台时可以与舞台交互,使用弹窗时不影响舞台效果同时也可以隐藏。

【[开启/关闭/镜像开启]摄像头】积木:调用此模块时将打开摄像头。 镜像开启功能在使用文字识别等功能时使用。

【从摄像头画面截取图片】积木:调用此模块即可从摄像头截取一帧画面,返回得到图片数据,可以将图片存储到变量或者列表中进行二次判断。

【从本地文件获取图片[地址]】积木:调用此模块即可从电脑文件中调用一张图片,返回得到图片数据,文件路径可以使用变量或列表插入积木中。

【人脸识别成功?】积木:人脸识别中有人脸则此数据为真(true),否则为假(false)。

【识别图中[图片数据]人脸信息】积木:调用此模块将图片数据上传到服务器进行识别。

projectImage

另外在扩展——功能模块中还有文字朗读功能。

【朗读[你好]】积木:使用电脑喇叭播放文字声音。 

【使用[中音/高音/尖细/巨人/小猫]】积木:设置使用不同的嗓音播放声音。注意其中“小猫”没法发出人声。  

【将朗读语言设置为[中文]】积木:设置使用不同的语言播放声音。

projectImage
projectImage
步骤3 步骤3
编写录入名单脚本

1.编写“录入名单”角色脚本。(先设计角色被点击进入录入名单,其他广播接收的操作在后续慢慢添加进去。)

projectImage

2.编写“新增名单”角色的脚本。(先设计角色被点击进入新增名单,其他广播接收的操作在后续慢慢添加进去。)

projectImage

3.编写“Mind+”角色的录入名单、新增名单按钮触发后的接收脚本。

管理员模式进入条件:一是要求成年人,二是要求输入口令5050。

另外使用列表将人脸数据、姓名数据收集起来。

projectImage

4.编写“退出”角色脚本。(先设计角色被点击进入退出管理员模式,其他广播接收的操作在后续慢慢添加进去。)

projectImage

5.编写“查阅名单”按钮角色脚本。(先设计角色被点击进入查阅名单,其他广播接收的操作在后续慢慢添加进去。)

projectImage

6.编写“清空名单”按钮角色脚本。(先设计角色被点击进入清空名单,其他广播接收的操作在后续慢慢添加进去。)

projectImage

7.返回“Mind+”角色的脚本上继续编写查阅名单、清空名单指令。

projectImage

8.编写“导入名单”角色脚本。单击导入名单,显示导入图片列表,并且语言文字提醒导入方法。另外导入出错可以清空导入图片列表,进行清空。

projectImage

编写“导入图片”按钮角色脚本:

projectImage

编写“确定导入”按钮角色脚本:

projectImage

编写“重新导入”按钮角色脚本:

projectImage

编写“Mind+”角色导入图片功能脚本:

projectImage

导入的图片,需实现打开excel文件,在里面填写好图片路径(英文路径),然后将excel文件另存为csv格式文件。

9.前期测试时,将列表都显示出来,测试完毕后,在起始状态隐藏所有列表,而等需要时才显示列表。

projectImage
步骤4 步骤4
编写寄存名单脚本

在“Mind+”角色中添加新列表,用于临时存放学生名单——寄存名单。寄存名单用于学生签到后,删除这个学生,所以里面名单在学生新增完毕后会更新,在退出点名后会恢复,在系统开启时会恢复。

projectImage
步骤5 步骤5
编写开始点名脚本

1.编写“开始点名”按钮角色的脚本。

projectImage

1.编写“点名签到”按钮角色的脚本。

projectImage

2.编写“播报缺席者”按钮角色的脚本。

projectImage

3.编写“退出2”按钮角色脚本,

projectImage

4.编写“Mind+”角色的签到与播报脚本。

如下图空处是一个技术难点。

projectImage

自己陷入思路难点,与识别到的签到者人脸数据百分百相同的是没有的,而相似度>70的,怎么知道是哪一个呢。

下图这样子是必须100%相似度才能得到。

projectImage

这里要谢谢DF的工程师老师们,经DF工程师老师们指点,可以采取临时变量,将签到者的数据与学生人脸数据逐一对比,这样就能获得对应姓名。

于是最终点名签到脚本如下:

projectImage

5.编写“Mind+”角色的“播报缺席者”功能的脚本。

projectImage

6.上传最终“Mind+"角色脚本。(另外说明下,由于功能太多,要运行程序千万别点绿旗子,因为点击后需要电脑性能和网速都要很好的,才能不卡。所以不点绿旗子。)(由于触发都是按钮点击触发,所以可以在不点绿旗子状态下,直接点击按钮就能体验点名系统了。)

projectImage
步骤6 步骤6
测试体验

结果视频附上。(由于借用明星照片,又起了别的名字,于是视频加密码了,密码为5050。)

源文件码云地址:https://gitee.com/flfengling/chuangke_project.git

Makelog作者原创文章,未经授权禁止转载。
1
1
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]