版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章
计算机视觉项目实战计算机视觉应用开发案例教程目录CONTENT8.1实战项目1:基于分水岭算法的重叠药片计数系统018.2实战项目2:基于YOLO模型的实时物件检测系统02本章小结03课后习题04引言图像预处理阈值分割轮廓检测基于分水岭算法的重叠药片计数系统
整合技术,使读者建立积累对计算机视觉的完整项目的整体框架开发经验。本章将通过两个综合项目:基于YOLO模型的实时物件检测系统引言工作情境当下AI赋能实体经济的趋势里,“技术落地”是核心
工作情境制药厂的
“重叠药片计数系统”安防场景的“实时物件检测系统”“工业场景里怎么标定参数”“遇到异常情况怎么处理”不管你是想积累项目经验,还是为实际工作做准备,这些实战都能帮你明白:“技术落地”不复杂,关键是把学过的本领用对地方,解决真正的需求。工作情境8.1实战项目1:基于分水岭算法的重叠药片计数系统
项目目标8.1.1项目目标3.绘制分割边界,统计药片数量。2.实现重叠药片的有效分割,区分每个药片;1.熟练掌握分水岭算法的完整流程:预处理→前景背景确定→标记→分割;项目准备8.1.2准备一张
“白色背景上的重叠药片”图像,如素材库中为读者准备的“pills_overlapped.jpg”项目准备素材方面核心技术形态学开运算、距离变换、分水岭算法、轮廓提取。项目实施8.1.3项目步骤步骤1:明确实验流程文本预处理的核心是“突出文字,消除背景噪声”,流程如下:读取图像灰度化去噪阈值分割开运算确定前景背景标记分水岭分割绘制边界计数导入两个必要的库OpenCV核心库处理数值数组步骤2:编写实训代码第一步:读取图像+灰度化读彩色图怕图片路径错了读不出来,能及时提示“读取失败”,工业场景里这种容错很重要。为什么转灰度?因为彩色图有3个通道(BGR),灰度图只有1个通道,能减少计算量,还能避免颜色干扰。步骤2:编写实训代码第二步:预处理优化(去噪+对比度增强)控制对比度强度,1.2属于“温和增强”,避免把噪声也放大把图像分成12x12的小区域处理把增强效果应用到灰度图上滤波核大小颜色相似度阈值空间相似度阈值步骤2:编写实训代码第三步:阈值分割用高斯加权的局部阈值,比全局阈值更适应光照变化“反二值化”,让药片变成白色、背景变成黑色步骤2:编写实训代码第四步:形态学操作小核处理细节腐蚀掉小噪声点把药片轮廓恢复回来步骤2:编写实训代码第四步:形态学操作因为这个区域可能有小碎片容易被误分割,这样处理能强化边界,避免把一个药片分成两个。步骤2:编写实训代码第五步:确定前景、背景与未知区域用3次膨胀让背景“包围所有药片”,确保没有遗漏把“药片区域”转成“离边缘越远值越大的图”过滤面积小于120的小噪声背景减去前景,这部分是后续分水岭要分割的“重叠区”步骤2:编写实训代码第六步:创建标记+应用分水岭把每个前景中心标成不同的数字把背景从“0”改成“1”告诉算法“这里是要分割的不确定区”算法会根据标记分割未知区域步骤2:编写实训代码第七步:计数+结果保存步骤2:编写实训代码第七步:计数+结果保存步骤2:编写实训代码步骤3:运行与验证项目步骤验证结果调整参数保存结果若分割不完整,调整距离变换的阈值系数(如0.5→0.7),或修改膨胀/开运算的迭代次数;分水岭结果图中,重叠药片被红色边界分开,每个药片为独立区域,计数与实际药片数一致;确认生成“pills_watershed_result.jpg”,红色边界清晰,计数文字明确。项目结果8.1.4分水岭关键前景需用“距离变换+阈值”获取“确定的物体中心”,避免前景包含重叠区域;背景需膨胀到包围所有物体,确保无遗漏;运行结果如图8-1所示,分水岭结果图中重叠药片被红色边界分开,顶部蓝色文字显示药片计数,标注“分割完整,无重叠误判”。实训结果与分析图8-1重叠药片分水岭分割结果图分析与调参8.1.5运行结果与解析图8-2参数调整过程代码中的可调参代码解析对比度增强:clahe=cv2.createCLAHE(clipLimit=1.2,tileGridSize=(12,12))clipLimit:对比度增强强度(值越小越温和,避免放大噪声)tileGridSize:局部区域大小(值越大,处理越平滑)代码中的可调参代码解析去噪参数:img_median=cv2.medianBlur(img_clahe,7)核大小(7):值越大去噪越强,但可能模糊边缘代码中的可调参代码解析双边滤波:cv2.bilateralFilter(img_median,9,70,70)第二个参数(9):滤波核大小后两个参数(70,70):颜色/空间相似度阈值(值越大,模糊范围越广)代码中的可调参代码解析自适应阈值:cv2.adaptiveThreshold(...,25,10)块大小(25):值越大,对局部光照变化越不敏感常数(10):值越大,越容易将暗区域判为背景代码中的可调参代码解析形态学核与迭代:kernel_medium=np.ones((9,9),np.uint8)核大小(9,9):值越大,合并碎片能力越强cv2.morphologyEx(...,iterations=2)迭代次数(2):值越大,形态学效果越强代码中的可调参代码解析左上角区域范围:top_left_roi=img_close[0:int(h/3),0:int(w/3)]区域比例(h/3,w/3):调整为实际药片所在区域代码中的可调参代码解析前景提取阈值:cv2.threshold(img_dist,0.35*img_dist.max(),...)比例(0.35):值越大,筛选出的前景中心越少(过滤小区域)代码中的可调参代码解析前景面积过滤:min_area=120最小面积(120):值越大,过滤的小噪声越多代码中的可调参代码解析计数面积范围:if250<marker_area<1500下限(250):过滤过小碎片上限(1500):过滤过大异常区域调参过程那么麻烦在现实的工业场景中我们是怎么做到把药片“数”的那么准确的呢?药厂的流水线上快速通过的传送带上的药片是怎么被准确无误的数出来的呢?工业场景落地8.1.6硬件标准化参数定制化标定分水岭算法(或其他机器视觉算法)在工业中能落地,本质是靠“硬件先标准化所有干扰因素”,让算法面对的图像“长得几乎一样”,从而只需要一套固定参数就能稳定工作。硬件端:彻底固定拍摄条件,消除变量。核心逻辑算法端:针对固定场景做“一次性参数标定”。工业场景落地的核心逻辑:先“控制变量”,再“定制参数”异常处理:加“兜底机制”,不依赖单一算法。工业场景落地工业计数不会像实验室那样“随手拍图”,而是用专用的视觉检测工位,把所有影响图像的因素锁死:彻底固定拍摄条件,消除变量。硬件端用定制光源,比如环形光源、背光光源,确保药片表面亮度均匀,没有阴影;光照相机位置如距离、角度等完全固定,比如正上方垂直拍摄,镜头焦距锁定,确保每颗药片在图像中的大小、比例一致;拍摄工业场景落地工业计数不会像实验室那样“随手拍图”,而是用专用的视觉检测工位,把所有影响图像的因素锁死:彻底固定拍摄条件,消除变量。硬件端用纯色高对比度背景,比如黑色背景拍白色药片,避免背景干扰,让药片边缘更清晰;背景药片通过传送带或振动盘“整理姿态”,尽量避免严重重叠,如果必须处理重叠,会搭配机械结构辅助分离,比如轻震传送带。姿态工业场景落地当硬件条件固定后,算法只需要做一次“参数标定”,后续所有同场景的图像都用这套参数:针对固定场景做“一次性参数标定”。算法端先拍几十/几百张该场景下的标准图像,包含正常药片、少量重叠、可能的轻微杂质,手动标注正确计数;步骤工业场景落地当硬件条件固定后,算法只需要做一次“参数标定”,后续所有同场景的图像都用这套参数:针对固定场景做“一次性参数标定”。算法端用标注好的样本,自动或手动调整算法参数,比如阈值、滤波核大小、面积范围,找到能覆盖99.9%以上正常情况的“最优参数组合”;优化参数确定后写入程序,后续所有进入该工位的图像,都直接用这套参数处理,不需要任何人工干预。固定工业场景落地工业场景不会只靠分水岭算法,会搭配其他逻辑确保稳定性:加“兜底机制”,不依赖单一算法。异常处理根据药片实际尺寸,设定“最小-最大面积范围”,比如实际药片直径5mm,对应图像中面积100-200像素,超出这个范围的直接排除,避免杂质或碎片干扰;面积过滤结合轮廓分析,比如药片是圆形,用圆度阈值过滤非圆形的干扰;形状校验工业场景落地工业场景不会只靠分水岭算法,会搭配其他逻辑确保稳定性:加“兜底机制”,不依赖单一算法。异常处理如果某张图的计数超出正常范围,比如正常是每帧50±2颗,突然出现30颗或70颗,会触发报警,让人工复核,而不是直接输出错误结果。异常报警固定场景定制参数小结核心落地逻辑药企的
“药片瓶装计数”工位传送带速度固定、光源固定、相机角度固定,针对某一种药片,比如某规格的圆形药片,提前标定好参数,后续每天生产几万瓶,都是用同一套算法参数计数;电子厂的
“芯片计数”“电阻计数”原理完全一样——先靠硬件锁死拍摄条件,再用一套固定参数处理,准确率能稳定在99.95%以上,工业场景对准确率要求极高,通常允许的误判率低于0.1%。小结工业机器视觉的
“算法能力”,很大程度上是靠
“硬件标准化”
撑起来的。如果硬件条件混乱,如光照忽明忽暗、拍摄角度随便变,再厉害的算法也需要频繁调参数,根本无法落地;但只要硬件先“控住变量”,哪怕是分水岭这种需要参数调优的算法,也能稳定工作。8.2实战项目2:基于YOLO模型的实时物件检测系统YOLO模型简介YOLO(YouOnlyLookOnce)是一种基于深度学习的实时目标检测算法,由JosephRedmon等人于2016年提出,其核心优势是兼顾检测速度与精度,非常适合实时场景,如摄像头实时识别。YOLO模型简介与传统的两阶段检测算法(先生成候选区域再分类)不同,YOLO将目标检测视为单一的回归问题,通过一次神经网络计算即可同时预测图像中所有目标的边界框和类别概率,因此检测速度极快,基础版本可达到45帧/秒。YOLO系列YOLOv8版本YOLOv3YOLOv3通过多尺度特征检测(利用不同尺寸的特征图识别大小目标)和残差网络结构(提升特征提取能力),在保证速度的同时显著提升了检测精度,支持80种常见物体,如人、汽车、手机、杯子等的识别。YOLOv3机器人视觉自动驾驶实时监控项目目标8.2.1项目目标调用电脑摄像头采集实时视频流,实现对画面中常见物体,如人、手机、杯子等的实时检测;1.用绿色边框标记检测到的物体,在边框旁显示中文类别名称及置信度,如“手机92%”;2.画面左上角显示实时检测时间(毫秒级),便于评估性能;3.支持按任意键退出程序,并自动保存最后一帧的检测结果(含标记信息)到本地文件夹。4.项目实施8.2.2步骤1:创建文件夹新建文件准备以下文件并放入该文件夹中文字体文件:STSONG.TTF,用于正常显示中文标签,可从系统字体文件夹中复制,路径通常为“C:\Windows\Fonts”。类别名称文件:object_names.txt,包含80种物体的中文名称,每行一个,如“人”“汽车”“手机”等;预训练模型文件:yolov3.cfg(模型配置文件)、yolov3.weights(模型权重文件,可从YOLO官网或素材库获取);步骤1:创建文件夹新建文件安装在PyCharm/VSCode的“Terminal”中粘贴以下命令,按Enter安装,若已安装可跳过此步骤:步骤2:安装Python库pipinstallopencv-pythonnumpypillow若安装缓慢,可添加国内镜像源:pipinstallopencv-pythonnumpypillow-isimple完整代码步骤3导入4个必要的库OpenCV核心库处理数值数组解决中文显示计算检测耗时完整代码第一步:加载中文字体+物体类别指定字体文件路径设置字号20读取物体类别去掉每行的换行符,整理成列表如果找不到文件,会提示错误并退出完整代码第二步:加载YOLOv3预训练模型加载模型try-except容错配置文件:定义模型结构权重文件:模型训练好的“经验参数”完整代码创建设摄像头捕捉器,0代表电脑默认摄像头,外接摄像头就改成1检查摄像头是否可用用来存储最后一帧画面,方便退出时保存;打印提示第三步:初始化摄像头+设置变量完整代码第四步:实时检测主循环完整代码第四步:实时检测主循环完整代码第五步:筛选有效目标+消除重复边框完整代码第五步:筛选有效目标+消除重复边框完整代码第六步:绘制边框+中文标签+显示保存完整代码第六步:绘制边框+中文标签+显示保存完整代码第六步:绘制边框+中文标签+显示保存完整代码第七步:释放资源+保存最后一帧生成时间戳关闭摄像头关闭所有显示窗口保存最后一帧完整代码操作说明8.2.3文件路径配置确保yolov3.cfg、yolov3.weights、object_names.txt和STSONG.TTF与代码文件在同一文件夹“RealTime_Detection”中;操作说明若摄像头无法调用,可尝试修改代码中cv2.VideoCapture(0)的参数(0为默认摄像头,1为外接摄像头)。画面中绿色框标记物体,红色文字显示中文类别及置信度,左上角显示检测耗时;按键盘任意键,如Enter、空格等退出程序,最后一帧结果会自动保存为“last_detection_时间戳.jpg”。运行代码后,会自动打开摄像头,实时显示检测画面;运行程序运行结果打开“RealTime_Detection”文件夹,可找到保存的最后一帧图片,包含所有检测标记。如图8-4所示。查看结果图8-4实时物件检测常见问题解决8.2.4常见问题解决问题现象解决方法模型文件缺失报错确认两个模型文件在文件夹里,没下载就去YOLO官网或素材库获取;中文标签显示乱码检查STSONG.TTF是否存在,可替换成SIMHEI.TTF(黑体),确保字体路径正确;摄像头无法打开关闭占用摄像头的软件(如微信、Zoom),或把cv2.VideoCapture(0)改成1;检测速度慢(卡顿)关闭占CPU/GPU的程序,或把(416,416)改成(320,320)(降低分辨率提速);漏检或误检调整置信度阈值——漏检就把prob>0.5改成0.3,误检就改成0.7。本章小结预处理是计算机视觉的关键前提本章聚焦计算机视觉工程化实践,通过“重叠药片计数系统”与“基于YOLO模型的实时物件检测系统”两大项目,整合了图像预处理、轮廓检测、形态学操作、深度学习模型应用等前期核心技术。四类核心技术重叠药片计数系统实现了从图像分析到生产线实际落地,解决了漏检、误检等实际问题;实时物件检测系统则依托YOLO的高效检测能力,完成摄像头视频流处理、中文标签显示与结果保存,覆盖静态与动态场景。项目均配套详细操作指南与问题解决方案,帮助读者从技术应用进阶到工程化开发,建立完整的项目开发思维与问题调试能力。课后习题一、选择题课后习题1.重叠药片计数系统中,获取“确定的物体中心”以区分重叠药片,核心采用的技术是(
)A.高斯滤波去噪B.
距离变换+阈值处理C.形态学开运算D.双边滤波增强边缘一、选择题课后习题2.YOLO模型相较于传统两阶段目标检测算法,最核心的优势是(
)A.仅支持80种物体识别,分类精度更高B.将检测视为单一回归问题,一次计算完成,速度快C.
仅能处理静态图像,兼容性更强D.无需预训练权重文件,部署更便捷一、选择题课后习题3.重叠药片计数系统中,使用“形态学闭运算(MORPH_CLOSE)”的主要目的是(
)A.合并药片区域的碎片,填补小缺口B.缩小药片轮廓,减少边缘噪声C.直接分割重叠的药片区域D.将背景转为黑色、药片转为白色一、选择题课后习题4.在基于YOLO的实时物件检测系统中,代码里“ifprob>0.5”这一条件的核心作用是(
)A.
提高检测速度,减少模型计算时间B.
提高检测速度,减少模型计算时间C.改变检测物体边界框的颜色和粗细D.增加可识别的物体类别数量一、选择题课后习题5.重叠药片计数系统与实时物件检测系统中,均会用到的核心操作是(
)A.距离变换B.非最大值抑制(NMS)C.结果保存(cv2.imwrite())D.
形态学开运算二、填空题课后习题1.重叠药片计数系统中,分水岭算法的完整流程是:预处理→→标记→分割;其中预处理阶段包含灰度化、去噪(如中值滤波、双边滤波)和__________。2.实时物件检测系统中,加载预训练YOLO模型需使用cv2.dnn.readNetFromDarknet()函数,该函数需传入两个核心文件,分别是__________(模型配置文件)和__________(模型权重文件)。3.重叠药片计数系统中,提取前景时通过cv2.distanceTransform()进行距离变换后,需用cv2.threshold()设置阈值,文档代码中采用的阈值为__________;同时通过__________函数统计连通区域,过滤面积小于min_area的小噪声。4.实时物件检测系统中,为避免中文标签乱码需加载中文字体文件(如__________),并使用__________库的ImageDraw模块绘制中文;检测结果中,标记物体的绿色边框由__________函数绘制。第9章
计算机视觉与深度学习计算机视觉应用开发案例教程目录CONTENT9.1计算机视觉与深度学习技术融合019.2案例实践1:MobileNet-SSD物体识别029.3案例实践2:基于MobileNet的工业零件分类系统03本章小结04课后习题05MobileNet-SSD物体识别
在智能制造浪潮中,企业需要的不再是单一技术,而是“传统计算机视觉+深度学习”的复合型融合方案。本章将通过两个综合项目:基于MobileNet的工业零件分类系统引言工作情境当前智能制造与产业数字化转型的浪潮中,企业需要的不再是“单一技术工具”,而是“传统计算机视觉+深度学习”的融合解决方案。
工作情境工业场景的“工业零件分捡系统”安防场景的“实时物体识别系统”这些场景都要求从业者既能夯实传统视觉的技术根基,又能掌握深度学习的落地衔接技巧。
本章将沿着“传统技术预处理+深度学习进阶任务”的技术链路,通过MobileNet-SSD物体识别和基于MobileNet的工业零件分类系统两大实战案例,介绍计算机视觉与深度学习融合的核心方法,体会利用“技术融合”解决实际工业需求的过程。工作情境9.2案例实践1:MobileNet-SSD物体识别案例引入9.2.1案例目标3.巩固“图像预处理→结果可视化→文件保存”工作流程。2.实现MobileNet-SSD模型对20类常见物体(基于VOC数据集)的检测,能标注物体类别与置信度,理解“深度学习目标检测”与Haar检测的差异;1.掌握OpenCVdnn模块加载预训练深度学习模型的方法;实验准备9.2.2
准备5-10张含20类物体的图像,如“猫”“汽车”或“人”,保存到项目文件夹OpenCV_Advanced(需手动创建)下的images子文件夹(需手动创建),格式为JPG/PNG,分辨率建议640×480,避免过大影响速度,可以使用素材库中的图片或自备;项目准备测试图像预训练模型
从OpenCV官方模型库或本书配套素材库取得以下两个文件,保存到项目文件夹下的model文件夹(需手动创建):
模型结构文件:totxt(定义网络层参数,如卷积核大小、输出维度);
模型权重文件:mobilenet_iter_73000.caffemodel(训练好的参数,决定识别精度)。完整代码与步骤解析9.2.3项目步骤步骤1:明确实验流程物体识别流程如下:配置路径模型识别的类别(基于VOC数据集)加载预训练模型处理所有测试图片
图片预处理模型前向传播(预测)解析检测结果(画框、标类别)显示、保存结果importcv2importos导入两个必要的库步骤2:编写实训代码importcv2importos第一步:
配置路径步骤2:编写实训代码model_dir="model"#模型文件夹images_dir="images"#测试图片文件夹output_dir="output"#结果保存文件夹prototxt_path=os.path.join(model_dir,"totxt")#模型结构文件路径model_path=os.path.join(model_dir,"mobilenet_iter_73000.caffemodel")#模型权重文件路径#确保输出文件夹存在(若不存在则创建)ifnotos.path.exists(output_dir):os.makedirs(output_dir)第二步:模型识别的类别(基于VOC数据集)步骤2:编写实训代码#MobileNet-SSD基于VOC数据集训练,可识别以下20类物体+背景class_names=["background","aeroplane","bicycle","bird","boat","bottle","bus","car","cat","chair","cow","diningtable","dog","horse","motorbike","person","pottedplant","sheep","sofa","train","tvmonitor"]第三步:加载预训练模型步骤2:编写实训代码net=cv2.dnn.readNetFromCaffe(prototxt_path,model_path)第四步:
处理所有测试图片步骤2:编写实训代码#获取images文件夹下的所有图片文件image_files=[fforfinos.listdir(images_dir)iff.endswith(('.jpg','.jpeg','.png'))]forimg_fileinimage_files:#读取图片img_path=os.path.join(images_dir,img_file)image=cv2.imread(img_path)ifimageisNone:#图片读取失败print(f"警告:无法读取图片{img_path},跳过该文件。")continue第五步:图片预处理(转为模型需要的blob格式)步骤2:编写实训代码blob=cv2.dnn.blobFromImage(cv2.resize(image,(300,300)),#调整图片尺寸为300×300(模型要求输入尺寸)0.007843,#缩放因子(将像素值缩放到0~1,公式:1/127.5)(300,300),#目标尺寸127.5,#均值(减去均值做归一化,与训练时一致)swapRB=True,#OpenCV读入是BGR,模型需要RGB,因此交换R和B通道crop=False#不裁剪图片)第六步:模型前向传播(预测)步骤2:编写实训代码net.setInput(blob)#设置网络输入detections=net.forward()#执行前向传播,获取检测结果第七步:解析检测结果(画框、标类别)步骤2:编写实训代码
(h,w)=image.shape[:2]#原图的高、宽foriinrange(detections.shape[2]):confidence=detections[0,0,i,2]#该检测结果的置信度(0~1)ifconfidence>0.5:#置信度阈值(可调整,如0.3更灵敏但误检多;0.7更严格但漏检多)class_id=int(detections[0,0,i,1])#预测的类别IDifclass_id>=len(class_names):#防止类别ID超出范围continueclass_name=class_names[class_id]#对应的类别名称#计算检测框在原图上的坐标(模型输出的是0~1的相对坐标,需转成绝对坐标)box=detections[0,0,i,3:7]*[w,h,w,h](startX,startY,endX,endY)=box.astype("int")#转为整数坐标#绘制检测框(绿色,线宽2)cv2.rectangle(image,(startX,startY),(endX,endY),(0,255,0),2)#绘制类别标签和置信度(绿色文字)label=f"{class_name}:{confidence:.2f}"#格式:类别:置信度(保留两位小数)y=startY-15ifstartY-15>15elsestartY+15#标签垂直位置(防止超出图片顶部)cv2.putText(image,label,(startX,y),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0),2)第八步:显示、保存结果
步骤2:编写实训代码cv2.imshow("DetectionResult",image)#显示带标注的图片output_path=os.path.join(output_dir,f"result_{img_file}")#结果保存路径cv2.imwrite(output_path,image)#保存结果图片#按任意键查看下一张图片;按ESC键直接退出程序key=cv2.waitKey(0)ifkey==27:#ESC键的ASCII码是27break#关闭所有OpenCV窗口cv2.destroyAllWindows()识别结果展示:将物件识别结果的名称映射改为中文9.2.4关键步骤1.替换英文类别列表为中文类别列表2.新增中文字体绘制辅助函数3.修改检测结果标签的绘制逻辑运行结果9.3案例实践2:基于MobileNet的工业零件分类系统案例简介
本案例针对制造业零件分类的难点问题,融合计算机视觉技术与MobileNet迁移学习(PyTorch实现),构建工业零件分类系统。工作流程包括环境配置、数据集构建、模型训练、ONNX转换及网页部署;可精准分类螺栓、螺母、垫片,准确率≥95%,速度≥2000件/小时,有效解决人工效率低、错率高问题,适配工业质检场景。注意:本案例是一个大型综合项目,也可以把它看作一个简化版的工业零件分类项目。虽然是简化版,但是与现实工厂环境中的各种分类任务在流程上没有区别。案例引入9.3.1案例引入背景知识1.工业零件分类场景描述2.项目描述3.实验准备9.3.2步骤1:环境准备1)虚拟环境创建(参见第1章,这里不再赘述)。2)依赖库安装。命令如下:#安装PyTorch(CPU版,适合教学;GPU版见备注)pipinstalltorchtorchvisiontorchaudio--index-urlcpu#安装其他工具pipinstallpillowmatplotlibtqdmpandasopenpyxlopencv-pythononnxonnxruntime-i注意:若有nVIDIA显卡,安装GPU版PyTorch(需先装CUDA),命令参考PyTorch官网,训练速度可提升5-10倍。步骤1:环境准备安装过程如图9-7和图9-8所示:
图9-7
安装PyTorch
图9-8安装所需的其他库步骤2:数据集构建创建dataset_industrial_parts文件夹,按“训练集(80%)+验证集(20%)”划分,结构如下。dataset_industrial_parts/├──train/#训练集(每类约32张图)│├──bolt/#螺栓图像(需清晰拍摄,含不同角度)│├──nut/#螺母图像│└──washer/#垫片图像└──val/#验证集(每类约8张图)
├──bolt/├──nut/└──washer/提示:本书配套的素材库已准备好了数据集。当然读者也可以拍更多的照片或者从网上下载图片来充实数据集,以增加训练和验证的样本。代码与步骤解析9.3.3训练过程如图9-12所示。图9-12训练过程创建train_pytorch.py,整合图像预处理逻辑与PyTorch深度学习框架步骤1:模型训练(迁移学习,核心代码)
由于代码为深度学习模型训练代码且篇幅较长,故在此省略,完整代码请参照教材及配套资源。
训练过程如图9-12所示:
图9-12训练过程创建train_pytorch.py,整合图像预处理逻辑与PyTorch深度学习框架步骤1:模型训练(迁移学习,核心代码)训练完成后程序将自动绘制“损失曲线”和“准确率曲线”用于评测模型,如图9-13所示:
图9-13
“损失曲线”和“准确率曲线”转换成功后会出现如图9-14所示的提示信息。图9-14onnx模型转换成功在与数据集文件夹同级目录下创建convert_to_onnx.py,将PyTorch模型转为ONNX格式,用于跨平台部署步骤2:模型转换(ONNX格式,便于部署)
由于代码为深度学习模型训练代码且篇幅较长,故在此省略,完整代码请参照教材及配套资源。
运行结果:如图9-15和图9-16所示。图9-15模型预测结果:螺帽在与数据集文件夹同级目录下创建test_model.py,验证模型分类效果步骤3:模型测试
由于代码为深度学习模型训练代码且篇幅较长,故在此省略,完整代码请参照教材及配套资源。
前端测试。前端页面开发+部署步骤4:网页部署(工业场景实时测试)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烟草公司2026年招聘考试全真模拟笔试试题综合能力测试卷和答案解析
- 2026年虫媒传染病防控试题及答案
- 2026《观全国道德模范事迹有感》
- 2026年滨州社区工作者考试真题及答案
- 2026年N1叉车司机证考试题库及N1叉车司机试题
- 全科医生转岗培训考试(理论考核)题库及答案(2026年甘肃陇南市)
- 2026年江苏省丹阳市高一数学下册期末考试模拟试卷附参考答案(模拟题)
- 2026年村居高速收费站车流暴增临时通道疏导应急预案
- 2026年江苏省泰兴市高一数学下册期末考试模拟试卷及参考答案(培优A卷)
- 广东珠海市2026年中医确有专长和出师考核(中医医师资格考试)历届真题及答案
- DB63∕T 2523-2026 公路抗凝冰沥青混合料技术规范
- 渣土车运营公司管理制度
- 铁路接触网检修与维护课件 任务4-1 腕臂作用及分类
- 2026中国中药雾化吸入制剂技术突破与呼吸道疾病应用报告
- 2024~2025学年贵州省毕节市金沙县联合考试八年级下学期期末物理试卷
- 2024-2025学年辽宁省沈阳市和平区七年级下学期期末地理试卷
- GB/T 46093-2025船舶与海上技术海船铝质跳板
- 2024年医师定期考核口腔题库医师定考业务水平口腔类别题库及答案
- DL∕T 5342-2018 110kV~750kV架空输电线路铁塔组立施工工艺导则
- 遗传学教案设计
- 养老院建筑设计说明书
评论
0/150
提交评论