《边缘智能计算应用》课件 项目二 边缘计算算法SDK应用(基于RockX)_第1页
《边缘智能计算应用》课件 项目二 边缘计算算法SDK应用(基于RockX)_第2页
《边缘智能计算应用》课件 项目二 边缘计算算法SDK应用(基于RockX)_第3页
《边缘智能计算应用》课件 项目二 边缘计算算法SDK应用(基于RockX)_第4页
《边缘智能计算应用》课件 项目二 边缘计算算法SDK应用(基于RockX)_第5页
已阅读5页,还剩247页未读 继续免费阅读

下载本文档

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

文档简介

项目二边缘计算算法SDK应用(基于RockX)边缘智能计算应用项目引导案例Rock-XSDK是基于RK3399Pro/RK180X平台的一套AI组件库。开发者通过Rock-XSDK提供的API接口能够快速构建AI应用。Rock-XSDK当前支持Python/C编程语言,支持运行于RK3399ProAndroid/Linux平台、RK180XLinux平台以及PCLinux/MacOS/Windows(需要接RK1808计算棒)。项目引导案例当前版本为1.2.0的版本,提供几大类别算法功能,主要包括目标检测,人脸,车牌,人体关键点等,具体如下:项目引导案例在RK3399Pro为核心的开发板平台上,SDK所提供的库和应用程序需要RKNN驱动版本为1.2.0以上。在开发板Android/Linux系统平台上运行Demo应用以后,通过日志能够看到如下的驱动信息,请确保DRV版本为1.2.0以上。系统依赖项目引导案例根据提供的RockX-*-py3-none-any.whlPythonRockX算法SDK安装包(默认开发板上已经安装1.2.0版本,慎重更新),新版本请到相关网站下载,将其上传到开发板中,在root用户下,利用pip3命令进行安装:安装wheel包pip3installRockX-*-py3-none-any.whl项目引导案例本项目将带着大家体验边缘计算算法SDK应用(基于RockX),主要任务有:目标检测算法接口应用人脸识别算法接口应用人体关键点算法接口应用车牌识别算法接口应用项目中所涉及的操作过程主要如下图所示:目标检测算法接口应用人脸识别算法接口应用人体关键点算法接口应用车牌识别算法接口应用任务一目标检测算法接口的应用

边缘智能计算应用职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一目标检测算法接口的应用了解目标检测含义和应用场景;了解RockX目标检测算法;了解利用多线程调用算法。掌握USB摄像头采集图像;掌握目标检测算法接口的定义;掌握目标检测算法接口的调用并识别图片;掌握多线程方式实现视频流的目标检测。职业能力目标01知识目标技能目标职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一目标检测算法接口的应用

此任务的主要内容是了解目标检测定义和应用场景,掌握RockX目标检测算法接口的定义与使用的相关知识,实现多线程调用算法进行图像识别,通过本次学习,掌握目标检测算法接口的应用。任务描述任务要求完成目标检测算法接口的定义和使用;完成多线程方式实现视频流的目标检测。任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一目标检测算法接口的应用任务分析应用目标检测算法接口会涉及到哪些步骤?如何使用多线程实现视频流的目标检测?任务分析与计划03任务计划表项目名称边缘计算算法SDK应用(基于RockX)任务名称目标检测算法接口的应用计划方式自主设计计划要求请用8个计划步骤来完整描述出如何完成本次任务序号任务计划1

2

3

45678通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一目标检测算法接口的应用RockX目标检测算法的简介204知识储备目标检测含义和应用场景11目标检测的含义2目标检测的应用场景04目标检测是指通过编写特定的算法代码,让计算机从一张图像中找出若干特定目标的方法。04目标检测的含义目标检测包含两层含义:1.判定图像上有哪些目标物体,解决目标物体存在性的问题;2.判定图像中目标物体的具体位置,解决目标物体在哪里的问题。04目标检测的含义目标检测和图像分类最大的区别在于目标检测需要做更细粒度的判定,不仅要判定是否包含目标物体,还要给出各个目标物体的具体位置。。04目标检测的含义目标检测图像分析1

目标检测的含义2目标检测的应用场景04目标检测作为场景理解的重要组成部分,广泛应用于现代生活的许多领域,如安全领域、军事领域、交通领域、医疗领域和生活领域04目标检测的应用场景现实中的例子很多,比如:骑手着装规范,包括人脸检测,餐箱检测,头盔检测等等场景目标识别,包括行人检测,办公区域桌椅检测,电梯按钮检测与识别等等合规检测,包括二维码检测,水印检测,logo识别等等场景文本识别,包括菜单识别,招牌识别,指示牌识别等等04目标检测的应用场景RockX目标检测算法的简介204知识储备目标检测含义和应用场景1RockX目标检测算法的简介04RockX目标检测库是集成在核心开发板上的一套python的接口库,可以直接调用,其检测性能为:RockX目标检测算法的简介04说明:mAP@IOU0.5=0.704表示IOU=0.5时对应的mAP=0.704。MSCOCO_VAL2017是目标检测公开数据集,使用该数据集中的5000张验证集测试,共91类别。

"person","bicycle","car","motorcycle","airplane","bus","train","truck","boat","trafficlight","firehydrant","stopsign","parkingmeter","bench","bird","cat","dog","horse","sheep","cow","elephant","bear","zebra","giraffe","backpack","umbrella","handbag","tie","suitcase","frisbee","skis","snowboard","sportsball","kite","baseballbat","baseballglove","skateboard","surfboard","tennisracket","bottle","wineglass","cup","fork","knife","spoon","bowl","banana","apple","sandwich","orange","broccoli","carrot","hotdog","pizza","donut","cake","chair","couch","pottedplant","bed","diningtable","toilet","tv","laptop","mouse","remote","keyboard","cellphone","microwave","oven","toaster","sink","refrigerator","book","clock","vase","scissors","teddybear","hairdrier","toothbrush"RockX目标检测算法的简介04目标检测是在图片中对可变数量的目标进行分类和查找。

主要难点:目标种类与数量问题目标尺度问题外在环境干扰问题形态、视角等变化RockX目标检测算法的简介04算法基本流程上面图表示两种方法,有候选框特征提取的方法,和特征提取直接回归的方法。两种方法目前用得比较多的都是深度学习的方法,但是这个框架同样也适用于传统方法RockX目标检测算法的简介04传统目标检测方法VS深度学习目标检测方法职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一目标检测算法接口的应用05任务实施多线程方式实现视频流的目标检测2目标检测算法接口的定义和使用1目标检测算法接口的定义和使用05下面通过目标检测实验,利用OpenCV采集图片,识别图片中的目标物体,来诠释RockX目标检测算法接口的定义和使用42加载图片数据1导入相关的库3实例化算法接口调用目标检测函数5画出物品目标框,并绘制目标物品的名称目标检测算法接口的定义和使用05目标检测算法接口的定义和使用6将经过算法处理的图像显示目标检测算法接口的定义和使用05importtime#时间库importcv2#引入OpenCV图像处理库fromrockximportRockX#引入车牌识别算法接口库fromlib.ft2importft#中文描绘库1导入相关的库目标检测算法接口的定义和使用05第一种方式:OpenCV读取一张图片,这里提供的图片名称为obj.jpgcv2.imread("图片名称")2加载图片数据(1)读取一张图片图片使用OpenCV利用摄像头采集一张图片,或者使用OpenCV读取现有的图片目标检测算法接口的定义和使用05第二种方式:OpenCV打开摄像头采集一张图片,在之前的章节有介绍,例如以下案例:cap=cv2.VideoCapture(0)time.sleep(2)cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)dWindow('image_win',flags=cv2.WINDOW_NORMAL|cv2.WINDOW_KEEPRATIO)ret,frame=cap.read()cv2.imshow('image_win',frame)cv2.waitKey(200)cv2.imwrite("图片名称",frame)cap.release()cv2.destroyAllWindows()2加载图片数据目标检测算法接口的定义和使用05image_obj=cv2.imread("./images/obj.jpg")2加载图片数据利用OpenCV的imread()函数,进行读取一张图片目标检测算法接口的定义和使用05importipywidgetsaswidgets#jupyter画图库

fromIPython.displayimportdisplay#jupyter显示库imgbox=widgets.Image()#定义一个图像盒子,用于装载图像数据imgbox.value=cv2.imencode('.jpg',image_obj)[1].tobytes()#把图像值转成byte类型的值display(imgbox)#将盒子显示出来2加载图片数据(2)显示读取的图片利用以下函数显示读取的图片目标检测算法接口的定义和使用05in_img_h,in_img_w,ch=image_obj.shapeprint(in_img_w,in_img_h,ch)2加载图片数据获取图片的宽in_img_w,高in_img_h和通道数ch(3)获取图片信息目标检测算法接口的定义和使用05在RockX库中,包含了算法各种功能模式,实例化算法为:

object_det_handle=RockX(功能类型)功能类型,这里采用目标检测功能类型RockX.ROCKX_MODULE_OBJECT_DETECTION是目标检测功能类型3实例化算法接口object_det_handle=RockX(RockX.ROCKX_MODULE_OBJECT_DETECTION)目标检测算法接口的定义和使用05为了获取目标的位置,调用目标检测函数,通过对图像的检测,识别物体目标的位置信息rockx_face_detect(self,in_img,width,height,pixel_fmt)4调用目标检测函数参数说明:in_img:输入图片(numpyndarray)width:图片宽height:图片高pixel_fmt:图片pixelformat返回值说明:ret:状态码,0为成功,其他失败results:RockX对象的列表,就是说一张图可能包含多个目标对象,每个对象包含了物体目标的位置框信息等返回值说明:ret:状态码,0为成功,其他失败results:RockX对象的列表,就是说一张图可能包含多个目标对象,每个对象包含了物体目标的位置框信息等ret,results=object_det_handle.rockx_face_detect(image_obj,in_img_w,in_img_h,RockX.ROCKX_PIXEL_FORMAT_BGR888)目标检测算法接口的定义和使用05cv2.rectangle()的作用是根据坐标,描绘一个简单的矩形边框参数依次为:图片image,左上角位置坐标pt1,右下角位置坐标pt2,线条颜色color,线条粗细thicknesscv2.rectangle(image,pt1=(int(left),int(top)),pt2=(int(right),int(bot)),color=(0,255,0),thickness=3)5画出物品目标框,并绘制目标物品的名称(1)利用OpenCV在图像上添加文字和画出人脸框(2)引入中文绘画库,用于在图片上描绘中文字符fromlib.ft2importftimg=ft.draw_text(img,position,'{}'.format(obj_label),34,(255,0,0))ft.draw_text的作用是在图片的某个位置上添加文字信息,参数依次为:图片img,位置position,文字obj_label,字体大小font,字体颜色color目标检测算法接口的定义和使用05获取目标名称,是通过检测出的目标的ID值,在相对应的目标名称列表中寻找该值RockX.ROCKX_OBJECT_DETECTION_LABELS_91[result[0].cls_idx]5画出物品目标框,并绘制目标物品的名称(3)获取目标名称ROCKX_OBJECT_DETECTION_LABELS_91是91类物品的名称的集合列表result[0].cls_idx是识别后的结果,物品的ID值,ID和物品的类别名称在91类物品中是一一对应的这里绘画结果,都只采用获取到的第一个目标来说明,也就是results[0],如果有需要多个,数值可用变量代替目标检测算法接口的定义和使用05左上角的坐标为:(results[0].box.left,results[0].box.top)右下角的坐标为:(results[0].box.right,results[0].box.bottom)5画出物品目标框,并绘制目标物品的名称(4)获取目标的位置信息ifret==0:forresultinresults:obj_label=RockX.ROCKX_OBJECT_DETECTION_LABELS_91[result.cls_idx]cv2.rectangle(image_obj,(result.box.left,result.box.top),(result.box.right,result.box.bottom),(0,255,0),2)if(result.box.top-50)>0:image_obj=ft.draw_text(image_obj,(result.box.left,result.box.top-50),'{}'.format(obj_label),34,(0,0,255))else:image_obj=ft.draw_text(image_obj,(result.box.left,result.box.bottom),'{}'.format(obj_label),34,(0,0,255))else:print('识别失败')目标检测算法接口的定义和使用05importipywidgetsaswidgets#jupyter画图库fromIPython.displayimportdisplay#jupyter显示库imgbox=widgets.Image()#定义一个图像盒子,用于装载图像数据imgbox.value=cv2.imencode('.jpg',image_obj)[1].tobytes()#把图像值转成byte类型的值display(imgbox)#将盒子显示出来6将经过算法处理的图像显示利用jupyter的画图库和显示库,来显示获取的图片05任务实施多线程方式实现视频流的目标检测2目标检测算法接口的定义和使用142定义摄像头采集线程1引入相关的库3定义算法识别线程调用两个线程,启动视频流的目标检测5停止线程多线程方式实现视频流的目标检测05多线程方式实现视频流的目标检测利用多线程,使图像采集和算法识别同时运行,从而实现视频流的车牌识别,并且可以避免一些因花时间太久,导致的视频卡顿多线程实现的目标检测是针对多个物品的识别和实时画面的捕获。多线程方式实现视频流的目标检测05使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。程序的运行速度可能加快。在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。1引入相关的库多线程类似于同时执行多个不同程序,多线程运行有如下优点:多线程方式实现视频流的目标检测051引入相关的库importtime#时间库importcv2#引入OpenCV图像处理库fromlib.ft2importft#中文描绘库importthreading#这是python的标准库,线程库importipywidgetsaswidgets#jupyter画图库fromIPython.displayimportdisplay#jupyter显示库fromrockximportRockX#引入算法库每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。多线程方式实现视频流的目标检测052定义摄像头采集线程结合上面的opencv采集图像的内容,利用多线程的方式串起来,形成一个可传参,可调用的通用类。这里定义了一个全局变量camera_img,用作存储获取的图片数据,以便于其他线程可以调用init初始化函数:实例化该线程的时候,会自动执行初始化函数,在初始化函数里面,打开摄像头,并设置分辨run函数:该函数是在实例化后,执行start启动函数的时候,会自动执行。在该函数里,实现了循环获取图像的内容请说说执行线程的几种方式?多线程方式实现视频流的目标检测052定义摄像头采集线程classCameraThread(threading.Thread):def__init__(self,camera_id,camera_width,camera_height):threading.Thread.__init__(self)self.working=Trueself.cap=cv2.VideoCapture(camera_id)#打开摄像头

self.cap.set(cv2.CAP_PROP_FRAME_WIDTH,camera_width)#设置摄像头分辨率宽度

self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT,camera_height)#设置摄像头分辨率高度

defrun(self):globalcamera_img#定义一个全局变量,用于存储获取的图片,以便于算法可以直接调用

whileself.working:try:ret,image=self.cap.read()#获取新的一帧图片,ret为获取的状态值

ifnotret:time.sleep(0.1)continuecamera_img=imageexceptExceptionase:passdefstop(self):self.working=Falseself.cap.release()多线程方式实现视频流的目标检测053定义算法识别线程结合调用算法接口的内容和图像显示内容,利用多线程的方式整合起来,循环识别,对摄像头采集线程中获取的每一帧图片进行识别,并显示,形成视频流的画面。多线程方式实现视频流的目标检测054调用两个线程,启动视频流的目标检测camera_th=CameraThread(0,640,480)obj_detect_th=ObjDetectThread()camera_th.start()obj_detect_th.start()实例化两个线程,并启动这两个线程,实现完整的目标检测功能多线程方式实现视频流的目标检测055停止线程obj_detect_th.stop()camera_th.stop()为了避免占用资源,需要停止摄像头采集线程和算法识别线程,或者重启内核职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一目标检测算法接口的应用任务检查与评价06序号评价内容评价标准分值得分1知识运用(20%)掌握相关理论知识,理解本次任务要求,制定详细计划,计划条理清晰,逻辑正确(20分)20分

理解相关理论知识,能根据本次任务要求、制定合理计划(15分)了解相关理论知识,有制定计划(10分)无制定计划(0分)2专业技能(40%)很好的完成目标检测算法接口的定义和使用和多线程方式实现视频流的目标检测。(40分)40分

大体完成目标检测算法接口的定义和使用和多线程方式实现视频流的目标检测。(30分)只完成目标检测算法接口的定义和使用。(20分)只完成目标检测算法接口的定义和使用的几个步骤。(10分)没有完成目标检测算法接口的定义和使用。(0分)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职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一目标检测算法接口的应用任务拓展08利用目标检测算法实现对图像的分类1将图片按照自己设定的限制分类根据上述内容完成拓展。解题

思路提示任务要求2完整叙述出操作流程谢谢大家学习项目二边缘计算算法SDK应用(基于RockX)边缘智能计算应用任务二人脸识别算法接口应用

边缘智能计算应用职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二人脸识别算法接口应用了解人脸识别定义和应用场景;了解RockX人脸识别算法。掌握利用OpenCV实现图像的采集;掌握调用算法接口完成人脸识别;理解如何使用多线程的方式实现图像采集和人脸识别。职业能力目标01知识目标技能目标职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二人脸识别算法接口应用

此任务的主要内容是了解人脸识别定义和应用场景,RockX人脸识别相关算法接口的定义与使用的相关知识,实现多线程调用算法进行图像识别,通过本次学习,掌握人脸识别算法接口的应用。任务描述任务要求完成RockX人脸识别相关算法接口的定义与使用;完成多线程方式实现视频流的人脸识别。任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二人脸识别算法接口应用任务分析应用人脸算法接口会涉及到哪些步骤?如何使用多线程实现视频流的人脸识别?任务分析与计划03任务计划表项目名称边缘计算算法SDK应用(基于RockX)任务名称人脸识别算法接口的应用计划方式自主设计计划要求请用5个计划步骤来完整描述出如何完成本次任务序号任务计划1

2

3

45通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二人脸识别算法接口的应用RockX人脸识别相关算法简介204知识储备人脸识别含义和应用场景11人脸识别的含义2人脸识别的应用场景04人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也叫做人像识别、面部识别。04人脸识别的含义人脸识别系统主要包括四个组成部分,分别为:人脸图像采集及检测、人脸图像预处理、人脸图像特征提取以及匹配与识别。04人脸识别的含义人脸图像预处理人脸图像采集及检测人脸图像特征提取人脸识别主要用于身份识别。由于视频监控正在快速普及,众多的视频监控应用迫切需要一种远距离、用户非配合状态下的快速身份识别技术,以求远距离快速确认人员身份,实现智能预警。04人脸识别的含义基于这样的需求,我们可以想到一些什么样的技术以应对呢?的人脸识别技术无疑是最佳的选择,采用快速人脸检测技术可以从监控视频图象中实时查找人脸,并与人脸数据库进行实时比对,从而实现快速身份识别。04人脸识别的含义1人脸识别的含义2人脸识别的应用场景04人脸识别产品已广泛应用于金融、司法、军队、公安、边检、政府、航天、电力、工厂、教育、医疗及众多企事业单位等领域。随着技术的进一步成熟和社会认同度的提高,人脸识别技术将应用在更多的领域。04人脸识别的应用场景现实中的例子很多,比如:企业、住宅安全和管理。如人脸识别门禁考勤系统,人脸识别防盗门等。电子护照及身份证。中国的电子护照计划公安部一所正在加紧规划和实施。公安、司法和刑侦。如利用人脸识别系统和网络,在全国范围内搜捕逃犯。自助服务。信息安全。如计算机登录、电子政务和电子商务等04人脸识别的应用场景04人脸识别的应用场景交通方面医院安全门禁RockX人脸识别相关算法简介204知识储备人脸识别含义和应用场景1RockX人脸识别相关算法简介04RockX人脸识别相关算法库是集成在核心开发板上的一套python的接口库,可以直接调用。主要包含:人脸检测,人脸特征获取,人脸识别,目标追踪等相关算法。RockX人脸识别相关算法简介04人脸检测的性能注意:图像质量较差时支持的检测角度会减小。2)最大检测距离与摄像头FOV等参数有关。3)检测的最小人脸尺寸为图像分辨率的1/19。RockX人脸识别相关算法简介04人脸识别的性能注意:实际应用中,对距离和角度稍加限制,能获得更好的识别结果,用户可根据实际情况进行质量筛选。2)人脸比对使用欧式距离。职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二人脸识别算法接口的应用05任务实施多线程方式实现视频流的人脸识别2RockX人脸识别相关算法接口的定义与使用142实例化算法接口对象1导入相关的库3人脸数据录入数据库人脸识别RockX人脸识别相关算法接口的定义与使用05RockX人脸识别相关算法接口的定义与使用RockX人脸识别相关算法接口的定义与使用05下面通过人脸案例的方式,来介绍相关算法的接口定义和使用RockX人脸识别相关算法接口的定义与使用05importosimportsysimporttimeimportsqlite3importnumpyasnpfromrockximportRockXimportcv21导入相关的库RockX人脸识别相关算法接口的定义与使用05在RockX库中,包含了算法各种功能模式,实例化算法为:handle=RockX(功能类型)这里采用人脸识别的检测,追踪,对齐,和识别等功能类型RockX.ROCKX_MODULE_FACE_DETECTION是人脸检测功能类型RockX.ROCKX_MODULE_OBJECT_TRACK是目标追踪功能类型RockX.ROCKX_MODULE_FACE_LANDMARK_5是人脸对齐功能类型RockX.ROCKX_MODULE_FACE_RECOGNIZE是人脸识别,人脸特征获取的功能类型2实例化算法接口对象RockX人脸识别相关算法接口的定义与使用05要实现人脸识别,必须要有一个人脸比对的数据库,所以需要把人脸信息提前录入数据库3人脸数据录入数据库RockX人脸识别相关算法接口的定义与使用05利用封装好的databases.py脚本,FaceDB类实现数据库的创建和数据的录入,实例化数据库类为:face_db=FaceDB("数据库名称.db")数据表定义的字段为:名称(NAME),版本(VERSION),特征(FEATURE),对齐图片(ALIGN_IMAGE)3人脸数据录入数据库主要函数为:init函数是创建一个数据库和FACE的数据表load_face函数是读取数据库中的人脸信息,返回值为:所有的人脸信息,包括名字和特征insert_face函数是插入人脸信息到数据表中,参数为:名字name,特征feature,对齐后的图片align_img(1)创建一个数据库RockX人脸识别相关算法接口的定义与使用05cap=cv2.VideoCapture(0)time.sleep(2)cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)dWindow('image_win',flags=cv2.WINDOW_NORMAL|cv2.WINDOW_KEEPRATIO)ret,frame=cap.read()cv2.imshow('image_win',frame)cv2.waitKey(200)cv2.imwrite("图片名称",frame)cap.release()cv2.destroyAllWindows()3人脸数据录入数据库(2)采集一张图片利用OpenCV打开摄像头采集一张图片,在之前的章节有介绍,例如以下案例:RockX人脸识别相关算法接口的定义与使用05定义人脸特征获取的函数get_face_feature,其关键步骤在于,人脸检测,人脸对齐,人脸特征获取3人脸数据录入数据库(3)定义特征获取的函数1)人脸检测,主要是获取人脸框的位置信息ret,results=rockx_face_detect(self,in_img,width,height,pixel_fmt)参数说明:in_img:输入图片(numpyndarray)width:图片宽height:图片高pixel_fmt:图片pixelformat返回值说明:ret:状态码,0为成功,其他失败results:RockX对象的列表,就是说一张图可能包含多个人脸对象,每个对象包含了多个人脸框的位置信息等注意:由于一张图可能包含过个人脸,所以需要对其进行筛选,使用面积最大的人脸框信息,定义获取最大人脸信息的函数get_max_faceRockX人脸识别相关算法接口的定义与使用05ret,align_img=rockx_carplate_align(self,in_img,width,height,pixel_fmt,in_box)3人脸数据录入数据库(3)定义特征获取的函数2)人脸对齐,主要是人脸的矫正对齐,涵盖5个特征点的对齐参数说明:in_img:输入图片(numpyndarray)width:图片宽height:图片高pixel_fmt:图片pixelformatin_box:人脸框位置信息返回值说明:ret:状态码,0为成功,其他失败align_img:返回对齐后的图片数据信息RockX人脸识别相关算法接口的定义与使用05ret,face_feature=rockx_face_recognize(self,in_aligned_img)3人脸数据录入数据库(3)定义特征获取的函数3)人脸特征获取参数说明:in_aligned_img:人脸对齐后的图片数据(align_img)返回值说明:ret:状态码,0为成功,其他失败face_feature:返回识别后的人脸特征信息(4)信息插入数据库利用定义的函数,获取人脸特征,并定义名字等信息,然后调用数据库的插入数据的接口insert_face,将这些信息插入到数据库中RockX人脸识别相关算法接口的定义与使用054人脸识别利用已经录入的数据,进行人脸识别,其主要的步骤人脸检测,检测目标跟踪,人脸矫正对齐,人脸特征获取,人脸对比人脸检测,人脸矫正对齐,和人脸特征获取在前面已经介绍过了,这里就不在重复介绍了。下面主要介绍检测目标跟踪和人脸对比。RockX人脸识别相关算法接口的定义与使用054人脸识别利用数据库加载数据的接口,获取所有人员的特征信息,并利用摄像头采集一张图片,获取其宽,高,通道数(1)读取数据库的特征并读取一张图片(2)人脸检测人脸检测主要是获取人脸框的位置信息,前面有介绍过了,这里不重复介绍人脸对齐主要是进行人脸特征点对齐矫正,前面有介绍过了,这里不重复介绍(3)人脸对齐人脸特征获取主要是获取人脸的特征信息,前面有介绍过了,这里不重复介绍(4)人脸特征获取RockX人脸识别相关算法接口的定义与使用054人脸识别(5)人脸比对人脸信息对比,主要是把当前获取的人脸特征和数据库中的特征进行对比ret,similarity=face_recog_handle.rockx_face_similarity(cur_feature,feature)参数说明:cur_feature:当前获取到的特征feature:数据库取出的特征返回值说明:ret:状态码,0为成功,其他失败similarity:返回对比后的相似度05任务实施多线程方式实现视频流的人脸识别2RockX人脸识别相关算法接口的定义与使用142定义摄像头采集线程1引入相关的库3定义算法识别线程调用两个线程,启动视频流的目标检测5停止线程多线程方式实现视频流的人脸识别05多线程方式实现视频流的目标检测根据前面学到的知识,利用多线程,使图像采集和算法识别同时运行,从而实现视频流的车牌识别,并且可以避免一些因花时间太久,导致的视频卡顿人脸识别涉及到注册,所以注册还是有前面的方式注册,这里实现的只是识别的多线程运算功能多线程实现的目标检测是针对多个物品的识别和实时画面的捕获。多线程方式实现视频流的人脸识别05使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。程序的运行速度可能加快。在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。1引入相关的库多线程类似于同时执行多个不同程序,多线程运行有如下优点:多线程方式实现视频流的人脸识别051引入相关的库importtime#时间库importcv2#引入opencv图像处理库fromlib.ft2importft#中文描绘库importthreading#这是python的标准库,线程库importipywidgetsaswidgets#jupyter画图库fromIPython.displayimportdisplay#jupyter显示库fromrockximportRockX#引入算法库fromlib.databasesimportFaceDB每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。多线程方式实现视频流的人脸识别052定义摄像头采集线程结合上面的opencv采集图像的内容,利用多线程的方式串起来,形成一个可传参,可调用的通用类。这里定义了一个全局变量camera_img,用作存储获取的图片数据,以便于其他线程可以调用init初始化函数实例化该线程的时候,会自动执行初始化函数,在初始化函数里面,打开摄像头,并设置分辨run函数该函数是在实例化后,执行start启动函数的时候,会自动执行。在该函数里,实现了循环获取图像的内容请说说执行线程的几种方式?多线程方式实现视频流的人脸识别052定义摄像头采集线程classCameraThread(threading.Thread):def__init__(self,camera_id,camera_width,camera_height):threading.Thread.__init__(self)self.working=Trueself.cap=cv2.VideoCapture(camera_id)#打开摄像头self.cap.set(cv2.CAP_PROP_FRAME_WIDTH,camera_width)#设置摄像头分辨率宽度self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT,camera_height)#设置摄像头分辨率高度代码分析多线程方式实现视频流的人脸识别05defrun(self):globalcamera_img#定义一个全局变量,用于存储获取的图片,以便于算法可以直接调用whileself.working:try: ret,image=self.cap.read()#获取新的一帧图片,ret为获取的状态值 ifnotret: time.sleep(0.1) continuecamera_img=imageexceptExceptionase: pass defstop(self): self.working=False self.cap.release()多线程方式实现视频流的人脸识别0523定义算法识别线程结合调用算法接口的内容和图像显示内容,利用多线程的方式整合起来,循环识别,对摄像头采集线程中获取的每一帧图片进行识别,并显示,形成视频流的画面init初始化函数实例化该线程的时候,会自动执行初始化函数,在初始化函数里面,定义了显示内容,并实例化车牌识别run函数该函数是在实例化后,执行start启动函数的时候,会自动执行。在该函数是一个循环,实现了对采集的每一帧图片进行算法识别,然后将结果绘画在图片上,并将处理后的图片显示出来多线程方式实现视频流的人脸识别054调用两个线程,启动视频流的目标检测camera_th=CameraThread(0,640,480)camera_th.start()face_detect_th=FaceDetectThread()face_detect_th.start()实例化两个线程,并启动这两个线程,实现完整的目标功能,运行时,加载模型比较久,需要等待几秒多线程方式实现视频流的人脸识别055停止线程obj_detect_th.stop()camera_th.stop()为了避免占用资源,需要停止摄像头采集线程和算法识别线程,或者重启内核职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二人脸识别算法接口的应用任务检查与评价06序号评价内容评价标准分值得分1知识运用(20%)掌握相关理论知识,理解本次任务要求,制定详细计划,计划条理清晰,逻辑正确(20分)20分

理解相关理论知识,能根据本次任务要求、制定合理计划(15分)了解相关理论知识,有制定计划(10分)无制定计划(0分)2专业技能(40%)很好的完成人脸识别算法接口的定义和使用和多线程方式实现视频流的人脸识别。(40分)40分

大体完成人脸识别算法接口的定义和使用和多线程方式实现视频流的人脸识别。(30分)只完成人脸识别算法接口的定义和使用。(20分)只完成人脸识别算法接口的定义和使用的几个步骤。(10分)没有完成人脸识别算法接口的定义和使用。(0分)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职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二人脸识别算法接口的应用任务拓展08利用人脸识别算法实现对人像的入库操作1明确分类标准根据上述内容完成拓展。解题

思路提示任务要求2完整叙述出操作流程谢谢大家学习项目二边缘计算算法SDK应用(基于RockX)边缘智能计算应用任务三人体关键点算法接口应用

边缘智能计算应用职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三人体关键点算法接口应用

了解人体关键点检测定义和应用场景;了解RockX人体关键点检测算法接口的定义与使用;了解多线程调用算法进行图像识别的知识。掌握USB摄像头采集图像;掌握人体关键点检测算法接口的定义;掌握人体关键点检测算法接口的调用,并识别图片;掌握多线程调用算法进行图像识别。职业能力目标01知识目标技能目标职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三人体关键点算法接口应用

此任务的主要内容是了解人体关键点定义和应用场景,RockX人体关键点相关算法接口的定义与使用的相关知识,实现多线程调用算法进行图像识别,通过本次学习,掌握人体关键点算法接口的应用。任务描述任务要求完成RockX人体骨骼关键点检测算法接口的定义与使用;多线程方式实现视频流的人体骨骼点检测。任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三人体关键点算法接口应用任务分析怎么样实现摄像头对人体关键点的识别?如何使用多线程方式实现视频流的人体骨骼点检测?任务分析与计划03任务计划表项目名称边缘计算算法SDK应用(基于RockX)任务名称人体关键点算法接口的应用计划方式自主设计计划要求请用6个计划步骤来完整描述出如何完成本次任务序号任务计划1

2

3

456通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三人体关键点算法接口的应用RockX人体关键点检测算法接口的定义与使用204知识储备人体关键点含义和应用场景11人体关键点检测含义2人体关键点检测应用场景0404

人体骨骼关键点检测是计算机视觉的基础性算法之一,在计算机视觉的其他相关领域的研究中都起到了基础性的作用,如行为识别、人物跟踪、步态识别等相关领域。具体应用主要集中在智能视频监控,病人监护系统,人机交互,虚拟现实,人体动画,智能家居,智能安防,运动员辅助训练等等。人体关键点检测含义04人体骨骼关键点检测也称为PoseEstimation,主要检测人体的关节、五官等,通过关键点描述人体骨骼信息。人体关键点检测含义04人体骨架点检测是对图像或者视频中的人体进行主要关节点定位的过程,其作用是服务于人体动作的分类或识别,安全监控,人机交互,数字娱乐,体育分析等领域都离不开对人体动作的分析。因此,对人体骨架点检测的深入研究,有着广阔的应用前景。人体关键点检测含义04实现人体检型,通常采用人体姿态估计(HumanPostureEstimation),即将图片中已经检测到的人体关键点正确联系起来从而实现人体姿态的估计,实现人体的检测。人体关键点通常对应人体上有一定自由度的关节,比如颈、肩、肘、腕、腰、膝、踝等。人体关键点检测含义人体关键点检测描述了人体关键点细粒度的信息,识别人的动作,能够作为行为识别、步态识别、人机交互的基础,人体姿态估计是机器理解图片和视频中的人物行为的关键步骤。04人体关键点检测含义人体关键点,即为人体骨架中与运动强相关的主要骨骼连接点。人体关键点的相对位置反映了人体姿态,刻画了人所处的运动状态。有常规的站立、坐下、行走、跑步、跳跃等动作形态,还有游泳、舞蹈、武术等大范围的体育运动形态。04人体关键点检测含义04图片的数量未知。图片中人与人之间的接触会极大影响识别效率,比如追挡、接触、掩盖。图片中的人数的增加会直接导致计算的复杂度提高。由于人体具有相当的柔性,会出现各种姿态和形状,而且还面临着遮挡、光照、雾等环境的影响。人体骨骼关键点检测难点人体关键点检测含义04人体骨骼关键点检测方法主要分两周:自上而下和自下而上。自上而下:先检测人体,在检测单人人体关键点。自下而上:先将图片中所有的关键点检测出来,再进行关键点聚类。人体骨骼关键点检测方法人体关键点检测含义1人体关键点检测含义2人体关键点检测应用场景0404(1)用于检测儿童或者老人是否突然摔倒,人体是否由于碰撞或疾病造成摔倒(2)用于体育、健身和舞蹈等肢体相关的教学和核对(3)用于理解人体的明确的肢体信号和指示(如机场跑道信号、交警信号、航海旗语等)(4)用于协助进行姿态保持和保证(如学生课堂听讲和学情报告)(5)用于增强安保和监控人体行为(如识别校园学生追打和上下楼梯推搡等行为)运动捕捉虚拟游戏舞蹈教学人体关键点检测应用场景041、人类行为识别:人类行为识别是指在给定的图片或者图片序列中识别出人体的动作意图。人类行为识别是计算机视觉领域一个极其重要的研究方向。人体关键点检测应用场景042、人机交互:人机交互是指设计一种计算机和用户进行信息传递的接口程序。人机交互处于计算机科学,行为科学,设计,媒体研究的交叉点。人体关键点检测应用场景043、服装解析:服装解析是指在一张图像中解析出人体上不同的服装。解析服装的视觉算法具有各种各样的潜在应用价值,更好的理解图像,人物服饰识别,或基于内容的图像检索等。人体关键点检测应用场景044、运动捕捉和增强现实(CGI):通过检测出人体关键点,将人体姿态应用到图形、特效增强、艺术造型等,使用计算机合成技术将相关数据加载在电影人物上。人体关键点检测应用场景045、虚拟游戏:在交互游戏中追踪人体对象的运动,使用人体关键点检测技术来追踪人类玩家的运动,从而利用它来渲染虚拟人物的动作。人体关键点检测应用场景046、训练机器人:人类教练通过演示特定的动作,来教机器人学习这一动作,机器人识别人体关键点,计算如何移动自己的活动关节,来进行相同的动作。人体关键点检测应用场景RockX人体关键点检测算法接口的定义与使用204知识储备人体关键点含义和应用场景1RockX人体关键点检测算法接口的定义与使用04RockX人体关键点相关算法库是集成在核心开发板上的一套python的接口库,可以直接调用。主要包含:人脸检测,人脸特征获取,人体关键点,目标追踪等相关算法RockX人体关键点检测算法接口的定义与使用04人体关键点检测的性能说明:mAP@OKS0.5=0.623表示OKS=0.5时对应的mAP=0.623。MSCOCOval2017是COCO2017KeypointDetectionTask的验证集,共5000张,其中2000多张有关键点。RockX人体关键点检测算法接口的定义与使用04人体关键点位置信息RockX人体关键点检测算法接口的定义与使用04人体关键点位置信息检测之前的照片RockX人体关键点检测算法接口的定义与使用04人体关键点位置信息检测之后的照片目标检测结果用蓝框框表示,表明目标检测为人的概率为1.0。然后17个关键点都可见且用红点表示出来。旁边是红点的编号,从1~17。职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三人体关键点算法接口的应用05任务实施多线程方式实现视频流的人体骨骼点检测2RockX人体骨骼关键点检测算法接口的定义与使用142加载图片数据1导入相关的库3加载图片数据调用人体骨骼点检测函数RockX人体骨骼关键点检测算法接口的定义与使用05RockX人体骨骼关键点检测算法接口的定义与使用画出人体的骨骼点位和骨骼点连线5RockX人体骨骼关键点检测算法接口的定义与使用05下面通过人体骨骼点检测实验,利用opencv采集图片,识别图片中的目标物体,来诠释RockX人体骨骼点检测算法接口的定义和使用RockX人体关键点相关算法接口的定义与使用05importtime#时间库importcv2#引入opencv图像处理库fromrockximportRockX#引入车牌识别算法接口库1导入相关的库RockX人体骨骼关键点检测算法接口的定义与使用05图片使用OpenCV利用摄像头采集一张图片,或者使用OpenCV读取现有的图片,这里使用读取摄像头的方式2加载图片数据RockX人体骨骼关键点检测算法接口的定义与使用05cap=cv2.VideoCapture(0)time.Sleep(2)cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)dWindow('image_win',flags=cv2.WINDOW_NORMAL|cv2.WINDOW_KEEPRATIO)ret,frame=cap.read()cv2.imshow('image_win',frame)cv2.waitKey(200)cv2.imwrite("图片名称",frame)cap.release()cv2.destroyAllWindows()2加载图片数据读取一张图片利用OpenCV打开摄像头采集一张图片,在之前的章节有介绍,例如以下案例:RockX人体骨骼关键点检测算法接口的定义与使用05importipywidgetsaswidgets#jupyter画图库fromIPython.displayimportdisplay#jupyter显示库imgbox=widgets.Image()#定义一个图像盒子,用于装载图像数据display(imgbox)#将盒子显示出来imgbox.value=cv2.imencode('.jpg',image_pose)[1].tobytes()#把图像值转成byte类型的值2加载图片数据(2)显示读取的图片利用以下函数显示读取的图片RockX人体骨骼关键点检测算法接口的定义与使用05in_img_h,in_img_w,ch=image_pose.shapeprint(in_img_h,in_img_w,ch)2加载图片数据(3)获取图片信息获取图片的长,宽和通道数RockX人体骨骼关键点检测算法接口的定义与使用05在RockX库中,包含了算法各种功能模式,实例化算法为:handle=RockX(功能类型)功能类型:这里采用人体骨骼点检测的功能模式RockX.ROCKX_MODULE_POSE_BODY是人体骨骼点检测功能类型3实例化算法接口RockX人体关键点相关算法接口的定义与使用054调用人体骨骼点检测函数参数说明:in_img:输入图片(numpyndarray)width:图片宽height:图片高pixel_fmt:图片pixelformat为了获取目标的位置,调用人体骨骼点检测函数,通过对图像的检测,识别人体骨骼点的位置信息rockx_pose_body(self,in_img,width,height,pixel_fmt)返回值说明:ret:状态码,0为成功,其他失败results:RockX对象的列表,就是说一张图可能包含多个人体骨骼点对象,每个对象包含了人体骨骼点的位置信息等results[0].points是所有关节点的坐标信息列表,每个关键点包含x,y坐标值RockX人体骨骼关键点检测算法接口的定义与使用055画出人体的骨骼点位和骨骼点连线cv2.circle(img,center,radius,color=(0,255,0),thickness=3)(1)利用OpenCV在图像上画出骨骼点位cv2.circle()的作用是根据坐标,描绘一个简单的圆点,参数依次为:图片,中心点坐标,圆点半径,线条颜色,线条粗细RockX人体关键点相关算法接口的定义与使用055画出人体的骨骼点位和骨骼点连线cv2.line(img,pt1,pt2,color=(0,255,0),thickness=3)(2)利用OpenCV在图像上画出骨骼点连线cv2.line()的作用是根据坐标,描绘一个简单的圆点,参数依次为:图片,起点坐标,结束点坐标,线条颜色,线条粗细RockX人体骨骼关键点检测算法接口的定义与使用055画出人体的骨骼点位和骨骼点连线RockX.ROCKX_POSE_BODY_KEYPOINTS_PAIRS(3)人体骨骼关键点的配对这个是算法自带已经集成在RockX里面的配对列表这里绘画结果,都只采用获取到的第一个人体来说明,也就是results[0],如果有需要多个,数值可用变量代替RockX人体骨骼关键点检测算法接口的定义与使用056将经过算法处理的图像显示importipywidgetsaswidgets#jupyter画图库fromIPython.displayimportdisplay#jupyter显示库imgbox=widgets.Image()#定义一个图像盒子,用于装载图像数据display(imgbox)#将盒子显示出来imgbox.value=cv2.imencode('.jpg',image_pose)[1].tobytes()#把图像值转成byte类型的值(3)人体骨骼关键点的配对利用jupyter的画图库和显示库,来显示获取的图片05任务实施多线程方式实现视频流的人体骨骼点检测2RockX人体关键点相关算法接口的定义与使用142定义摄像头采集线程1引入相关的库3定义算法识别线程调用两个线程,启动视频流的人体骨骼点检测5停止线程多线程方式实现视频流的人体骨骼点检测05多线程方式实现视频流的目标检测根据前面学到的知识点,利用多线程,使图像采集和算法识别同时运行,从而实现视频流的人体骨骼点检测,并且可以避免一些因花时间太久,导致的视频卡顿多线程实现的人体骨骼点检测是针对多个人体的识别和实时画面的捕获。多线程方式实现视频流的人体骨骼点检测05使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。程序的运行速度可能加快。在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。1引入相关的库多线程类似于同时执

温馨提示

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

评论

0/150

提交评论