工业机器视觉与应用 课件 第4章工业机器视觉人工智能应用实践_第1页
工业机器视觉与应用 课件 第4章工业机器视觉人工智能应用实践_第2页
工业机器视觉与应用 课件 第4章工业机器视觉人工智能应用实践_第3页
工业机器视觉与应用 课件 第4章工业机器视觉人工智能应用实践_第4页
工业机器视觉与应用 课件 第4章工业机器视觉人工智能应用实践_第5页
已阅读5页,还剩215页未读 继续免费阅读

下载本文档

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

文档简介

工业机器视觉人工智能应用实践

--4.1基于深度学习的目标检测应用1.1基于深度学习的目标检测应用1.1.1深度学习与目标检测深度学习(deeplearning)特指基于深层神经网络模型的机器学习,它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重要的技术特点是具有自动提取特征的能力,所提取的特征也称为深度特征或深度特征表示,相比于人工设计的特征,深度特征的表示能力更强、更鲁棒。目标检测(objectdetection)是一种典型的深度学习任务,能够自动识别出图像中物体的位置和类别,在机器人抓取、工业缺陷检测、智能视频监控等领域具有广泛应用。1.深度学习基础1)数据集数据集(dataset)是模型训练与评估的基础。数据集是一组经过整理和标注的样本集合,用于教会模型如何完成任务。数据集包含样本和标签。样本即数据集中的单个数据单元,例如一张图片。标签及对样本描述,如一张图片的标签“猫”。典型的数据集包括MNIST、PASCALVOC、COCO和ImageNet。1.1基于深度学习的目标检测应用数据集中的数据通常被划分为训练集、验证集和测试集3部分。训练集(trainingset)用于训练模型参数。在训练模型时,利用训练集中的样本和标签调整模型参数,使得模型的输出值与标签一致。验证集(validationset)用于确定模型超参数。使用验证集对模型进行评估,以选择最佳的模型,或者确定模型最佳的一组超参数。测试集(testset)用于最终评估模型的性能。测试集中的数据是没有用于训练模型的新数据,通过计算模型在测试集上的各项指标,实现对模型性能的评估。2)卷积神经网络卷积神经网络(ConvolutionalNeuralNetwork,CNN)是一类包含卷积计算的神经网络,是深度学习中处理图像的经典模型。卷积神经网络通过卷积操作(convolution)和池化操作(pooling)学习输入特征的局部模式。随着网络层数的增加,卷积神经网络对这些局部模式不断地进行组合、抽象,最终学习到高级特征。基于这些高级特征,卷积神经网络可以完成分类、回归等任务。代表性的卷积神经网络有AlexNet、VGGNet和ResNet等。1.1基于深度学习的目标检测应用卷积神经网络主要由卷积层、池化层、全连接层、激活函数、输出函数等部分构成,一个简单的卷积神经网络,见图1。1.1基于深度学习的目标检测应用图1卷积神经网络(1)卷积层。卷积运算可通俗地理解为卷积核在图像上滑动,滑到每个位置时,均以其数据与图像上对应的数据对位相乘后求和。在卷积核滑过图像上每一个位置后,便得到一张新的图像,称之为特征图(featuremap)。3×3的卷积核对单通道图像的卷积运算过程见图2。在卷积运算中有填充(padding)、步幅(stride)的概念。填充是指给图像的边缘以外的区域扩充一定的行和列,并且给这些扩充区域填充数值0。填充使得在边缘像素上也能进行卷积操作,同时维持了卷积前后特征图尺寸的关联。步幅是指卷积核每次横向或竖向移动的距离。若步幅为1,则卷积前后得到的特征图的长宽尺寸与原图的长宽尺寸一样。若步幅为2,则卷积后得到的特征图的长宽尺寸是原图的长宽尺寸的一半。卷积神经网络堆叠多个卷积层,将上一卷积层得到的特征图输入下一个卷积层,可以从输入图像上提取到丰富的特征。1.1基于深度学习的目标检测应用图2卷积运算示意图(2)池化层。池化层(poolinglayer)一般紧跟在卷积的后面,对特征图进行降采样。池化层有固定的池化函数,不需要学习任何参数。池化后特征图的长宽尺寸减小,但其通道数保持不变。池化函数主要有最大池化(maxpooling)和平均池化(averagepooling)两种,分别求取池化窗口内的最大值和平均值。池化时,池化窗口在输入特征图上移动,各池化窗口中的数据不重合。当池化窗口遍历完整张特征图后,池化层便实现了对输入特征图的降采样,得到池化后的特征图。图3和图4分别为最大池化和平均池化的示意图。1.1基于深度学习的目标检测应用图4平均池化图3最大池化(3)全连接层。全连接层的每一个结点都与上一层的所有结点相连,实现对上一层提取到的特征的综合。全连接层的公式如下:1.1基于深度学习的目标检测应用(公式1)其中,

为该层神经元的输入信号,

为该层神经元的输出信号,

为该层中所有神经元的权值组成的权值矩阵,

是偏置。其中,

的值是通过训练神经网络得到的。(4)激活函数。激活函数的作用是使神经元输出非线性的结果。常见的激活函数有Sigmoid函数、Tanh函数、Relu函数等,这些激活函数的曲线,见图5。1.1基于深度学习的目标检测应用图5典型激活函数(a)Sigmoid函数(b)Tanh函数(c)Relu函数(5)输出函数。输出函数输出模型的预测结果。对于回归问题,模型直接输出回归结果。对于分类问题,可以通过Softmax函数输出样本属于第i类的概率,进而判断样本的类别。Softmax函数将神经网络的输出值转化为与各个类别对应的概率值,且所有类别的概率值之和为1。3)模型训练(1)损失函数。模型训练的目标是使神经网络的输出值y与输入样本的标签t一致。由于损失函数(lossfunction)表示y与t之间的差异,为了使y尽量等于t,模型以减小损失函数为目标进行模型训练。典型的损失函数有均方误差(MeanSquaredError,MSE)损失函数和交叉熵(crossentropy)损失函数。前者大多用于回归任务,后者大多用于分类任务。1.1基于深度学习的目标检测应用均方误差损失函数的表达式如下:1.1基于深度学习的目标检测应用(公式2)其中,N是样本总数,yi表示当输入第i个样本时神经网络的输出值,ti表示第i个样本的标签。例如,神经网络的输出值为y1=4、y2=9、y3=12,而这真实标签为t1=5、t2=8、t3=10,则神经网络的均方误差损失为1/3[(4-5)2+(9-8)2+(12-10)2]=2。均方误差损失的值越小,表明输出值与正确标签之间的差异越小,模型预测得越正确。在多分类问题中,单个样本交叉熵损失函数的表达式如下:1.1基于深度学习的目标检测应用(公式3)其中,K是类别总数,yk是模型预测的属于第k个类别的概率,通常通过softmax函数归一化获得,tk表示真实标签的one-hot编码。在one-hot编码中,仅目标类别为1,其余类别为0。例如,向神经网络输入一幅图像(见图6)。图6输入图像该图像标签的one-hot编码为1.1基于深度学习的目标检测应用(公式4)标签中1的位置表达了0到9对应的数字。该标签中的1在3的位置上,故代表数字3。假设神经网络的输出值为(公式5)该输出值表示图像为0的可能性为0.0,图像为1的可能性为0.3,图像为2的可能性为0,图像为3的可能性为0.2等。因此,该图像的交叉熵损失为-(1×ln0.2)=1.609。当有N张图像输入时,以式(4.1.4)依次计算这N张图像的交叉熵损失,并计算所得N个结果的均值,便得到这N张图像的交叉熵损失。交叉熵损失的值越小,表明输出值与正确标签之间的差异越小,模型预测得越正确。(2)梯度下降算法。神经网络通常以梯度下降算法更新模型的参数,从而减小损失函数的值,实现模型训练。对于模型中某个特定的参数

,梯度下降算法更新该参数的过程为1.1基于深度学习的目标检测应用(公式6)其中,

表述损失函数L对

的梯度,η表示学习率。梯度是一个向量,代表沿着该向量的方向改变

的值时,能最快速地增大L的值。由于需要减小L的值,故(公式6)式中使用的是梯度的反方向。学习率η用于控制每次迭代中模型参数更新的步长。学习率过大,学习过程可能不稳定;学习率过小,则学习的速度比较慢。简单模型一般取0.01~0.1,深度学习模型一般取10-3~10-5。图7展示了使用梯度下降算法调整θ的值,以使得损失函数L最小的过程。1.1基于深度学习的目标检测应用图7梯度下降算法的过程示意图(3)迁移学习。如果以随机值初始化神经网络的各个参数,虽然通过模型训练能够使模型输出正确的值,但训练过程漫长,耗时严重。在实践中,为了缩短训练时间,通常会采用迁移学习的策略。迁移学习是将某个研究任务上学习到的知识或模式应用到其他不同但密切相关的任务中。在神经网络模型训练中,迁移学习直接以现有的、在其他大型基准数据集上训练得到的模型作为当前任务的预训练模型,之后再以当前任务的数据集“微调”(Finetuning)这个预训练模型。迁移学习能大幅降低训练成本,同时快速得到高精度的网络模型。迁移学习示意图,见图8。1.1基于深度学习的目标检测应用图8迁移学习示意图(a)预训练模型的参数

(b)迁移学习后模型的参数2.目标检测基础1)目标检测模型目标检测是一种典型的深度学习任务,他既检测出各物体的位置,又判断出各位置物体的类别。物体的位置通常以矩形框的左上角点坐标(x1,y1)和右下角点坐标(x2,y2)确定,即(x1,y1,x2,y2)。物体的类别根据神经网络输出的各类别的概率值大小确定。假设一共有1024种物体,针对某一个矩形框,神经网络输出1024个概率值。最大的概率值对应的物体类别,即为模型预测的该矩形框中物体的类别。典型的目标检测结果,见图9。1.1基于深度学习的目标检测应用图9目标检测结果根据检测原理,目标检测模型可以分为单阶段模型和双阶段模型。单阶段模型直接从图像上预测出物体的位置和类别(见图10)。YOLO系列是典型的单阶段模型,包含YOLOv1、YOLOv2直到YOLOv11的多个版本。双阶段模型首先大致确定图像上可能存在物体区域,之后再精细调整这个区域,并预测出该区域中物体的类别(见图11)。R-CNN系列是典型的双阶段模型,包含R-CNN,FastR-CNN,FasterR-CNN等多个版本。单阶段模型比双阶段模型的检测速度更快,但检测精度略低。近年来,随着科学研究的不断深入,单阶段模型的检测精度已经大幅提升。1.1基于深度学习的目标检测应用图10单阶段模型目标检测图11双阶段模型目标检测2)目标检测评价指标(1)混淆矩阵。二分类模型的预测结果存在四种情况:将真实为正的样本预测为正样本,即真正(TruePositive,TP);将真实为正的样本预测为负样本,即假负(FalseNegative,FN);将真实为负的样本预测为正样本,即假正(FalsePositive,FP);将真实为负的样本预测为负样本,真负(TrueNegative,TN)。统计这四种情况下样本数量,得到混淆矩阵,见表1。根据混淆矩阵,可以计算出多种评价指标。1.1基于深度学习的目标检测应用表1二分类问题混淆矩阵真实值预测为正预测为负正真正(TP)假负(FN)负假正(FP)真负(TN)(2)准确率。准确率(Accuracy,ACC)是正确分类的样本数占总体样本数的比例,其数学公式为:1.1基于深度学习的目标检测应用(公式7)准确率综合评估了模型分辨真假的能力。准确率越大,模型的分辨能力越强;准确率越小,模型的分辨能力越弱。(3)精确率。精确率(Precision,P)又称查准率,表达的是真正样本占所有预测为正的样本的比例,其公式为

(公式8)(4)查全率。查全率(Recall,R)表达的是真正样本占所有真实为正的样本的比例,其公式为1.1基于深度学习的目标检测应用

(公式9)(5)PR曲线。PR曲线是在分类模型评估中常用的工具,特别适用于处理类别不平衡的问题。对于一个二分类模型,模型为每个样本都预测一个0到1的概率值。以设定的阈值T划分所有的概率值,可以将所有样本划分为负或正两个类别。不同的阈值T得到不同的混淆矩阵,进而得到不同的R和P的值。当阈值T从0增长为1过程中,得到一系列(R,P)值。以R为横坐标、P为纵坐标绘制(R,P)的值,便得到PR曲线。PR曲线越接近右上角越好。PR曲线上接近右上角的点表示在某个阈值T0下,分类结果的召回率R和精确率P都接近为1。一条典型的PR曲线,见图12。

图12PR曲线(6)平均精度。平均精度(AveragePrecision,AP)是PR曲线下的面积。根据PR曲线是否接近右上角点只能大致定性地判断模型的性能,而通过AP的值可以定量地评估模型的性能。按照PASCALVOC数据集的计算方法,将召回率R从0到1分为11个等距点ri∈{0,0.1,0.2,…,1.0}。在每个召回率点ri处,取所有召回率≥ri时的最大精确率,按如下公式求得AP的值:1.1基于深度学习的目标检测应用

(公式10)其中,ri表示第i个位置的召回率,P(ri)表示PR曲线上与ri对应的精确率。(7)交并比。在实践中,预测的边界框肯定会偏离真实标注的边界框,交并比(IntersectionoverUnion,IoU)是一个度量预测框与真实框重合程度的值。见图13,IoU以用预测框(A)和真实框(B)的交集除以两者的并集。当预测框与真实框完全不重合时,IoU值为0;当预测框与真实框完全重合时,IoU值为1。IoU的公式为1.1基于深度学习的目标检测应用

(公式11)

图13IoU的计算示意图(8)全类平均精度。全类平均精度(meanAveragePrecision,mAP)用于衡量模型在不同类别上的平均精度,其值越高表明模型整体性能越好。计算mAP需首先计算每个类别的平均精度(AP),然后对所有类别的AP求平均。在目标检测中,在不同的IoU值下能得到不同的mAP值。通常将IoU值设为0.5、0.75和0.9等,对应的mAP值分别记为mAP50、mAP75和mAP90。1.1.2YOLOv11模型特点及应用1.YOLOv11模型结构2016年,JosephRedmon及其团队首次将目标检测任务转化为端到端的回归问题,开创性地提出了单阶段检测框架——YOLO(YouOnlyLookOnce),从根本上颠覆了传统的两阶段检测方法。2024年,Ultralytics团队基于前作YOLOv8推出了YOLOv11。1.1基于深度学习的目标检测应用YOLOv11模型的仍采用主干网络加颈部网络和头部网络的整体架构设计,见图14。YOLOv11首先通过主干网络提取图像的特征,随后通过颈部网络融合不同尺度的特征,最后通过头部网络输出预测结果。主干网络由常规卷积模块(Conv)与新设计的C3K2模块堆叠构成。C3K2模块在标准C3k模块的基础上,融合了多尺度卷积核C2k,可以在保证检测性能的同时提升特征提取速度。颈部网络通过构建特征金字塔,实现深层特征与浅层特征的融合。之后再对融合后的特征进行一次下采样和特征融合,提升特征融合的效果。最后,头部网络基于三种分辨率的特征图,覆盖不同大小物体。综合利用这3组输出值,可以实现高精度的目标检测。1.1基于深度学习的目标检测应用图14YOLOv11结构图2.YOLOv11模型应用1)YOLOv11图像预处理图像预处理是目标检测流程的重要步骤,可以满足模型对于输入图像特定的需求,以及提高模型的检测精度。首先,YOLOv11中输入图像的长宽尺寸需为640×640。对于输入的任意尺寸的图像(见图15),YOLOv11在保持图像原始长宽比的情况下,通过图像缩放与填充将所有图像调整为640×640的固定尺寸图像。其次,YOLOv11输入图像的灰度值需在0到1之间。对于输入的任意图像,YOLOv11将整张图像上所有像素的灰度值除以255,从而将输入图像的灰度值归一化到0到1之间。此外,YOLOv11使用了一些数据增强方法以增加训练样本的多样性。例如,通过马赛克(mosaic)方法将多张图像拼接成一张图像,通过混合(mixup)方法将两张图像混合叠加,通过图像翻转、旋转以及颜色扰动等方式来增强模型的适应性。马赛克数据增强方法的结果,见图16。1.1基于深度学习的目标检测应用图16马赛克数据增强方法图15Resize过程2)YOLOv11模型训练YOLOv11模型输出边界框坐标ybox、置信度yobj及类别概率ycls。边界框坐标ybox给出了边界框在图像上的位置和大小;置信度yobj表达边界框中存在物体的可能性,其值在0~1之间,值越大表示存在物体的可能性越大;类别概率ycls表达边界框中物体属于某个类别的概率,值越大表示属于该类别的可能性越大。在训练过程中(见图17),对于输入图像x,模型输出对应的值(ybox,yobj,ycls)。1.1基于深度学习的目标检测应用图17YOLOv11的损失函数将模型输出值与输入图像的标签(tbox,tobj,tcls)进行比较,依次计算得到边界框回归损失Lbox,置信度损失Lobj,和分类损失Lcls。边界框回归损失Lbox确保模型能框出图像中的物体,置信度损失Lobj用于提高模型对边界框内是否存在物体的判断能力,分类损失用于确保模型能识别出边界框中物体的类别。各项损失加权求和得到总损失函数L。通过梯度下降算法,YOLOv11模型中的网络参数朝着使L减小的方向调整。利用训练集中的样本对YOLOv11模型进行多轮(epoch)训练,L的值不断减小。在适当的时候(例如达到一定训练次数,或L的值不再减小)停止训练,YOLOv11模型便能输出与标签几乎一致的值。1.1基于深度学习的目标检测应用3)YOLOv11模型预测在预测阶段中,YOLOv11将为每张图像产生大量的候选框。每个候选框均包含位置信息、置信度、类别概率。为了避免大量重复框的干扰,需要通过一系列方法筛选出其中最准确的预测框。首先,根据置信度筛选。模型将根据设定的置信度阈值,保留置信度大于阈值的框,剔除低置信度候选框。当设定阈值为0.3时,0.1的框将被舍弃,而0.8则得以保留(见图18)。此外,这一过程支持单标签处理和多标签处理模式。在单标签处理模式下,仅保留置信度最高的类别。而在多标签处理模式下,将保留所有置信度大于阈值的类别。1.1基于深度学习的目标检测应用图18根据置信度筛选候选框其次,采用非极大值抑制(Non-MaximumSuppression,NMS)筛选。非极大值抑制能过滤掉重复的检测结果,确保每个物体只被检测到一次。见图19(a),在检测同一个目标时,存在多个候选框相互重叠的情况。首先,根据置信度的值对各候选框从大到小排序,并选择置信度最高的候选框作为参考框。之后,计算其他所有候选框与参考框的IoU值,将所有IoU值大于给定阈值的各个候选框删除。最后,再从剩余的候选框中选择置信度最高的那个作为新的参考框,并重复进行上述过程。最终保留下来的候选框,即为经非极大值抑制后得到的结果,见图19(b)。4)YOLOv11检测指标计算以训练好的YOLOv11模型检测测试集中所有的图像,根据检测结果计算混淆矩阵、绘制PR曲线、并最终得到mAP值。根据mAP值,评估模型的检测性能。1.1基于深度学习的目标检测应用图19采用非极大值抑制筛选候选框(a)非极大值抑制前(b)非极大值抑制后综合实验——利用目标检测技术实现水果辨别1.1.3综合实验——利用目标检测技术实现水果辨别本实验通过基于深度学习的目标检测技术来实现水果的辨别。首先,采集多样化的水果和非水果图像数据。然后,使用标注工具对图像进行标注并转换为YOLO格式的数据。接着,基于YOLOv11目标检测模型,并利用预训练权重作为初始参数进行微调。最后,通过模型的训练、测试和参数优化,实现基于深度学习的水果辨别。【实验目的】知识目标(1)认识数据采集、数据标注和数据预处理在深度学习中的重要作用。(2)掌握如何进行数据标注的方法。(3)理解深度学习模型在目标检测中的应用。1.1基于深度学习的目标检测应用能力目标(1)能够进行软件代码运行环境的配置以及相关硬件的配置。(2)能够利用工具完成数据采集和标注,形成适合训练的目标检测数据集。(3)能够运用相关深度学习框架进行模型训练和测试等,实现水果目标检测。素养目标(1)培养学生严谨细致的工作态度和问题解决能力。(2)提高学生团队协作能力,通过小组项目完成任务。(3)提高学生对人工智能技术在实际工程中的理解与应用能力。【实验原理】本实验基于YOLOv11目标检测模型,实现对水果的识别与定位。通过使用在COCO数据集上预训练的权重作为初始参数,并针对水果辨别场景进行微调,以适应实验环境和水果类别。接下来,使用标注工具对采集的图像进行标注,并将其导出为YOLO格式的数据。最后,通过模型的训练、测试等,完成水果目标检测的实现。1.1基于深度学习的目标检测应用【实验过程】使用深度学习模型实现水果目标检测:首先在固定相机位置和恒定光源条件下,随机摆放水果(如苹果、梨、橙子、桃等)及部分非水果物品,采集符合实际应用场景的数据,确保数据多样性。然后,使用目标检测标注工具对采集的图片进行标注,为每个目标标注矩形框和类别标签,并导出为YOLO格式的数据。接下来,基于YOLOv11目标检测模型,利用COCO数据集预训练权重作为初始参数,在水果辨别场景下进行微调,以适应具体的实验环境和水果类别。最后,进行模型的训练、测试等,最终实现基于深度学习的水果辨别。1.环境配置实验环境推荐使用Windows环境,需配置至少8GB显存的GPU一块。本实验基于windows11系统完成开发。具体的环境配置流程请观看视频讲解。1.1基于深度学习的目标检测应用2.代码结构该项目的整体代码结构见图20。1.1基于深度学习的目标检测应用图20整体代码结构●configs:数据集和训练配置文件目录;data:训练结果和测试数据目录。●datasets:采集数据集和训练数据集目录;libs:外部依赖库或工具目录。●src:项目核心代码目录。●weights:权重文件目录。●data_acquire.py:数据采集脚本。●train.py:模型训练脚本。●val.py:模型评估脚本。●export.py:ONNX模型导出脚本,训练好的模型导出为ONNX格式。●test_image.py:单张图片进行目标检测测试脚本。●test_camera.py:视频流目标检测测试脚本。●calibrate.py:手眼标定脚本,用于执行手眼标定等操作。1.1基于深度学习的目标检测应用3.场景搭建本实验将基于视觉和大型语言模型实现机器人智能抓取物体,实验场景见图21。1.1基于深度学习的目标检测应用

夹爪

相机图21实验整体场景4.实验流程以下为具体的实验流程,请同时参看视频讲解。1)数据采集本实验为桌面固定检测场景,只需采集较小的数据规模,我们以采集80幅图像为例,其中60幅为训练集,20幅为验证集。使用Vscode打开项目目录,编辑data_acquire.py文件,设置采集参数(见图22)。1.1基于深度学习的目标检测应用图22命令操作1确保相机已经接入电脑的前提下,在Vscode终端界面下输入如下命令(见图23)。pythondata_acquire.py1.1基于深度学习的目标检测应用图23命令操作2命令含义:执行用于采集实验桌面图像数据的脚本。作用:采集实验桌面所在的图像数据。运行后,将实时显示当前桌面所在的画面(见图24),画面左上角会显示当前已采集的图片数量(COUNT=0)。可以通过在桌面上随机摆放不同水果,且可以同时随机摆放一些非水果物品以增加数据的多样性。按键盘S键保存图片,按Q键或Ctrl+C组合键退出采集。按照上述流程可以分别采集作为训练集和验证集的图片。1.1基于深度学习的目标检测应用图24命令操作32)数据标注数据标注(dataannotation)是指对原始数据进行人工或自动的标记和注释,使机器学习模型或其他分析工具能够理解和利用这些数据。标注的过程通常包括为数据添加标签、分类、注释或其他元数据,使其具有特定的意义或结构。数据标注是模型训练的重要前置步骤,数据标注质量的好坏直接影响到模型的精度。在目标检测任务中,数据标注过程包括为检测对象添加矩形框和类别标签,以表示物体的类别及其在图像中的像素坐标位置。而生成对象的标签信息需要使用特定的可视化工具,即标注工具来完成。本实验使用X-AnyLabeling工具进行数据标注。在使用X-AnyLabeling进行标注前,需要确定数据集的标签列表,该列表由数据集中所有检测对象的英文单词构成。如本实验中,检测对象共4个,分别是苹果、橙子、桃、梨。对应的标签列表分别是apple、orange、peach、pear。1.1基于深度学习的目标检测应用运行libs\X-AnyLabeling\windows目录下的X-AnyLabeling-CPU.exe程序,启动标注工具,见图25。按照流程加载待标注数据集,并开启自动标注模式。以标注训练集为例,见图26。1.1基于深度学习的目标检测应用图25命令操作4图26命令操作5(1)单击左侧边栏“打开文件夹”按钮(见图26),打开训练集datasets\raw\fruit_det\train。(2)单击左侧边栏“自动标注”按钮(见图26),在下拉菜单中选择“SegmentAnything2.1(Large)”模型,将模型输出切换成矩形框,使用正样本点提示进行自动标注。关于自动标注更详细的使用方法,请观看视频讲解。在自动标注模式下,按如下流程完成单个对象的标注。(1)单击当前图片中任意待标注对象,将生成一个预测检测框。根据正样本点和负样本点提示调整预测框直至与预期一致。(2)按F键,保存标注。当标注完当前图片的所有检测对象后,按D键进入下一张图片的标注。根据上述步骤依次完成训练集和验证集的数据标注。(3)标注完成后需要按照特定的存储格式来存储所有图像的标签信息,方便于数据集加载和处理的标准化。常用的数据集格式有COCO、VOC、YOLO、CVAT等。X-AnyLabeling支持YOLO数据格式导出,因此本实验直接将标注数据导出为YOLO格式,方便后续训练。1.1基于深度学习的目标检测应用在导出之前,我们可以查看一下当前标注的统计信息,确保每个标签都至少有一个标注实例。在菜单栏中单击“工具”->“统计概览”,见图27。1.1基于深度学习的目标检测应用图27命令操作6在dataset/trainval目录下新建fruit_det目录,在fruit_det目录下新建train和val目录(见图28)。1.1基于深度学习的目标检测应用图28命令操作7在fruit_det目录下,新建classes.txt文件,在文件中依次添加对象标签,见图29。其中,每一行表示一个对象标签,标签的顺序将影响最终导出数据集的标注信息,因此在使用过程中应保持不变。1.1基于深度学习的目标检测应用图29命令操作8在菜单栏中单击“导出”->“导出YOLO水平框标签”,见图30。1.1基于深度学习的目标检测应用图30命令操作9选择新建的classes.txt标签文件,双击确定后弹出窗口,见图31。图31命令操作101.1基于深度学习的目标检测应用在窗口中勾选“保存原始图像”和“跳过空标签文件”,导出路径根据当前标注的数据划分类型选择datasets\fruit_det\train或datasets\fruit_det\val文件夹。确定后,将在文件夹下生成YOLO格式的数据集,见图32。图32命令操作111.1基于深度学习的目标检测应用其中,每幅图像对应一个txt标注文件,其内容见图33。每行表示一个标注实例,第一个值为标签序号,例如1表示标签列表的第2个标签,此处为orange。其余值为由(cx,cy,w,h)表示的矩形框,(cx,cy)表示矩形框中心点坐标的归一化值,(w,h)表示矩形框的宽高的归一化值。图33命令操作121.1基于深度学习的目标检测应用根据上述标注和导出流程,最终生成训练集和验证集(见图34)。图34命令操作13注意,为了保证数据标注质量,应在标注完成后使用标注工具快速查看一遍所有标注结果,防止存在误标和漏标的情况。1.1基于深度学习的目标检测应用3)模型训练和评估(1)训练。训练集和验证集标注完成并导出后,就可以开始训练了。在当前项目的目录下,创建一个数据集配置文件,如fruit_det.yaml,填入信息(见图35)。图35命令操作141.1基于深度学习的目标检测应用path为数据集根目录的相对路径,train和val分别为训练集和验证集的文件夹名称,names为标签列表。注意,此处的标签列表需要与数据标注的标签列表保持一致,否则会导致识别错误。

训练一个模型通常有两种方式,一种是从头开始训练,即模型从随机初始化权重开始训练。另一种是微调(finetuning),即在一个预训练权重上继续训练。第一种方式通常需要更多的数据和更多的训练轮数才能让模型收敛;而第二种方式通常只需要少量数据和几个轮次即可取得较好训练效果。当然微调有一定的限制,需要尽量保证待训练的数据集与预训练权重的原始训练数据集场景不要差异太大,否则微调模型难以取得较高的精度,例如,基于白天场景数据的预训练模型来微调夜晚场景数据。如果差异太大,则需要采集更多的数据以弥补场景差异带来的微调损失。1.1基于深度学习的目标检测应用本实验为桌面实验场景,检测对象为水果,是较为通用的检测对象和场景,因此适合进行微调。使用的预训练权重为官方发布的基于COCO2017数据集训练的模型权重。COCO数据集是一个大规模物体检测、分割和图像描述数据集。其包含330000幅图像,共80个物体类别,包括汽车、自行车和动物、水果等常见物体,同时也包含苹果、橙子、香蕉等常见水果类别。预训练权重存放在项目的weights文件夹下。使用Vscode打开fruit_grasp项目代码,编辑train.py修改参数,修改完成后在Vscode终端中输入如下命令(见图36)。pythontrain.py图36命令操作151.1基于深度学习的目标检测应用命令含义:运行模型训练程序。作用:训练深度学习模型。train.py参数配置示例,见图37。图37命令操作161.1基于深度学习的目标检测应用对于训练参数的配置,有如下几点需要注意:●预训练权重需要与模型尺寸保持一致。●对于微调任务,训练轮数不要太多,一般小于10。●训练批次可根据内存或显存调整,一般为2的整数倍。●本实验只展示了几个常用的参数,如果需要修改更多参数,请参考libs\ultralytics-8.3.74\ultralytics\cfg\default.yaml。不同模型尺寸对应的精度和运行速度,可根据硬件和使用场景选择合适的尺寸,见表2。表2二分类问题混淆矩阵模型尺寸输入尺寸精度(mAP)速度(CPU)速度(GPU)参数量(M)FLOPs(B)YOLO11n64039.556.1±0.81.5±0.02.66.5YOLO11s64047.090.0±1.22.5±0.09.421.5YOLO11m64051.5183.2±2.04.7±0.120.168.0YOLO11l64053.4238.6±1.46.2±0.125.386.9YOLO11x64054.7462.8±6.711.3±0.256.9194.91.1基于深度学习的目标检测应用训练完成后的部分日志,见图38。图38命令操作171.1基于深度学习的目标检测应用在CPU上训练6轮耗时3分钟左右,最终的训练精度为96.5mAP50。训练产生的权重文件、验证精度、训练参数等数据会存放在data/exp/fruit_det/detect/train目录下,当有多次训练时会生成train2、train3等增量文件夹。训练的部分结果展示,见图39。图39命令操作181.1基于深度学习的目标检测应用(2)评估。训练完成后需要根据验证集的相关指标评估本次训练的效果。训练结果文件夹生成的验证集相关的指标结果是在默认验证参数下生成的,如使用的置信度阈值为0.001,这显然与实际使用时不符,为了更准确地评估训练的效果,需要设置合适的置信度阈值。编辑val.py修改参数,修改完成后在Vscode终端中输入如下命令(见图40)。pythonval.py图40命令操作19命令含义:运行模型评估程序。作用:对模型进行验证评估。1.1基于深度学习的目标检测应用val.py参数配置示例,见图41。图41命令操作20运行后,会在data\exp\fruit_det\detect\val目录下生成评估结果,同时在终端打印每个类别的精确率、召回率和mAP信息(见图42和图43)。图42命令操作21图43命令操作221.1基于深度学习的目标检测应用(3)模型性能评估指标。结合本实验,我们关注这些指标,包括混淆矩阵(ConfusionMatrix)、精确率曲线(PrecisionCurve)、召回率曲线(RecallCurve)、mAP(MeanAveragePrecision),因为它们能够全面评估目标检测模型的性能。①混淆矩阵用于评估模型的分类能力,可以直观地看到每个类别的分类情况。每一行表示某个真实类别的样本,数值表示这些样本被预测为不同类别的比例。每一列表示某个预测类别,数值表示模型将各个真实类别误分类为该类别的情况。对角线上的值表示正确分类的样本数,可以用来观察哪些类别的分类效果较好。1.1基于深度学习的目标检测应用在本实验中,置信度设为0.4时,各类别的正确分类率较高(都在0.95以上),表明模型在验证集上的分类表现较好(见图44)。图44混淆矩阵评估模型1.1基于深度学习的目标检测应用②精确率曲线反映了不同类别在不同置信度下的Precision(精确率)变化情况,见图45。精度曲线反映了不同类别在不同置信度下的精度的变化情况。在某个合适的置信度下,如果某些类别精度偏低,则需要分析是否是数据标注问题或数据量不够,抑或是该类别缺失与其他类别容易造成混淆。图45模型精确率1.1基于深度学习的目标检测应用③召回率曲线反映了不同类别在不同置信度下的召回率的变化情况。在某些场景中(如医学)注重高召回率,如果某些类别召回率偏低,同样需要分析造成低召回率的原因,从而进行针对性的改进。例如,该类别的样本是否不足;该类别是否与其他类别混淆严重;置信度阈值是否设定过高,导致模型遗漏了一些目标。④mAP,即平均精度均值,用于衡量模型在检测目标时的分类和定位能力。它综合了Precision(精确率)和Recall(召回率)的信息,并通过计算不同置信度阈值下的性能来反映模型的整体表现。mAP50计算的是IoU=0.5时的平均精度,用于衡量目标检测的基本性能。mAP50-95计算的是IoU阈值从0.5到0.95之间(步长0.05)的平均精度,相对更严格,更能全面衡量模型的检测能力。在实际应用中,mAP是目标检测最常用的评估指标。如本实验的训练结果显示,所有类别的mAP50均在0.95以上,mAP50-95均在0.85以上,说明模型在检测任务中的表现较好。1.1基于深度学习的目标检测应用4)模型测试模型测试有两种方式,分别是图片测试和视频流测试。(1)图片测试。编辑test_image.py修改参数,修改完成后在Vscode终端中输入如下命令,见图46。pythontest_image.py图46命令操作231.1基于深度学习的目标检测应用命令含义:运行图片测试程序。作用:对模型进行验证评估。对测试图片进行目标检测。执行该命令后,模型会加载训练好的权重,并根据test_image.py中的参数对输入图片进行推理,最终输出检测结果。test_image.py配置示例,见图47。图47命令操作241.1基于深度学习的目标检测应用图片测试结果示例,见图48。图48图片测试结果1.1基于深度学习的目标检测应用(2)视频流测试。编辑test_camera.py修改参数,修改完成后在Vscode终端中输入如下命令,见图49。pythontest_camera.py图49命令操作251.1基于深度学习的目标检测应用test_camera.py配置示例,见图50。图50命令操作261.1基于深度学习的目标检测应用视频流测试结果示例,见图51。图51视频流测试结果1.1基于深度学习的目标检测应用5)模型部署模型训练完成后,需要根据最终的部署硬件选择合适的推理框架部署到实际的应用场景中。而不同的推理框架一般会定义不同的模型格式,首先需要根据推理框架将训练模型导出到指定的模型格式。YOLO11提供了导出脚本支持将训练模型导出到不同的格式,如ONNX、OpenVINO、TensorRT等。在本实验中,我们使用onnxruntime框架进行模型推理,因此需要将训练模型导出为ONNX格式。编辑export.py修改参数,修改完成后在Vscode终端中输入如下命令,见图52。pythonexport.py图52命令操作271.1基于深度学习的目标检测应用命令含义:导出训练好的模型为指定的推理框架格式(ONNX)。作用:将训练完成的模型转换为ONNX格式,以便在onnxruntime框架中进行高效推理和部署。export.py配置示例,见图53。图53命令操作281.1基于深度学习的目标检测应用执行后,将在weights/export目录下生成onnx模型文件,见图54。图54onnx模型文件1.1基于深度学习的目标检测应用【实验结果与总结分析】本实验成功实现了基于YOLOv11模型的水果目标检测,涵盖了数据采集、标注、训练、测试等步骤,成功验证了从环境配置到目标检测的有效性(见图48和图51)。实验结果表明以下结论。(1)该视觉系统经过优化的YOLOv11模型在测试数据上的表现较为稳定,能够精准识别苹果、橙子、桃和梨等水果目标,且对不同形态和颜色的水果均能较好适应,满足实验预期。(2)模型在一定程度上能够排除背景干扰和非水果物体,提高检测的可靠性。这表明,合理的数据预处理和模型优化策略对提升目标检测的精度具有重要作用,为后续的水果分类与检测应用进一步奠定了基础。拓展实验——机械臂智能化水果抓取1.1基于深度学习的目标检测应用1.1.4拓展实验——机械臂智能化水果抓取【实验目的】知识目标(1)了解相机坐标系、像素坐标系与机器人基座坐标系之间的坐标变换关系。(2)掌握通过深度学习实现目标检测与三维抓取位姿计算的基本思路。(3)理解深度学习模型在目标检测中的应用。能力目标(1)能够完成相机与机器人系统的标定流程。(2)能够完成图像坐标到机械臂世界坐标的转换,实现抓取目标位姿的精准获取。(3)能够调试并运行完整的水果抓取流程。素养目标(1)培养学生严谨细致的工作态度和问题解决能力。(2)提高学生团队协作能力,通过小组项目完成任务。(3)提高学生对人工智能技术在实际工程中的理解与应用能力。1.1基于深度学习的目标检测应用【实验原理】本实验基于YOLOv11的目标检测模型,实现对水果的自动识别与定位。结合3D相机获取的深度信息与机械臂的运动控制,实现精准的空间抓取。通过手眼标定获得相机坐标系与机械臂基座坐标系之间的变换关系,用于完成坐标转换和位姿计算。最终通过控制协作机器人和三指柔性夹爪,完成水果的自动抓取与放置。【实验过程】使用深度学习模型实现水果抓取:首先完成手眼标定,依次进行标定板安装、图像与位姿数据采集以及外参计算。然后利用深度相机采集图像与深度信息,结合检测模型识别出水果的像素坐标和深度信息。根据标定结果与相机内参,将水果的像素坐标转换为机械臂基座坐标系下的位置。最后运行抓取程序,机器人按照检测结果依次抓取水果并移动至指定位置放置完成操作(同本节综合实验-水果辨别场景,图21)。1.1基于深度学习的目标检测应用1.环境配置本实验的环境配置同本节的综合实验(水果辨别)一致。2.代码结构本实验的代码结构同本节的综合实验(水果辨别)一致。3.场景搭建本实验的场景搭建同本节的综合实验(水果辨别)一致。4.实验流程以下为具体的实验流程。1)手眼标定(1)标定板安装。将标定板固定在机械臂末端,且保证在标定过程中标定板始终固定不变。标定板安装含义:将非对称圆形标定板安装在机械臂末端,确保在整个数据采集中姿态不变。作用:用于获取相机和机械臂之间的空间关系。1.1基于深度学习的目标检测应用(2)采集标定数据。①首先在配置文件src/config.py中设置标定参数(见图55)。图55命令操作11.1基于深度学习的目标检测应用②在Vscode终端中输入如下命令(见图56)。pythoncalibrate.py--modeacquire命令含义:启动标定数据采集程序,打开深度相机并实时检测图像中的标定板圆心信息。作用:获取多个不同角度下的标定板图像及机械臂末端位姿,为后续手眼标定计算变换矩阵做准备。图56命令操作21.1基于深度学习的目标检测应用③运行后,屏幕将实时显示当前桌面画面(见图57),在画面中如果出现标定板,会在图像中标注出识别到的标定板的每个圆的圆心,并按照行连接圆心。图57命令操作31.1基于深度学习的目标检测应用通过使用cv2.findCirclesGrid方法来找圆心,其使用示例见图58。图58命令操作4参数如下。●image:包含标定板的灰度图像。●patternSize:标定板每行和每列的圆数量,如(4,5)表示每行4个圆。●flags:针对标定圆心识别的操作标志,主要有几种可选项。CALIB_CB_SYMMETRIC_GRID即对称圆排列网格模式;CALIB_CB_ASYMMETRIC_GRID即使用非对称圆心排列网格模式;CALIB_CB_CLUSTERING即使用特殊网格检测算法,其对透视变换的鲁棒性更强,但对背景杂质敏感度更高。返回如下。●retval:是否检测到圆心。●centers:所有圆心组成的矩阵。1.1基于深度学习的目标检测应用④调整机械臂的位姿。推荐按照X、Y、Z轴的顺序每次调整一个轴位置,然后再依次调整三个轴的旋转角度,确保能够采集到标定板在不同位姿下的标定板数据。采集的图片需要保证标定板的所有原都清晰可见,且每个圆的原因识别准确(见图59)。图59命令操作51.1基于深度学习的目标检测应用可按S键保存,在data\calibration目录下将生成文件(见图60)。图60命令操作61.1基于深度学习的目标检测应用其中:●标定图片(xxx_image.png):计算相机的外参矩阵。●标定参数(xxx_points.npy):存储标定板上所有圆心的坐标(n×2矩阵)。●末端姿态数据(xxx_pose.txt):记录采集图像时机械臂的位姿信息。⑤旋转矩阵计算。在Vscode终端界面下输入如下命令(见图61)。pythoncalibrate.py--modecompute图61命令操作7命令含义:使用OpenCV的calibrateCamera与calibrateHandEye方法,完成相机内参、畸变系数及手眼变换矩阵的计算,是坐标转换计算的关键。作用:计算相机外参与相机到机械臂基座之间的转换矩阵,并保存为calibration.npy文件。1.1基于深度学习的目标检测应用(3)另外,计算转换矩阵主要使用cv2.calibrateCamera和cv2.calibrateHandEye方法。①cv2.calibrateCamera用于计算相机的内参和畸变系数,使用示例见图62。图62命令操作8参数:●object_points:圆心(或角点)在标定板世界坐标系下的坐标(x,y,z),Z轴上的值全为0,单位为毫秒。●img_points:圆心(或角点)在实际采集的图像坐标系下的坐标(x,y)。●w,h:图像的宽高。输出:●ret:是否成功。cam_mat:估计的相机内参矩阵。distort:估计的畸变系数向量。●rvecs:估计的每张图片的旋转矩阵列表。tvecs:估计的每张图片的平移矩阵列表。1.1基于深度学习的目标检测应用注意:object_points通常是由用户根据标定板的类型手动构造的,如本实验中使用非对称圆形标定板,其object_points构造(见图63),设置标定板第一行第一列的圆心x,y坐标为(0,0),根据圆心间隔计算其余圆心的(x,y)坐标。图63命令操作91.1基于深度学习的目标检测应用②cv2.calibrateHandEye计算相机到基座坐标系的旋转矩阵和平移矩阵。其使用示例,见图64。图64命令操作10参数:R_base2end:基座到末端的旋转矩阵,即末端到基座的旋转矩阵的逆变换。t_base2end:基座到末端的平移矩阵,即末端到基座的平移矩阵的逆变换。rvecs:cv2.calibrateCamera输出的旋转矩阵列表。tvecs:cv2.calibrateCamera输出的平移矩阵列表。R_base2end和t_base2end可通过将在数据采集阶段获取的每张图片对应的机械臂末端笛卡儿空间坐标(欧拉角)转换为旋转矩阵,然后求解旋转矩阵的逆矩阵得到。1.1基于深度学习的目标检测应用2)计算抓取位姿在grasp.py程序中自动完成目标像素坐标到相机坐标、再到机械臂坐标的转换。程序根据深度图像获取水果中心点的深度值,结合相机内参将其还原为相机坐标,再通过手眼标定得到的变换矩阵,将其转为机械臂工作坐标系下的三维位置坐标。抓取位姿由位置(position)和姿态(pose)组成。位置描述了物体在空间中的具体位置,姿态描述了物体的旋转角度。通过手眼标定,得到了相机坐标系到机械臂基座坐标系的变换矩阵(_camera^base)M,给定任意一个相机坐标系下的坐标点a=〖[x_a,y_a,z_a,1]〗^T,可求得该坐标点在基座坐标系下的坐标为:b=〖[x_b,y_b,z_b,1]〗^T=(_camera^base)M∙a1.1基于深度学习的目标检测应用我们可以直接获取图像的像素坐标点,但无法直接获取相机坐标系的坐标,需要根据像素坐标系与相机坐标系的变换关系求解得到。相机坐标系到像素坐标系的转换关系为c=〖[u,v,1]〗^T=K∙a=[■(f_x&0&c_x@0&f_y&c_y@0&0&1)][■(x_a@y_a@z_a)]其中,f_x和f_y分别为在x和y方向上的焦距,c_x和〖c〗_y分别为在x和y的主点坐标,z_a为已知深度值。则有:x_a=z_a*(u-c_x)/fx, y_a=z_a*(v-c_y)/fy本实验使用三指柔性夹爪,且使用垂直抓取方式,因此抓取时无须考虑x/y/z轴上的旋转角放置是为了简化直接将抓取的水果通过放置到固定坐标点,无须进行坐标转换计算。1.1基于深度学习的目标检测应用3)抓取流程示例(1)在Vscode终端界面下输入如下命令(见图65)。pythongrasp.py图65命令操作111.1基于深度学习的目标检测应用命令含义:启动抓取流程程序,自动完成目标检测、目标定位、机械臂运动控制与水果搬运。作用:通过在图像上框选ROI,程序开始检测ROI内的水果并计算其抓取位姿,随后控制机械臂依次抓取水果并放置到预设位置。程序运行后,将弹出画面(见图66),在画面中通过鼠标选择一个矩形框作为水果辨别ROI区域。图66命令操作121.1基于深度学习的目标检测应用在桌面上摆放水果,程序将实时检测画面中的水果并显示检测框(见图67)。图67命令操作131.1基于深度学习的目标检测应用按下键盘右键开始抓取流程,程序将检测到的水果逐一抓取至固定的料框中(见图68)。图68命令操作141.1基于深度学习的目标检测应用【实验结果与总结分析】本实验结合目标检测与手眼标定,实现了机器人对水果的自动抓取(见图68),体现了人工智能与机器人协同作业的实践应用。实验结果表明以下结论。(1)基于深度学习目标检测模型与3D相机的水果定位。系统能够准确识别并定位图像中的水果中心坐标,并将其转换为机械臂基坐标系下的位置。机械臂根据计算结果完成抓取任务,抓取水果并放置到指定位置,整个抓取流程稳定高效。(2)通过目标检测模型获取图像中的水果目标,结合深度信息与手眼标定,实现了空间坐标的准确转换。实验过程中,标定精度与抓取策略直接影响最终效果,因此系统调试尤为关键。整体而言,本实验验证了工业场景中的典型应用。ThankYou华航科技·致真唯实HUAHANGKEJI·ZHIZHENWEISHI工业机器视觉人工智能应用实践

--4.2基于视觉的模仿学习应用1.1基于视觉的模仿学习应用1.1.1模仿学习模仿学习(ImitationLearning,IL)是一种机器学习方法,通过观察和模仿专家的行为来学习完成任务的策略。在模仿学习中,机器并不直接通过奖励函数来优化行为,而是通过模仿已知的示范(例如人类或其他智能体的行为)来学习如何做出正确的决策。模仿学习可以分为两种主要方法。●行为克隆(BehavioralCloning,BC):将模仿学习视为监督学习问题,机器根据专家的示范输入(如图像或传感器数据)来预测输出动作。●逆强化学习(InverseReinforcementLearning,IRL):通过观察专家的行为推断隐藏的奖励函数,机器基于这个奖励函数来学习优化决策。1.专家示范数据专家示范数据是模仿学习中使用的一种关键数据形式,指通过记录人类或其他高性能智能体在任务中表现出的行为轨迹生成的数据集。这些数据包含专家在不同状态下的决策行为,用于指导学习智能体模仿专家的决策模式。专家示范数据是模仿学习的基础,通过记录专家行为,帮助智能体快速学习复杂的任务。采集高质量的专家示范数据需要充分考虑任务需求和数据处理流程,确保数据的多样性和准确性。1.1基于视觉的模仿学习应用1)专家示范数据的基本组成专家示范数据通常以状态-动作对(state-actionpairs)的形式表示,每一组状态-动作对数据记录了专家在某一特定状态下所采取的动作,见表1。1.1基于视觉的模仿学习应用表1专家示范数据基本组成字段含义示例状态(State,st)描述当前环境的信息,如图像、传感器数据、位置坐标等摄像头捕获的环境图像或机器人当前位置动作(​Action,at)专家在当前状态下执行的决策行为机械臂的运动方向、无人车的转向角度时间戳(t)数据采集的时间点,用于维持序列的一致性2024-12-1010:00奖励信息(Optional)某些情况下记录每个动作的奖励值,用于评估专家的表现完成任务得分、抓取物体的成功与否2)专家数据的主要获取方式(见表2)1.1基于视觉的模仿学习应用表2专家数据的主要获取方式获取方式特点适用场景人类专家操作由人类直接操作设备或系统,数据真实可靠,能体现实际任务中的操作策略自动驾驶、机器人操作等复杂真实任务高性能模型生成利用已训练好的高性能模型在仿真环境中完成任务,高效采集数据仿真任务、强化学习后的行为记录模拟环境采集通过仿真工具设计任务逻辑,程序化生成理想操作轨迹,采集效率高自动驾驶仿真、机器人路径规划2.行为克隆行为克隆是一种模仿学习方法,其核心思想是将决策问题转化为监督学习问题。通过学习人类或其他专家的行为模式来训练一个模型,然后基于该模型来预测给定状态下的最优动作,确保其能在类似的环境中模仿人类或其他专家的行为。行为克隆常用于自动驾驶、机器人控制等领域。1)行为克隆的原理(1)输入与输出的定义:输入(state)是系统当前的状态,如传感器数据、图像等;输出(action)是对应状态下的动作,如机器人手臂的运动指令。(2)目标函数:学习一个策略函数,使其能够最小化专家示范数据的误差。例如,可使用均方误差(MeanSquareError,MSE)或交叉熵损失来衡量模型输出与专家动作的差异。(3)假设:假设专家的动作是最优的,即模型通过学习专家示范可以获得理想的行为;假设训练数据已覆盖所有可能的状态。1.1基于视觉的模仿学习应用2)行为克隆模型训练的流程步骤(见图1)1.1基于视觉的模仿学习应用收集专家示范数据数据预处理模型选择与构建模型训练模型评估与验证模型部署与测试图1行为克隆模型训练的流程步骤3)行为克隆举例在简单自动驾驶任务中(见图2),可根据人类提供的状态-动作对来习得驾驶策略。这个任务也叫作行为克隆。假设我们已获取丰富的专家的示例数据,这些数据以如下形式出现:<s1,a1>,<s2,a2>,…,<sn,an>,si代表当前的环境,ai代表当前环境下专家采取的动作。我们将这一系列专家动作输入到一个神经网络中进行学习,s是输入,a是输出,最终训练出一个结果(克隆专家的行为,此时我们希望它的输出是ai)。1.1基于视觉的模仿学习应用图2简单自动驾驶任务4)行为克隆的优缺点优点:行为克隆简单直接,可以通过监督学习方法快速训练模型,尤其适用于专家示范数据充足的场景。缺点:行为克隆容易受到示范数据质量的影响,且无法应对环境中未见过的情况(如自动驾驶例子中,如果出现未遇见过的道路情况,车辆控制失去先验学习参考后,无法正确控制车辆),可能导致过拟合或泛化能力差。3.逆强化学习逆强化学习是一种机器学习方法,其目标是从专家行为中推断出隐含的奖励函数,而不是直接学习专家行为的策略。逆强化学习方法适用于明确定义奖励函数困难的场景,通过分析专家行为的决策逻辑,间接推导任务目标和内在动机。1.1基于视觉的模仿学习应用1)逆强化学习的原理通过观察专家在环境中的行为(状态和动作的序列),推断出专家的行为是基于某种奖励函数所做出的最优决策。通过分析专家的示范数据,逆强化学习试图推断出奖励函数,从而揭示哪些状态或动作更为“优越”。获得奖励函数后,可以使用强化学习的标准方法训练智能体,使其学习到最大化奖励的最优策略,见图3。1.1基于视觉的模仿学习应用图3逆强化学习的原理2)奖励函数奖励函数(rewardfunction)是强化学习中用来量化智能体在某一状态或执行某一动作后获得的即时反馈的函数。它为智能体提供了明确的学习信号,帮助其优化决策策略,以实现既定目标。3)逆强化学习模型训练的流程步骤与行为克隆类似,逆强化学习模型训练步骤也需要收集专家示范数据并进行数据预处理。然而,与行为克隆不同的是,逆强化学习还包含假设奖励函数形式、推断奖励函数、策略优化及模型评估与验证等步骤。

(1)假设奖励函数形式。(2)推断奖励函数。(3)策略优化。(4)模型评估与验证。1.1基于视觉的模仿学习应用1.1.2动作分块算法动作分块(ActionChunkingwithTransformers,ACT)算法是一种利用Transformer模型处理行为分段(actionchunking)问题的算法。行为分段是指将一系列连续的动作(或行为)划分为多个有意义的块,每个块代表一个高层次的任务或目标。ACT算法广泛应用于机器人控制、任务规划、自然语言处理等领域。1.ACT算法的原理ACT算法使用Transformer架构来处理一系列动作序列,通过自注意力机制捕捉动作之间的依赖关系,从而将动作序列分割成多个任务块。每个任务块代表一个相对独立的任务部分。ACT算法的核心是通过Transformer对连续的动作序列进行学习,进而将这些动作序列分解为多个子任务,其在机器人任务分解中,展现出了很好的性能。行为块:可以理解为一个任务的“子任务”,每个子任务是执行一系列具体动作块的集合。一个任务可由多个子任务组成,各个子任务之间可具有一定的依赖关系。动作块:

动作块是行为块的基本组成单元,表示具体的操作。例如,一个搬运任务的行为块“拾起物体”可能包含多个动作块,例如手臂移动到物体位置、抓取器张开、抓取物体等。1.1基于视觉的模仿学习应用Transformer模型:在ACT算法中,Transformer用于学习任务块之间的关系。Transformer的自注意力机制能够捕捉长距离的依赖关系,从而使得机器人能根据当前的状态和环境,选择合适的动作块并执行。本节基于低成本开源硬件系统(ALow-costOpen-sourceHardwareSystemforBimanualTeleoperation,ALOHA),详细说明ACT算法的工作原理。图4左图展示了ALOHA双臂工作空间示意,中图为“手柄和剪刀”机制和定制夹具的视图,右图为ViperX6自由度的机器人技术参数。1.1基于视觉的模仿学习应用图4ALOHA系统ALOHA采用正前方、顶部、左、右共计四个网络摄像头获取数据。其中,左右两个摄像头(其视角如红线所示)安装在ViperX机器人的手腕上,可提供夹具的近距离视角,方便用户近距离观察夹爪;正前方和顶部两个网络摄像头(其视角如蓝线和绿线所示)安装在桌面的前方和桌子上方的顶部位置,按照一定频率完成遥控和数据记录等操作。基于给定的ALOHA系统,ACT算法可实现以下功能:对于一个较小的机械臂到较大机械臂ViperX的关节空间映射,用户通过反向驱动较小的机械臂(“领导者”)进行远程操作,其关节与较大的ViperX(“跟随者”)同步,即直接形成两个机械臂的关节空间映射,从而进行端到端的模仿学习,来实现ViperX先学习小机械臂的移动、抓取、放置等动作,进而达到ViperX可自我完成各种动作任务。1.1基于视觉的模仿学习应用2.ACT算法的结构整体概览ACT算法的整体结构见图5,其将ACT模型训练为条件变分自动编码器(ConditionalVariationalAutoencoder,CVAE)(见图5)。CVAE包含编码器和解码器共两个部件。ACT模型使用编码器从多个视点、关节位置和z合成图像,并使用解码器预测一系列动作。其中:1.1基于视觉的模仿学习应用图5ACT算法的整体结构1)CAVE编码器(见图5):CVAE的编码器将动作序列和关节观察压缩成z,即样式变量。其输入为来自演示数据集的当前关节位置joints、“[CLS]”token标记和长度为k的目标动作序列。这长度为k+2的输入信号通过编码器之后,与“[CLS]”对应的特征将用于预测样式变量z的均值和方差,并作为CVAE编码器的输出信息输入到CVAE解码器。2)CAVE解码器(见图5中右侧):ACT算法的解码器接受编码器输出的样式变量z和当前

温馨提示

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

最新文档

评论

0/150

提交评论