6.1-人脸跟随模块开发《智能机器人技术应用》_第1页
6.1-人脸跟随模块开发《智能机器人技术应用》_第2页
6.1-人脸跟随模块开发《智能机器人技术应用》_第3页
6.1-人脸跟随模块开发《智能机器人技术应用》_第4页
6.1-人脸跟随模块开发《智能机器人技术应用》_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目六人脸跟随创灵实验平台人脸跟随模块开发任务一职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一人脸跟随模块开发掌握通过Threading模块封装线程类的方法开启摄像头掌握用OpenCV绘制人脸在图片中的位置信息掌握使用装饰器调度机械臂跟随人脸移动使用Threading模块封装线程类的方法开启摄像头在画面中绘制人脸的位置信息调动机械臂跟随人脸移动职业能力目标01实验目的实验内容职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一人脸跟随模块开发要求同学们能够根据所学内容编写相应的装饰器及opencv函数,实现摄像头获取图片,并通过Threading模块创建thread线程子类。最后通过人脸检测算法识别画面中存在的人脸,并在画面中绘制出人脸图框。任务描述任务要求复习并完成opencv实现摄像头获取图片,成功采集到图片;完成人脸检测图像推理功能实验,实现人脸识别;完成人脸信息获取,并绘制画面中的人脸图框。任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一人脸跟随模块开发任务分析思考一下在我们学习了解完本章知识后,我们能如何改进人脸检测模块。根据自己的了解,要怎样去了解认识人脸检测模块,可以促进自己进一步地学习?任务分析与计划03任务计划表项目名称创灵实验平台任务名称人脸跟随模块开发计划方式自主设计计划要求请用6个计划步骤来完整描述出如何完成本次任务序号任务计划1

2

3

4

5

6

通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一人脸跟随模块开发线程类封装204知识储备人脸检测1人脸检测04人脸检测是目前所有目标检测子方向中被研究的最充分的问题之一,也是整个人脸识别算法的第一步。

人脸检测的目标是找出图像中所有的人脸对应的位置,算法的输出是人脸外接矩形在图像中的坐标,可能还包括姿态如倾斜角度等信息。人脸检测04人脸检测算法要解决以下几个核心问题:人脸可能出现在图像中的任何一个位置;人脸可能有不同的大小;

人脸在图像中可能有不同的视角和姿态;人脸可能部分被遮挡。人05知识储备线程类封装2人脸检测13线程类封装04进程是资源分配的最小单位,一个程序至少有一个进程。线程是程序执行的最小单位,一个进程至少有一个线程。进程都有自己独立的地址空间,内存,数据栈等,所以进程占用资源多。由于进程的资源独立,所以通讯不方便,只能使用进程间通讯(IPC)。线程类封装04线程共享进程中的数据,他们使用相同的地址空间,使用线程创建快捷,创建开销比进程小。同一进程下的线程共享全局变量、静态变量等数据,所以线程通讯非常方便,但会存在数据同步与互斥的问题,如何处理好同步与互斥是编写多线程程序的难点。一个进程中可以存在多个线程,在单核CPU中每个进程中同时刻只能运行一个线程,只有在多核CPU中才能存在线程并发的情况。线程类封装04threading和ThreadPython实现多线程编程需要借助于threading模块,threading模块中最核心的内容是Thread类。通过创建Thread对象,让它们运行,每个Thread对象代表一个线程,在每个线程中我们可以让程序处理不同的任务,这就是多线程编程。线程类封装04创建Thread对象有2种方式直接创建Thread,将一个callable对象从类的构造器传递进去,这个callable就是回调函数,用来处理任务。编写一个自定义类继承Thread,然后复写run()方法,在run()方法中编写任务处理代码,然后创建这个Thread的子类。本次实验主要基于派生Thread子类的方式进行。线程类封装04我们可以通过继承Thread类,派生出一个子类,使用子类来创建多线程,并在其中实现功能,使得该线程可以在不占用进程资源的情况下自主运行。使用class.start()方法,将自动调用class.run()方法,在run方法中执行线程启动后的代码,该线程就会自动运行。职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一人脸跟随模块开发05任务实施封装人脸检测线程类2以线程方式检测人脸1机械臂跟随的实现3以线程方式检测人脸1.检查usb摄像头:人脸跟随案例是基于计算机视觉来实现,那么首先就是要获取到对应的视觉数据,通过摄像头将采集到的图片数据进行预处理,再将数据通过人工智能模型进行识别判断,返回识别结果。所以,通过opencv实现摄像头获取图片是识别的第一步。以线程方式检测人脸1.检查usb摄像头:注意:上述指令如没有输出,则表明usb摄像头没安装好,如果输出video0则表明usb摄像头已正常连接,可以使用。以线程方式检测人脸1.检查usb摄像头:动手练习1:1.在<1>处,输入指令查看设备usb摄像头是否正常接入。以线程方式检测人脸2.opencv获取图片,视频流:以线程方式检测人脸3.以线程的方式获取视频流:步骤一:导入线程库、jupyter画图依赖库。

Thread:创建线程类;

ipywidgets:用于在Jupyter中开辟一个用于显示图片的窗口;

display:在Jupyter中播放图片。以线程方式检测人脸3.以线程的方式获取视频流:步骤二:创建图片显示窗口。widgets.Image:开辟一个用于显示图片的窗口;format:显示图片格式;height:窗口高度;width:窗口宽度。以线程方式检测人脸3.以线程的方式获取视频流:步骤三:异步装饰器Python装饰器:可以让被装饰的函数在不修改代码的情况下增加额外的功能,装饰器本质上是一个函数。异步:即非阻塞,意味着在执行某项任务时候不会阻塞后续或其他任务的执行。多线程:在进程基础上开辟多个执行任务的线程。以线程方式检测人脸4.线程获取视频流实验预览:以线程方式检测人脸5.分类识别模型接口说明:face_position人脸跟随的坐标nlFaceDetect=NLFaceDetect(libNamePath)实例化分类算法接口类nlDetect.NL_TD_ComInit(configPath[,dwClassNum[,dqThreshold[,pbyModel[,pbyLabel]]]])加载模型,根据配置参数进行模型初始化nlDetect.NL_TD_InitVarIn(limg)加载要识别的图像,返回0表示加载成功nlDetect.NL_TD_Process_C()调用检测函数,返回目标检测个数nlDetect.djTDVarOut检测结果的对象,包含检测结果目标位置与置信度等值以线程方式检测人脸5.分类识别模型接口说明:outObject.x1目标左上角x轴坐标outObject.y1目标左上角y轴坐标outObject.x2目标右下角x轴坐标outObject.y2目标右下角y轴坐标以线程方式检测人脸6.线程获取视频流实验结果:获取后得到的结果如下图: 实验结束后要记得重启内核,释放摄像头资源:05任务实施213以线程方式检测人脸封装人脸检测线程类机械臂跟随的实现封装人脸检测线程类1.实验预览:请运行JupyterLab对应的实验预览观察实验运行效果,如下图实验中。封装人脸检测线程类1.实验预览(参考Jupyter中的任务四中的2.1):启动识别:结果如图,识别到人脸并绘制出人脸图框。封装人脸检测线程类1.实验预览(参考Jupyter中的任务四中的2.1):停止识别:结果如图,重启内核释放摄像头资源。封装人脸检测线程类2.Thread子类运行说明:在继承了Thread的子类中重写run()方法,获取摄像头的图片并对其进行人脸检测,保存得到的人脸信息。将人脸检测模型、摄像头信息、人脸信息都作为类的成员变量将子类实例化后,使用start()方法,将会调用run()方法,并执行其中代码将绘制有检测信息的图片传给全局变量show_image,并通过display方法展示。封装人脸检测线程类2.Thread子类运行说明:请前往Jupyter上完成动手练习二。05任务实施213以线程方式检测人脸封装人脸检测线程类机械臂跟随的实现机械臂跟随的实现1.业务流程图:机械臂跟随的实现机械臂的跟随需要机械臂、摄像头及配置参数等模块相互配合,关于机械臂在之前的任务中也有过详细介绍,这里直接调用之前封装好的库,并且将摄像头及人脸检测线程同样进行封装,以供调用。本次实验已将模块封装好在libs目录下。实验过程可以直接导入模块调用接口进行使用(详细案例请参照Jupyter)。机械臂跟随的实现如下图:2.代码实现:机械臂跟随的实现实例化机械臂并启动跟随线程,可以看到机械臂跟随人脸移动的效果。2.代码实现:机械臂跟随的实现请前往Jupyter上完成动手练习三。2.代码实现:职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一人脸跟随模块开发任务检查与评价06序号评价内容评价标准分值得分1知识运用(20%)掌握相关理论知识,理解本次任务要求,制定详细计划,计划条理清晰,逻辑正确(20分)20分

理解相关理论知识,能根据本次任务要求、制定合理计划(15分)了解相关理论知识,有制定计划(10分)无制定计划(0分)2专业技能(40%)以线程的方式获取视频流,使用Threading模块将摄像头线程封装成thread线程类,并以线程方式开启机械臂的跟随功能。(40分)40分

以线程的方式获取视频流。(10分)使用Threading模块将摄像头线程封装成thread线程类。(15分)以线程方式开启机械臂的跟随功能,实现机械臂跟随人脸的功能。(15分)3核心素养(20%)具有良好的自主学习能力、分析解决问题的能力、整个任务过程中有指导他人(20分)20分

具有较好的学习能力和分析解决问题的能力,任务过程中无指导他人(15分)能够主动学习并收集信息,有请教他人进行解决问题的能力(10分)不主动学习(0分)4课堂纪律(20%)设备无损坏、设备摆放整齐、工位区域内保持整洁、无干扰课堂秩序(20分)20分

设备无损坏、无干扰课堂秩序(15分)无干扰课堂秩序(10分)干扰课堂秩序(0分)总得分1、请参照评价标准完成自评和对其他小组的互评。2、各组请代表分析本组任务实施经验。职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一人脸跟随模块开发任务小结07

在大家学习完本任务后,是否还有许多为解决的问题?那么接下来我们来进行任务小结,通过流程图了解本章学习了什么,对相应知识进行巩固复习。以线程方式检测人脸封装人脸检测线程类机械臂跟随的实现人脸跟随模块开发知识储备任务实施任务小结①人脸识别②线程类封装①以线程方式检测人脸②封装人脸检测线程类③机械臂跟随的实现①掌握通过Threading模块封装线程类的方法开启摄像头②掌握用OpenCV绘制人脸在图片中的位置信息③掌握使用装饰器调度机械臂

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论