《人工智能技术应用(第三版)》课件 4.2 垃圾分类_第1页
《人工智能技术应用(第三版)》课件 4.2 垃圾分类_第2页
《人工智能技术应用(第三版)》课件 4.2 垃圾分类_第3页
《人工智能技术应用(第三版)》课件 4.2 垃圾分类_第4页
《人工智能技术应用(第三版)》课件 4.2 垃圾分类_第5页
已阅读5页,还剩59页未读, 继续免费阅读

下载本文档

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

文档简介

第4章

机器怎么学习——02垃圾分类1场景导入2知识小百科3AI实验室4分享评价1场景导入中国每年使用塑料快餐盒达40亿个,方便面碗5~7亿个,一次性筷子数十亿双,这些占生活垃圾的8~15%。1吨废塑料可回炼600公斤的柴油。回收1500吨废纸,可免于砍伐用于生产1200吨纸的林木。一吨易拉罐熔化后能结成一吨很好的铝块,可少采20吨铝矿。生活垃圾中有30%~40%可以回收利用,应珍惜这个小本大利的资源。不同种类的垃圾,都有不同的处理方法,让我们实现一种垃圾分类系统。1场景导入上海市生活垃圾分类标识2知识小百科活动目标:学习深度学习的概念了解卷积神经网络的概念掌握预训练模型的使用方法搭建智能垃圾分类系统深度学习(DeepLearning)是机器学习领域中一个新兴的研究方向。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。深度学习实际上指的的深度神经网络学习,它能够捕捉到数据中的深层联系,从而能够得到更精准的模型。例如“猫”,我们并不告诉计算机猫有圆脑袋、尖耳朵、大眼睛、长胡须,而是给神经网络很多很多猫的图片,并告诉它这些都是猫,让计算机自己寻找特征。这就类似我们上学的时候,有些学生不喜欢听讲,而是自己搞“题海战术”,根据答案是否正确来判断自己的思路是否正确。(一)深度学习(一)深度学习猫图像数据集1981年,DavidHubel和TorstenWiesel获得了诺贝尔医学奖,他们的贡献是发现了人脑视觉机理:视觉系统的信息处理在可视皮层是分级的,大脑的工作过程是一个不断迭代、不断抽象的过程。他们发现位于后脑皮层的不同视觉神经元,与瞳孔所受刺激之间,存在某种对应关系,这是一种被称为“方向选择性细胞(OrientationSelectiveCell)”的神经元。(一)深度学习当瞳孔发现了眼前的物体的边缘,而且这个边缘指向某个方向时,这种神经元就会活跃。这个发现激发了人们对于神经系统的进一步思考,感受神经到中枢神经,再到大脑的工作过程,或许是不断抽象和不断迭代的过程。从原始信号开始,经过低级抽象,逐渐向高级抽象迭代,人类的逻辑思维,使用的就是高度抽象的概念。这也给计算机神经网络提供了一个新的思路:抽象和迭代。(一)深度学习(一)深度学习人类视觉系统边缘特征和人脸部分特征若把人脑的这种分析方式比喻成图像处理,如图所示:第一层为像素级别,通过摄入瞳孔中形成像素;第二层级为某些细胞发现边缘和方向;第三层级为判定形状,动物还是汽车;第四层级进一步抽象,判断这是一辆轿车。(一)深度学习轿车图片的抽象特征对象的抽象特征是如何在计算机里实现的呢?这就要用到“卷积”这个计算方法,卷积是由过滤器(卷积核,ConvolvedKernel)对图像进行过滤。当一个深度神经网络的主体部分是由卷积层构成时,我们称之为卷积神经网络(ConvolutionalNeuralNetworks,CNN)。同机器学习方法一样,深度机器学习方法也有监督学习与无监督学习之分,卷积神经网络就是一种深度的监督学习下的机器学习模型。(二)卷积神经网络(二)卷积神经网络卷积神经网络示意图卷积层是深度神经网络在处理图像时十分常用的一种层。输入图片数据后,进入卷积层。卷积层的作用是抽象图片的特征。卷积层是由若干个过滤器组成的。每个过滤器就是一个小矩阵。使用的时候,在原始矩阵上,移动这个小矩阵,将小矩阵与矩阵重叠的位置上的数字做乘法后加在一起。这样原先的一个矩阵,就变成了“卷积”之后的一个数字,过程如图所示。通过设计不同的过滤器,我们可以找到图像的不同特征。如果图像中有和我们设计的过滤器一样的特征,那卷积结果就会很大,反之,卷积的结果就很小或者为0。(二)卷积神经网络(二)卷积神经网络图像卷积计算过程再下一层,是池化层,池化可以理解成采样。采样的目的是,将特征的位置从具体的某个点,拓展成某个区域。下图最大池化层使用的是“最大值采样”。以原先的2×2范围作为一个分块,从中找到最大值,记录在新的结果矩阵里。(二)卷积神经网络最大池化层示意图随着层数不断向右推进,一般特征矩阵会变得越来越小,但是层数会变得越来越多。只有这样,我们才能把图片中的规律信息抽取出来,并且尽量掌握足够多的模式。下一层叫做全连接层,它其实就是把上一层输出的若干个矩阵全部压缩到一维,变成一个长长的输出结果。最后是输出层,对应的结果就是我们需要让计算机掌握的分类。(二)卷积神经网络经过多年的发展,深度学习理论中除了我们讲的卷积神经网络,还包含了许多不同的深度网络模型,例如经典的深层神经网络(DeepNeuralNetwork,DNN),深层置信网络(DeepBeliefNetworks,DBN),深层玻尔兹曼机(DeepBoltzmannMachines,DBM),循环神经网络(RecurrentNeuralNetwork)等,它们都属于人工神经网络。不同结构的网络适用于处理不同的数据类型,例如卷积神经网络适用于图像处理,循环神经网络适用于语音识别等。(二)卷积神经网络3AI实验室(一)任务发布目标设计智能垃圾分类系统要求(1)Python语言编写程序实现四种垃圾(可回收垃圾、干垃圾、有害垃圾、湿垃圾)的分类。(2)建立卷积神经网络,训练垃圾分类模型。配置好python3.x语言环境;VScode集成开发环境(Windowsx64UserInstaller版本);第三方Python库有:OpenCV库、Numpy库、PyTorch库、Torchvision库和Matplotlib库。(二)任务环境智能垃圾分类系统(1)准备垃圾图片数据集新建一个名称为data文件夹,再新建一个名称为train子文件夹作为训练集,里面包含四种垃圾分类的数据集,分别为0.RecyclableWaste、1.ResidualWaste、2.HazardousWaste、3.HouseholdFoodWaste。测试集不需要用户创建,在运行训练脚本过程中自动从训练集抽取20%图片作为测试集。另外,为了能获得更好的训练模型,每种垃圾图片数据至少要包含100张。(二)任务环境硬件环境如下表所示:(二)任务环境硬件图示名称数量机械臂1台USB串口通信线1条电源适配器1套摄像头套件1套垃圾桶4个垃圾卡片若干1.绘制程序流程图根据任务要求绘制智能垃圾分类系统程序流程图,如下图所示。(三)任务实施(三)任务实施参考流程图2.实现智能垃圾分类系统程序(1)训练模型YOLOv5物体检测模型训练是基于深度学习的端到端过程,旨在高效识别图像中的多种物体。通过执行命令,用户能定制化训练流程:选用mineral.yaml定义的数据集专注生活垃圾识别,配置轻量级的YOLOv5s模型以平衡速度与精度,进行200轮迭代学习,以及设置小批量尺寸适应低内存需求。(三)任务实施通过执行命令,用户能定制化训练流程:选用mineral.yaml定义的数据集专注生活垃圾识别,配置轻量级的yolov5s模型以平衡速度与精度,进行200轮迭代学习,以及设置小批量尺寸适应低内存需求。(三)任务实施pythontrain.py--datamineral.yaml--epochs10--cfgyolov5s.yaml--batch-size1●

打标签将dataset文件夹下的images文件夹作为训练集,在images文件夹下存储4种垃圾图片后开始打标签。打开AnacondaPrompt,输人命令:(三)任务实施condaactivateyolov5#进入yolov5-master所在目录,输入文件地址进入文件,再输入:labelimg(三)任务实施打开标签软件打开软件后,首先点击左边的OPENDIR选择需要打标签的图像数据集位置,对应的地址,image夹下;注意:需要打标签的图像越多精度越准;(三)任务实施然后再设置标签的保存路径:点击左上角File->ChangeSaveDir,选择到你之前创建的

labels

子文件夹在左边CreateRectBox这一栏的上方,将其切换为YOLO;同时将左上角的View-AutoSaveMode选项勾选,如下图所示;(三)任务实施选择YOLO执行完以上过程后,就可以开始打标签了;按住W键就可以框选物体区域,输入标签名,这样就完成了一张图像的打标签过程,按D键可以切换到下一张,给所有文件打完标签后就可以关闭软件了;第一种样品标签名称为1.ResidualWaste,第二种样品标签名称为0.RecyclableWaste,第三种样品标签名称为3.HouseholdFoodWaste,第四种样品标签名称为2.HazardousWaste,如下图所示(三)任务实施(三)任务实施数据集名称完成后关闭打标签软件,点击Yes进行保存;注意:不要关闭AnacondaPrompt打完标签后,就可以看到labels文件夹内有了生成的对应图像的.txt文本数据,这样就完成了数据集的制作。(三)任务实施完成数据集制作,在VScode中打开yolov5-master文件,在yolov5-master文件中找到mineral.yaml格式的文件,如下图所示,将数据集地址进行修改,数据集的名称,数据集的种类进行修改,如下图所示:(三)任务实施mineral.yaml文件修改完成,返回AnacondaPrompt,在AnacondaPrompt输入:(三)任务实施pythontrain.py--datamineral.yaml--epochs10--cfgyolov5s.yaml--batch-size1其中:--datamineral.yaml:存放训练模型训练集验证集测试集等的相关数据;--epochs10:表示训练伦次为10,可以进行修改多次;--cfgyolov5s.yaml:声明预训练模型(三)任务实施数据集生成名称--batch-size1:训练过程中每一次处理的图像个数。这里设为1,设置越高对电脑性能要求越大;(2)预测模型通过训练得到模型文件mineral.yaml,接下来进行模型的预测。在预测之前,先通过相机或摄像头捕获一张图片,然后对这张图片进行预处理(包括图像灰度化、图像滤波去噪声、图像腐蚀、轮廓提取等操作),最终进行图片分割并输出识别结果。将数据集路径放置在yolov5-master-detect.py代码中,同时将需要识别的图像路径进行修改,如下图所示:(三)任务实施(三)任务实施(三)任务实施修改代码中的相关路径2)代码分析(三)任务实施#开启摄像头,0:笔记本摄像头,1:USB摄像头defcamera():cap=cv2.VideoCapture(1)#捕获图像,read()函数返回两个值:布尔值和视频帧ret,img=cap.read()#保存图像cv2.imwrite("D:/111/image.jpg",img)#通过cv2读取图像image_source=cv2.imread(''D:/111/image.jpg'')图像捕获结果如图所示:(三)任务实施图像捕获图像灰度化结果如图所示:(三)任务实施图像灰度化#图像灰度化gray=cv2.cvtColor(image_source,cv2.COLOR_BGR2GRAY)(三)任务实施#图像滤波去噪声#shape返回的是图像的高,宽,色彩通道数h_s,w_s,_=img.shapeblured=cv2.blur(img,(3,3))mask=np.zeros((h_s+2,w_s+2),np.uint8)cv2.floodFill(blured,mask,(w_s-1,h_s-1),(255,255,255),(1,1,1),(5,5,5),8)#图像腐蚀ret,binary=cv2.threshold(closed,160,255,cv2.THRESH_BINARY)erode=cv2.erode(binary,kernel)图像腐蚀,结果如图所示:(三)任务实施图像腐蚀处理图像轮廓提取,结果如图所示:(三)任务实施图像轮廓提取结果#轮廓提取contours,hierarchy=cv2.findContours(erode,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)运行detect.py程序(三)任务实施if__name__=="__main__":

camera()

subprocess.run(["python","./detect.py"])运行结果如下图所示,在runs/exp/labels中查看(三)任务实施识别结果(3)标定转换1)标定转换前的准备一台机械臂和一个含支架的摄像头并固定好,保证机械臂与摄像头之间的相对位置保持不变。打印一张标定纸,把标定纸放到摄像头视野范围内,捕获图像并保存,命名为coordinate.png,然后寻找标定纸图像上的三点坐标以及实际对应的机械臂三点坐标。(三)任务实施(三)任务实施标定纸图像点位机械臂实际点位说明:标定纸图像上的三个点可以通过打开Windows上自带的画图工具来寻找A、B、C的点位;也可以通过运行编写Python代码来寻找点位。而机械臂实际对应的三点坐标可以通过机械臂上位机来获取。(三)任务实施2)代码分析(三)任务实施#开启摄像头,0:笔记本摄像头,1:USB摄像头cap=cv2.VideoCapture(1)#捕获图像,read()函数返回两个值:布尔值和视频帧ret,img=cap.read()#保存图像img=cv2.imread('./coordinate.png')(三)任务实施#通过鼠标事件获取图像三点坐标A、B、Cdefon_EVENT_LBUTTONDOWN(event,x,y,flags,param):ifevent==cv2.EVENT_LBUTTONDOWN:xy="%d,%d"%(x,y)a.append(x)b.append(y)cv2.circle(img,(x,y),1,(255,0,0),thickness=-1)cv2.putText(img,xy,(x,y),cv2.FONT_HERSHEY_PLAIN,1.2,(255,0,0),thickness=1)cv2.imshow("image",img)标定纸图像三点坐标如图所示:(三)任务实施标定纸图像点位3)标定程序代码分析(三)任务实施#图像三点坐标a=np.array([[369,278,1],[208,276,1],[372,159,1]])#机械臂三点坐标b=np.array([[275.95,-20.41,1],[276.22,27.41,1],[312.79,-19.31,1]])(三)任务实施#利用矩阵的逆求解XX=np.linalg.solve(a,b)print(X)特别说明:solve函数可以求解多元一次方程组,而linalg库是NumPy库的子库,可以求解矩阵中更高级的一些线性代数运算。solve函数有两个参数a和b,a和b都是一个3*3的二维数组,通过转换关系aX=b,得出方程组的解X。(三)任务实施#输入目标图像中心点坐标x=float(input('请输入图像中心点坐标x:'))y=float(input('请输入图像中心点坐标y:'))#开始坐标转换,转换为机械臂实际的坐标a1=np.array([x,y,1])#dot()返回的是两个数组的点积b1=np.dot(a1,X)#打印转换后的机械臂坐标(x,y)print(b1[0],b1[1])运行结果:(三)任务实施请输入图像中心点坐标x:204请输入图像中心点坐标y:333258.568392903730827.643842942864595(4)实现智能垃圾分类1)具体实现流程摄像头捕获图像→图像预处理(灰度化、滤波去噪声、腐蚀等)→轮廓提取→图像分割→预测模型并得出识别结果→根据识别结果给机械臂下达指令→机械臂执行动作,将垃圾图片放置对应的垃圾桶。(三)任务实施(2)代码分析(三)任务实施#引入机械臂控制类

温馨提示

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

评论

0/150

提交评论