嵌入式系统实践及工程应用-从基础到人工智能 课件 第6章 具备AI算力的嵌入式系统开发_第1页
嵌入式系统实践及工程应用-从基础到人工智能 课件 第6章 具备AI算力的嵌入式系统开发_第2页
嵌入式系统实践及工程应用-从基础到人工智能 课件 第6章 具备AI算力的嵌入式系统开发_第3页
嵌入式系统实践及工程应用-从基础到人工智能 课件 第6章 具备AI算力的嵌入式系统开发_第4页
嵌入式系统实践及工程应用-从基础到人工智能 课件 第6章 具备AI算力的嵌入式系统开发_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统实践及工程应用——从基础到人工智能李磊华南理工大学第六章具备AI算力的嵌入式系统开发从数字电路到智能边缘的技术演进目录6.1AI与算力的介绍6.2算力在嵌入式系统的发展6.3初始Jetson平台6.4OpenCV实验AI的三大核心要素算法:AI的“智慧来源”决定了AI学习和解决问题的方法,是人工智能的核心逻辑。算力:AI发展的“驱动力”为复杂的算法模型运行提供必要的计算能力,是实现AI的基础。数据:AI的“燃料”决定了模型的学习深度和预测能力,是训练AI模型的原材料。三者相辅相成,共同构成了人工智能的基石,缺一不可。6.1AI与算力的介绍算法:AI的智慧来源技术演进与变革从传统机器学习算法,发展到如今以深度学习为代表的神经网络模型,如CNN和Transformer,实现了质的飞跃。核心驱动力算法的持续创新推动了AI在图像识别、自然语言处理等关键领域的突破性进展,是技术落地的核心引擎。智能决策机制决定了AI如何从海量数据中提取特征、进行学习,并最终形成解决特定复杂问题的智能决策能力。6.1AI与算力的介绍算力:AI发展的驱动力核心计算基石算力是支撑算法训练和推理的必要基础。没有强大的计算能力,再优秀的算法也无法转化为实际应用,它是AI智能运行的物理引擎。硬件架构演进经历了从通用CPU到并行计算GPU的跨越,现在正向AI专用芯片(如TPU、NPU)演进。每一次架构革新都为AI提供了更强大的算力底座。效能与规模突破算力的指数级提升大幅缩短了模型训练周期,使得千亿级参数的大规模预训练模型成为可能,推动AI应用向更复杂、更智能的方向发展。6.1AI与算力的介绍数据:AI的燃料高质量与多样性高质量、丰富且多样化的数据是训练优秀AI模型的基石。只有数据根基稳固,模型才能具备泛化能力。规模决定上限数据的规模和质量直接影响AI系统的最终表现。例如在自动驾驶场景中,海量数据是应对复杂路况的关键。核心驱动力数据是驱动AI不断学习进化的核心资源。就像燃料之于引擎,没有数据,再先进的算法也无法运转。6.1AI与算力的介绍嵌入式系统算力需求的演变过去:基础处理依赖低功耗微处理器,仅能支持简单的数据采集与基础逻辑处理,算力需求较低。现在:TinyML萌芽引入TinyML支持简单AI任务,但面对复杂深度学习算法时,传统算力架构开始显得捉襟见肘。未来:全维智能需要支持实时图像处理、高精度语音识别以及复杂的端侧AI推理,对算力提出极高要求。6.2算力在嵌入式系统的发展嵌入式AI硬件平台:NVIDIAJetson系列高性能架构集成专为嵌入式AI设计,集成高性能GPU和AI加速器,提供强大算力基础。高能效比设计在低功耗条件下实现强大AI计算能力,完美适配边缘计算场景。CUDA生态兼容继承服务器GPU架构,原生支持CUDA,可无缝部署PC端训练的模型。6.2算力在嵌入式系统的发展Jetson平台的广泛应用机器人领域核心应用:智能导航与物体识别

推荐方案:JetsonXavierNX智慧零售核心应用:智能货架系统,分析顾客行为

推荐方案:JetsonNano工业检测核心应用:实时产品缺陷检测,优化生产流程

推荐方案:JetsonAGXOrin自动驾驶核心应用:提供高性能边缘计算能力,支持复杂算法

典型案例:特斯拉、小米汽车6.2算力在嵌入式系统的发展JetsonNano开发板详解丰富的扩展接口40针GPIO接口兼容树莓派接口规范,便于外设扩展完备的I/O端口配备USB3.0、HDMI显示接口及千兆以太网口强大的计算核心128个CUDA核心基于Maxwell架构,支持高性能并行计算与推理主流框架支持原生支持PyTorch、TensorFlow等深度学习框架6.3初始Jetson平台实验1:OpenCV调用USB摄像头实验目的掌握在JupyterLab环境中配置与使用OpenCV库的基本方法。熟练掌握使用VideoCapture类调用USB摄像头,实现视频流的实时捕获与显示。实验环境核心硬件平台Jetson开发套件/PC主机输入设备USB免驱摄像头(UVC协议)软件环境Python3.x+OpenCV4.x+JupyterLab6.4.1OpenCV调用USB摄像头实验步骤:加载包与参数设置Python代码实现#1.导入必要的库importcv2importipywidgetsaswidgetsfromjetcam.utilsimportbgr8_to_jpeg

#2.设置显示窗口尺寸参数disp_W=640disp_H=480环境依赖与库加载引入OpenCV(cv2)进行核心图像处理,使用ipywidgets创建交互式控件,并导入jetcam工具包,为后续摄像头数据捕获打下基础。显示参数初始化定义显示窗口的宽度(disp_W)和高度(disp_H)。统一的尺寸设置可以避免后续图像渲染时出现的变形或错位问题,确保视觉效果一致性。6.4.1OpenCV调用USB摄像头实验步骤:创建显示窗口与捕获图像importcv2fromipywidgetsimportImage

#初始化摄像头对象cap=cv2.VideoCapture(0)image_widget=Image(format='jpeg')

#循环读取并显示帧whileTrue:ret,frame=cap.read()image_widget.value=frame核心功能实现1.导入OpenCV与ipywidgets库,创建交互式图像显示控件。2.初始化摄像头对象,通过VideoCapture接口开启设备。3.进入无限循环,持续读取摄像头帧数据并更新显示。预期实验现象•代码运行后,JupyterLab界面将弹出一个实时更新的窗口。•窗口中会显示USB摄像头捕获的实时画面,画面流畅无卡顿。•若未显示画面,请检查摄像头是否被其他程序占用。6.4.1OpenCV调用USB摄像头实验2:OpenCV常用图像操作实验目的掌握图像的读取(imread)与显示(imshow)熟悉色彩空间转换(cvtColor)操作实现图像的缩放(resize)处理完成处理后图像的保存(imwrite)实验环境Jetson开发板子系统搭载Ubuntu系统,部署OpenCV库PC机开发环境Windows或macOS,配置Python/CMake6.4.2OpenCV常用图像操作实验步骤:图像读取、转换与缩放01读取图像使用OpenCV的cv2.imread()函数读取文件,支持直接读取彩色图或灰度图。02色彩转换通过cv2.cvtColor()进行色彩空间转换,例如将BGR转换为灰度图。03图像缩放利用cv2.resize()调整图像尺寸,可指定缩放比例或目标像素大小。04显示与保存在Jupyter控件中展示结果,并使用cv2.imwrite()保存文件。6.4.2OpenCV常用图像操作实验结果:灰度化处理效果实时可视化对比JupyterLab中直观展示原始彩图与处理后的灰度图差异图像元数据解析自动解析并输出图像的宽、高及通道数等尺寸信息结果持久化存储将处理完成的灰度图像自动保存至本地指定路径6.4.2OpenCV常用图像操作实验3:OpenCV颜色识别实验实验目的图像蒙版应用掌握利用颜色阈值创建蒙版的基本方法,实现特定颜色区域的提取。形态学操作了解图像腐蚀(Erosion)与膨胀(Dilation)操作,用于去除噪点和优化轮廓。颜色比对流程熟悉从摄像头采集到HSV空间转换,再到颜色匹配的完整算法流程。实验环境配置Jetson开发套件搭载Linux系统的嵌入式AI计算平台。PC主机用于代码编写、调试及算法原型验证。USB摄像头提供实时视频流输入,进行视觉数据采集。6.4.3OpenCV颜色识别实验实验原理:为何选择HSV色彩空间?RGB色彩空间:描述强度基于红、绿、蓝三原色的光强混合,描述的是颜色的物理强度。不直观,难以直接通过数值范围界定特定颜色。HSV色彩空间:感知颜色色相(H)直接对应人眼感知的颜色类型(红、绿等)。通过简单的角度范围即可精确分类颜色,非常适合颜色识别任务。6.4.3OpenCV颜色识别实验实验原理:形态学操作——腐蚀与膨胀腐蚀(Erosion)缩小前景区域,扩展背景。主要用于去除小的亮点噪声,分离过于靠近的连接物体。膨胀(Dilation)扩大前景区域,收缩背景。主要用于填补物体内部的小洞,连接断裂的边缘部分。组合策略(Combination)通过先腐蚀后膨胀(开运算)或先膨胀后腐蚀(闭运算),有效去除小面积孤立噪声,同时保留主体区域的完整性。6.4.3OpenCV颜色识别实验实验步骤:颜色识别核心流程01.图像捕获从摄像头获取实时图像流,作为算法处理的原始输入数据。02.颜色转换将图像从默认的BGR色彩空间转换为HSV空间,以简化颜色分割。03.创建蒙版根据设定的HSV颜色阈值范围,生成二值化蒙版,分离目标颜色。04.形态学操作对蒙版执行腐蚀和膨胀操作,有效去除噪点,平滑图像边缘。05.轮廓检测在处理后的蒙版中查找并筛选出最大的轮廓,定位目标物体。06.绘制轮廓在原始图像上绘制检测到的轮廓或外接矩形,直观展示识别结果。6.4.3OpenCV颜色识别实验实验结果:实时颜色识别效果原始画面(Input)通过摄像头实时捕获的场景画面,包含背景环境与目标物体(JetsonNano开发板)。识别结果(Output)经过算法处理后,成功识别出指定颜色区域,并绘制白色轮廓进行标记,实现了实时分割。6.4.3OpenCV颜色识别实验实验4:Haar特征人脸检测实验实验目的深入理解Haar特征的基本定义,掌握其在图像处理中的核心用途。熟悉Haar特征与级联分类器的结合原理,掌握OpenCV中相关接口的基本用法。实验环境硬件平台:Jetson子系统开发板辅助设备:PC机(用于代码编写与调试)输入设备:USB摄像头(用于实时采集图像)6.4.3OpenCV颜色识别实验实验原理:什么是Haar特征?核心概念与原理经典目标检测技术在深度学习普及前,广泛应用于人脸检测的主流算法基础。基于灰度差异利用图像中相邻矩形区域的亮度差值来描述局部特征。特征值匹配通过计算白色与黑色矩形区域像素和的差值进行特征匹配。四种基本特征类型边缘特征检测图像中的垂直或水平边缘结构,如脸部轮廓。线性特征检测线条特征,例如眼睛和鼻子之间的线条。中心特征检测中心与周围区域的差异,如瞳孔或鼻尖。对角线特征检测斜向的边缘或纹理,增强对复杂结构的描述。6.4.3OpenCV颜色识别实验实验原理:级联分类器多级级联机制将多个简单的Haar特征分类器串联组合,构建成一个多层级的检测流水线,逐层筛选。“强拒绝”筛选策略在检测早期快速排除明显的非目标区域,仅对少数疑似区域进行后续的复杂检测,大幅减少计算量。高效与准确的平衡兼顾了高检测率与快速检测速度,是早期人脸检测技术中的主流且高效的实现方案。6.4.3OpenCV颜色识别实验实验步骤:人脸检测核心流程01.加载分类器加载预训练的Haar人脸检测级联分类器模型,这是检测的基础核心。02.图像捕获与预处理获取图像源,并将其转换为灰度图,去除色彩信息以简化后续计算。03.检测人脸区域调用分类器在预处理后的灰度图中进行特征匹配,定位人脸坐标。04.绘制结果展示在原始彩色图像上,根据检测到的坐标用矩形框标记出人脸位置。6.4.3OpenCV颜色识别实验实验一:Haar特征人脸检测实验目的了解特征基本定义和用途,掌握其在计算机视觉中的核心价值。熟悉Haar特征与分类器的基本用法,实现基础的人脸检测功能。实验环境嵌入式AI实验箱的Jetson子系统,提供高性能计算支持。标准PC机环境,兼容主流操作系统,适合算法调试。6.4.4Haar特征人脸检测实验实验原理:Haar特征核心概念Haar特征通过计算图像中不同区域的亮度差异来描述图像的局部特征,是传统人脸检测的经典方法。四种基本类型•边缘特征(EdgeFeatures)•线性特征(LineFeatures)•圆心环绕特征(Center-surroundFeatures)•特定方向特征(DiagonalFeatures)特征值计算方法特征值=白色区域像素和-黑色区域像素和6.4.4Haar特征人脸检测实验Haar特征计算与应用核心思想:模板匹配利用Haar特征模板匹配人脸关键部位(如眼睛、鼻子),通过灰度值差异定位目标区域。典型特征应用眼睛区域通常比脸颊区域颜色深鼻梁两侧通常比鼻梁区域颜色深特征提取过程通过调整模板的大小、位置和类型生成大量子特征,遍历扫描图像以检测不同目标。图示:Haar特征模板与面部特征的匹配示意6.4.4Haar特征人脸检测实验实验原理:AdaBoost级联分类器AdaBoost算法核心:集弱成强通过组合多个“弱学习器”构建高性能的“强学习器”,类似于“三个臭皮匠顶个诸葛亮”的思想。级联分类器结构:层层筛选多个强分类器串联成树状结构,只有通过所有阶段筛选的区域,才会被判定为正样本(人脸)。6.4.4Haar特征人脸检测实验级联分类器训练流程01.弱分类器训练从大量Haar特征中筛选出最优的特征,奠定检测基础。02.强分类器构建使用AdaBoost算法将筛选出的弱分类器组合成强分类器。03.多分类器训练重复上述步骤,训练出多个不同的强分类器以保证多样性。04.级联组合将多个强分类器按顺序串联,形成最终的级联分类器。级联人脸检测分类器原理示意6.4.4Haar特征人脸检测实验实验步骤:静态图片人脸检测核心实现代码(Python)#1.导入库与模型加载importcv2face_cascade=cv2.CascadeClassifier('haarcascade.xml')#2.读取图片并转为灰度图(Haar要求)img=cv2.imread('Face_test.jpg')gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#3.调用检测核心函数faces=face_cascade.detectMultiScale(gray,1.1,3)#4.绘制人脸框for(x,y,w,h)infaces:cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)核心函数解析detectMultiScale这是OpenCV中人脸检测的核心函数,能够自动检测图像中不同大小的人脸目标,并返回人脸区域的矩形坐标(x,y,w,h)。关键参数说明scaleFactor=1.1:每次图像尺寸减小的比例,值越小精度越高但速度越慢。minNeighbors=3:每个候选矩形需要保留的邻近数,值越大误检率越低。6.4.4Haar特征人脸检测实验实验现象:静态图片检测结果全量识别成功成功识别出输入图片中的所有人脸目标精准矩形框选输出图片中人脸被红色矩形框准确标出数量统计正确控制台输出总数:5(totalnumberofpeople)结论:实验结果验证了基于Haar特征的级联分类器在静态图片中具备高效、准确的人脸检测能力。6.4.4Haar特征人脸检测实验实验步骤:视频流人脸检测#1.获取摄像头对象

cap=cv2.VideoCapture(0)

#2.封装人脸检测函数

defface_detect():

whileTrue:

ret,frame=cap.read()

gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

faces=face_cascade.detectMultiScale(gray,1.3,5)

cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)

#3.开启线程运行检测

t=threading.Thread(target=face_detect)

t.start()核心逻辑解析实时帧捕获通过无限循环持续读取摄像头的每一帧图像,构建视频流处理管道。单帧流水线处理对每一帧图像重复执行:灰度转换->人脸检测->绘制矩形框的标准流程。多线程实时性保障使用threading模块开启独立线程运行检测函数,避免主线程阻塞导致画面卡顿。6.4.4Haar特征人脸检测实验实验现象:视频流检测结果实时画面展示在JupyterLab界面中,运行代码后会自动开启一个窗口,实时渲染来自电脑摄像头的视频画面。动态人脸追踪当检测到人脸时,程序会立即用蓝色矩形框精准地标出人脸位置,并能实时跟踪人脸的移动轨迹。启停控制逻辑启动:运行代码后自动开启检测结束:调用stop_thread(t)函数手动终止线程6.4.4Haar特征人脸检测实验实验二:深度神经网络人脸检测实验目的了解深度神经网络(DNN)人脸检测的基本原理与实现过程。对比Haar特征方法与深度神经网络方法在检测精度和速度上的差异。实验环境硬件平台:嵌入式AI实验箱(Jetson子系统)。辅助设备:PC机(用于代码调试与模型部署)。6.4.5深度神经网络的人脸检测实验实验原理:深度学习方法简介技术演进与突破从简单的感知机发展到包含多个隐藏层的深度神经网络(DNN),实现了人工智能领域的重大跨越。深度模型层级结构输入层:接收原始数据(如图像像素矩阵)隐藏层:多层神经元逐层提取和抽象特征输出层:输出最终预测结果(如分类标签)核心优势:自动特征学习无需人工设计特征,能够直接从海量数据中自动学习到高层的、复杂的语义特征。6.4.5深度神经网络的人脸检测实验实验原理:DNN与CNN在人脸检测中的应用DNN人脸检测流程1.输入层将图像的像素值矩阵化输入网络,作为原始数据。2.特征提取多层隐藏层自动学习,从边缘纹理到面部轮廓的抽象特征。3.输出层输出图像中人脸的边界框坐标以及识别的置信度。DNN结构示意图示展示了DNN如何将人脸像素映射为特征,经过多层隐藏层处理最终输出结果。CNN核心优势与结构局部连接:关注局部区域,减少计算量。权值共享:卷积核共享权重,降低参数量。空间结构:擅长捕捉图像的空间特征信息。6.4.5深度神经网络的人脸检测实验实验步骤:DNN模型人脸检测核心代码实现(Python+OpenCV)#1.加载预训练模型(无需手动设计特征)model=cv2.dnn.readNetFromTensorflow('frozen_model.pb')

#2.图像预处理(缩放与归一化)blob=cv2.dnn.blobFromImage(img,1.0,(300,300))

#3.模型推理(前向传播)model.setInput(blob)detections=model.forward()

#4.解析结果(过滤置信度>0.5)foriinrange(detections.shape[2]):confidence=detections[0,0,i,2]ifconfidence>0.5:#获取坐标并绘制...黑盒模型加载直接加载预训练好的模型文件(.pb),模型内部已包含所有特征提取和分类逻辑,无需手动设计Haar特征。标准化预处理关键步骤是通过blobFromImage对输入图像进行缩放和归一化,使其符合DNN模型的输入尺寸要求。直接推理与解析调用forward()方法直接获得检测结果,包含人脸位置坐标和置信度,最后根据阈值筛选有效结果。6.4.5深度神经网络的人脸检测实验两种人脸检测方法对比总结对比维度Haar特征方法深度神经网络(DNN/CNN)核心原理基于手工设计的Haar特征模板进行匹配。基于数据驱动,自动学习图像的高层语义特征。检测精度对姿态、光照、表情变化较为敏感,精度一般。鲁棒性强,对复杂变化适应性好,检测精度高。运行速度特征计算简单,检测速度快,对硬件要求低。计算量大,模型复杂,对硬件(尤其是GPU)有较高要求。模型训练无需大量数据,主要工作是特征和分类器设计。需要大量标注数据进行训练,训练过程复杂但使用简单。适用场景对实时性要求高、精度要求一般的简单场景。对精度要求高、场景复杂的实际应用。6.4.5深度神经网络的人脸检测实验实验目的理论基础构建熟悉Pytorch的基本概念和核心设计思想,建立对深度学习框架的系统性认知。实践技能掌握掌握Pytorch核心API及基本函数的使用方法,具备独立编写深度学习代码的能力。6.4.6深度学习基础实验——Pytorch基础实验环境嵌入式AI实验箱(Jetson)基于Jetson系列高性能计算模块,专为边缘计算与深度学习推理设计,提供强大的硬件加速能力。通用PC工作站兼容主流Windows或Linux操作系统,适合算法开发、模型训练及基础验证,环境搭建便捷。6.4.6深度学习基础实验——Pytorch基础Pytorch简介核心定义Facebook开源的深度学习框架,是Torch的Python实现版本,继承了Torch的灵活性。核心特征拥有独特的动态计算图机制,支持运行时动态构建和修改,提供极高的灵活性与直观的调试体验。设计目标替代NumPy,通过GPU实现高效计算利用自动微分机制,简化神经网络实现6.4.6深度学习基础实验——Pytorch基础张量系统(Tensor)基本定义PyTorch中最基础的数据结构,功能类似于多维数组和矩阵,是构建所有运算的基石。核心作用承载神经网络的输入数据、输出结果,以及模型训练过程中需要动态调整的参数。硬件加速优势支持在GPU等专用硬件上进行并行计算,相比NumPy数组,能显著提升深度学习模型的训练效率。6.4.6深度学习基础实验——Pytorch基础实验步骤:张量创建torch.empty(5,3)创建一个5行3列的未初始化矩阵,内存数据随机。torch.rand(5,3)创建一个随机初始化的5x3矩阵,数值范围在[0,1)之间。torch.zeros(5,3,dtype=torch.long)创建一个全0的5x3矩阵,并指定数据类型为长整型(long)。torch.tensor([5.5,3])直接从Python列表数据创建张量,数据类型自动推断。tensor.new_ones(5,3,dtype=torch.double)基于现有张量的属性(如设备)创建一个新的全1张量。torch.randn_like(tensor,dtype=torch.float)创建一个与输入张量尺寸相同但数据类型不同的随机张量。6.4.6深度学习基础实验——Pytorch基础实验步骤:张量操作加法运算操作tensor3+tensor4直接使用加号运算符torch.add(t3,t4)调用torch.add函数torch.add(...,out=res)将结果存入指定张量tensor3.add_(tensor4)原地加法操作,直接修改tensor3的值尺寸与形状变换x.view(16)x.view(-1,8)改变张量的形状。其中-1表示自动计算该维度的大小,保持元素总数不变。单元素值提取x.item()当张量只有一个元素时,将其转换为Python标量(如整数或浮点数)。6.4.6深度学习基础实验——Pytorch基础实验步骤:与Numpy转换Tensor转Numpy数组b=a.numpy()使用.numpy()方法直接转换,操作简便。Numpy数组转Tensorb=torch.from_numpy(a)使用torch.from_numpy()函数进行反向转换。关键特性:CPU内存共享机制转换后的张量和数组在CPU上共享同一块内存空间。修改其中一个变量的值,另一个也会随之改变。例如执行a.add_(1),NumPy数组b的值也会增加1。6.4.6深度学习基础实验——Pytorch基础实验步骤:广播机制(Broadcasting)核心定义当对两个形状不同的张量进行运算时,PyTorch会尝试自动扩展它们的维度,使其形状相同,这个过程称为广播。广播规则从最后一个维度开始向前比较,两个维度必须满足以下条件之一:维度大小相等其中一个维度大小为1其中一个维度不存在应用示例场景:2x3矩阵+长度为3的向量过程:向量被自动广播成2x3矩阵,然后进行逐元素相加。结果:代码简化,无需手动reshape。6.4.6深度学习基础实验——Pytorch基础实验步骤:异构设备数据传输核心方法:.to()PyTorch提供统一的`.to()`方法,用于在CPU和GPU等不同设备间移动张量数据。环境前提确保系统已安装NVIDIA显卡驱动及CUDA工具包,环境支持GPU加速。device=torch.device("cuda")1.定义目标设备(此处为GPU)y=torch.ones_like(x,device=device)2.直接在GPU上创建张量x=x.to(device)3.将CPU上的张量移动到GPUz=x+y4.在GPU上执行高速计算z.to("cpu",torch.double)5.将结果移回CPU并转换数据类型6.4.6深度学习基础实验——Pytorch基础梯度计算:概念与原理梯度的核心作用在深度学习中,梯度代表损失函数对参数的偏导数。它就像一个“指南针”,指引我们如何调整参数,使模型损失值下降得最快。Autograd自动求导PyTorch内置的autograd库实现了自动求导功能,无需手动推导复杂的链式法则,极大地降低了模型构建的门槛。动态计算图机制采用“define-by-run”策略,计算图在代码运行时动态构建。这种机制让模型的结构更加灵活,调试也更加直观便捷。6.4.6深度学习基础实验——Pytorch基础梯度计算:反向传播示意图原理说明模型通过前向传播计算预测值与损失,随后沿计算图反向逐层计算参数梯度,并利用梯度更新参数,迭代直至收敛。6.4.6深度学习基础实验——Pytorch基础梯度计算:代码实现1.启用梯度追踪在创建张量时设置requires_grad=True,开启自动微分追踪。x=torch.ones(2,2,requires_grad=True)2.反向传播计算梯度前向传播后调用.backward(),自动计算并存储梯度。out.backward()#out通常是标量损失值3.访问计算结果通过.grad属性查看计算出的梯度值。print(x.grad)#输出梯度矩阵4.停止梯度追踪推理阶段常用,节省显存。可使用detach()或上下文管理器。y=x.detach()withtorch.no_grad():...6.4.6深度学习基础实验——Pytorch基础6.4.6数字分类神经网络设计——Pytorch构建深度学习模型实验目的熟悉Pytorch数据处理流程与方法掌握Pytorch构建深度学习模型的核心步骤实验环境硬件平台:嵌入式AI实验箱(Jetson子系统)PC机(CPU/GPU)实验核心核心任务:数据集:MNIST手写数字库模型:改进的LeNet卷积神经网络目标:实现高精度的数字分类识别MNIST数据集与改进的LeNet模型MNIST数据集特点内容:包含0-9的手写数字灰度图像规模:训练集60,000张/测试集10,000张尺寸:每张图像分辨率为28x28像素改进的LeNet模型本次实验在经典的LeNet模型基础上进行了优化,调整了网络参数以适应MNIST数据集,旨在提升模型在手写数字识别任务中的收敛速度与准确率。6.4.6数字分类神经网络设计——Pytorch构建深度学习模型模型结构的关键修改01.输入层调整根据MNIST图像尺寸,将输入层调整为28x28,适配数据集输入。02.增加通道数卷积层通道数由1→6→16增加为1→16→32,显著增强特征提取能力。03.添加Padding在卷积操作中增加padding=2,确保卷积后特征图尺寸保持不变。04.更换激活函数将Sigmoid替换为ReLU,解决梯度消失问题,加速模型训练收敛。05.引入Dropout增加Dropout层,随机失活部分神经元,有效减少过拟合风险。06.简化全连接层简化全连接层结构,直接输出维度为10的向量,对应10个数字类别。6.4.6数字分类神经网络设计——Pytorch构建深度学习模型实验步骤:数据加载与可视化01数据加载与预处理使用torchvision.datasets.MNIST加载数据集,并应用Transforms进行归一化处理。02数据批量管理配置DataLoader,设定batch_size,实现数据的批量加载、打乱(shuffle)和多线程读取。03张量转图像展示将张量数据转换为PIL图像格式,直观展示数据集样本分布与单张图像的像素细节。图1:MNIST数据集一个Batch(64张)的可视化样本图2:单个数字“5”的像素级细节放大图6.4.6数字分类神经网络设计——Pytorch构建深度学习模型实验步骤:模型定义与训练模型定义(ModelDefinition)类继承与结构继承PyTorch的nn.Module基类,构建名为CNN的神经网络主体框架。网络层构建(__init__)在初始化方法中定义核心组件:包含两个卷积层用于特征提取,一个全连接层用于分类。前向传播路径(forward)明确数据流向,定义从输入到输出的完整计算路径,确保张量维度匹配。模型训练(ModelTraining)配置优化器与损失函数选择Adam作为优化器,CrossEntropyLoss作为损失函数,为参数更新做准备。迭代训练循环(EPOCHLoop)多轮次遍历数据批次,执行“前向传播计算预测值→计算损失→反向传播更新梯度”的闭环。训练监控与收敛定期输出训练损失值,实时监控模型学习状态,判断模型是否收敛。6.4.6数字分类神经网络设计——Pytorch构建深度学习模型实验结果与现象模型测试流程输入测试数据将训练好的模型应用于独立的测试集,获取模型的预测输出pred_y。对比真实标签将预测结果与测试集的真实标签test_y进行逐样本比对分析。关键实验现象实验输出结果显示,模型预测的数字序列与真实序列高度一致,验证了模型在手写数字分类任务上的有效性。[721...456]//Prediction(预测值)[721...456]//Real(真实值)验证通过:序列匹配度极高6.4.6数字分类神经网络设计——Pytorch构建深度学习模型6.4.7口罩检测模型设计——采用自用数据实验目的熟悉Pytorch处理自定义数据集的方法,掌握数据加载与预处理流程。掌握将Pytorch模型转换为ONNX格式的方法,实现模型的跨平台部署适配。实验环境硬件平台:嵌入式AI实验箱的Jetson子系统。通用PC机(用于模型训练与调试)。实验核心任务构建二分类模型,利用自定义人脸数据集训练,实现自动口罩佩戴检测。将训练完成的模型导出为ONNX格式,确保模型的通用性。口罩检测模型结构设计输入层(Input)输入尺寸:64×64像素图像格式:灰度图(Grayscale)通道数:1特征提取(CNNLayers)Conv1-3:32/64/64个3×3卷积核激活函数:ReLU(引入非线性)池化层:2×2最大池化(降维)分类与输出(Classifier)FC1:128神经元+Dropout(0.5)FC2:64神经元+Dropout(0.5)Output:2神经元(二分类)图像输入64x64Grayscale卷积与池化特征提取与降维全连接层特征分类与拟合分类输出戴口罩/不戴口罩6.4.7口罩检测模型设计——采用自用数据实验步骤:自定义数据集准备01.定义数据集类继承Pytorch的Dataset抽象类,构建数据读取框架。实现__len__方法,返回数据集的总样本数量。实现__getitem__方法,根据索引加载图像和对应标签。02.图像预处理统一转换为灰度图,简化计算复杂度。尺寸标准化为64x64像素,确保输入一致。执行归一化处理,优化数值分布以适应模型训练。03.划分数据集整理戴口罩与不戴口罩图片的路径及对应标签。使用train_test_split函数按8:2比例划分。80%作为训练集用于模型学习,20%作为测试集验证效果。6.4.7口罩检测模型设计——采用自用数据实验步骤:模型训练与评估定义核心函数train()函数执行单轮模型训练,计算并返回当前轮次的训练损失值和训练准确率。evaluate()函数在独立测试集上评估模型泛化能力,返回测试损失和测试准确率。配置训练参数硬件与策略自动检测GPU加速;采用CrossEntropyLoss损失函数与Adam优化器。迭代轮数设置训练总轮数num_epochs=20,确保模型充分收敛。执行训练循环交替训练与评估循环迭代20轮,每轮先调用train()更新权重,再调用evaluate()验证效果。实时监控逐轮打印训练集与测试集的损失值及准确率,可视化模型收敛过程。6.4.7口罩检测模型设计——采用自用数据实验结果与模型导出实验结果分析训练集准确率(20轮)98.4%测试集准确率93.2%实验结论:模型在自定义口罩检测数据集上表现出优异的识别能力,泛化性能良好。6.4.7口罩检测模型设计——采用自用数据实验目的与环境实验目的熟悉目标检测技术的基本过程,掌握关键步骤与原理。熟悉YOLOv5模型的部署方法,实现从训练到推理的落地。实验环境(硬件平台)嵌入式AI实验箱:搭载Jetson子系统,用于模型推理。PC机:用于前期算法开发、数据标注及模型训练。6.4.8行人检测模型设计——采用YOLO模型实验原理:背景减法(BackgroundSubtraction)核心思想构建稳定的背景模型,将当前帧与背景模型进行差分运算,提取代表运动目标的前景区域。关键步骤背景建模:持续观察场景,建立静态背景模型。前景提取:像素级差分运算,阈值处理生成前景掩码。6.4.8行人检测模型设计——采用YOLO模型实验原理:背景减法(MOG2算法)基于高斯混合模型(GMM)的背景建模方法,通过多模态分布适应复杂动态背景,实现高精度的前景检测。多模态建模为每个像素点维护3-5个高斯分布,能有效处理背景中光线缓慢变化、树叶晃动等动态干扰情况。动态权重更新根据各高斯分布在时间序列上的出现频率动态调整权重。持续时间越长的颜色分量权重越大,确保模型符合当前场景。自适应前景判定设定距离阈值,当新的像素值与所有背景高斯模型的距离都超过该阈值时,判定为前景目标。在线更新机制算法具备持续的在线学习能力,能够不断更新模型参数,从而适应场景的动态变化,保证了检测的鲁棒性。6.4.8行人检测模型设计——采用YOLO模型背景减法实验实现与现象核心代码实现(Python+OpenCV)

#视频读取循环cap=cv2.VideoCapture('video.avi')whileTrue:ret,frame=cap.read();ifnotret:break

#应用背景减除获取前景掩码mask=fgbg.apply(frame)

#形态学处理去噪&轮廓检测mask=cv2.morphologyEx(mask,cv2.MORPH_OPEN,None)cnts,_=cv2.findContours(mask,cv2.RETR_EXTERNAL,...)

#绘制目标框forcincnts:ifcv2.contourArea(c)>300:x,y,w,h=cv2.boundingRect(c)cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)实验结果可视化左图:原始视频帧与行人检测框;右图:背景减法生成的前景掩码(白色为运动物体)。6.4.8行人检测模型设计——采用YOLO模型实验原理:YOLOv5算法架构Backbone(主干网络)采用CSPDarknet结构,负责从输入图像中提取丰富的特征信息。Neck(特征融合网络)使用PANet结构进行多尺度特征融合,增强对不同大小目标的检测能力。Head(检测头)负责最终的目标框回归和类别预测,输出检测结果。损失函数(LossFunction)计算预测值与真实值之间的误差,指导模型进行学习和优化。6.4.8行人检测模型设计——采用YOLO模型实验原理:YOLOv5后处理(NMS)什么是NMS?非极大值抑制(Non-MaximumSuppression)是目标检测中解决同一目标被多次检测的关键后处理步骤。核心作用从大量冗余检测框中筛选出最准确、最具代表性的结果,显著提升检测精度。算法执行流程01.置信度排序将所有检测框按预测为目标的概率(置信度)从高到低进行排序。02.最优框筛选(IOU计算)选取置信度最高的框作为基准,计算其与其他框的交并比(IOU),删除IOU大于阈值的重叠框。03.循环迭代处理重复上述筛选过程,直到所有剩余的检测框都被处理完毕。6.4.8行人检测模型设计——采用YOLO模型YOLOv5实验实现:代码框架classYOLOV5():def__init__(self,onnxpath):self.onnx_session=onnxruntime.InferenceSession(onnxpath)self.input_name=self.get_input_name()self.output_name=self.get_output_name()definference(self,img):#图像预处理:缩放、归一化img=cv2.resize(img,(640,640))img=img.astype(np.float32)/255.0img=np.expand_dims(img,axis=0)#执行推理pred=self.onnx_session.run(self.output_name,{self.input_name[0]:img})returnpred,img模型加载初始化加载预训练的ONNX模型,配置CUDA执行环境,并获取输入输出节点名称。图像预处理Pipeline对输入图像进行标准化处理:缩放至640x640,归一化至[0,1],并调整维度顺序。执行推理与输出调用ONNX

Runtime执行前向传播,返回模型的原始预测结果张量。6.4.8行人检测模型设计——采用YOLO模型YOLOv5实验实现:NMS与可视化NMS非极大值抑制算法实现defn

温馨提示

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

最新文档

评论

0/150

提交评论