版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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-url/whl/cpu#安装其他工具pipinstallpillowmatplotlibtqdmpandasopenpyxlopencv-pythononnxonnxruntime-i/pypi/simple/注意:若有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:网页部署(工业场景实时测试)
由于代码为网页前端代码且篇幅较长,故在此省略,完整代码请参照教材及配套资源。
前端测试:
访问页面。打开浏览器,在地址栏中输入“localhost:8080”,上传零件图像即可测试,如图9-18所示:本章小结传统技术做预处理+预训练模型做进阶任务本章作为“传统计算机视觉”与“深度学习”的融合章节,通过两个递进案例落地融合应用——MobileNet-SSD物体识别案例掌握OpenCVdnn模块加载预训练模型的方法;工业零件分类案例则基于PyTorch实现迁移学习,覆盖数据集构建、模型训练、ONNX转换及网页部署全流程。承上启下本章无需深入学习理论推导,核心是让掌握“传统技术做预处理+预训练模型做进阶任务”的工程逻辑,既可以巩固前期OpenCV实操能力,又能建立深度学习在工业场景落地的思维框架;既为复杂项目开发奠定基础,又为人工智能技术应用专业后期的深度学习课程进行铺垫。课后习题一、选择题课后习题1.1.以下关于传统计算机视觉与深度学习技术的差异,说法正确的是(
)A.传统技术依赖自动学习特征,深度学习依赖手工设计特征B.
传统技术需大规模标注数据,深度学习小样本即可应用C.传统技术对复杂场景(如遮挡)适应性弱,深度学习适应性强D.传统技术模型结构复杂,深度学习模型结构简单一、选择题课后习题2.MobileNet-SSD模型适合端侧部署(如手机、嵌入式设备)的核心原因是(
)A.
采用深度可分离卷积,减少计算量与参数量B.仅能识别20类物体,功能简单C.
依赖OpenCVdnn模块,无需其他框架D.
只能处理静态图像,不支持实时检测一、选择题课后习题3.工业零件分类案例中,将PyTorch模型转换为ONNX格式的主要目的是(
)A.提高模型训练速度B.实现跨平台
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食品厂清洁消毒制度
- 机械行业市场前景及投资研究报告:机器人行业进步发展空间广阔
- 8.4卷积神经网络
- 某汽车厂工艺流程制度
- 2026年森林防火巡查值守试题及答案
- 2026年老年痴呆失能照护试题
- 工程监理员试题及答案
- 高中电路讲解测试题及答案
- 高三语文期中试题及答案
- 护士招聘内部考试题及答案
- 口腔诊所租赁合同范本
- 2025年公安院校联考选拔考试(行政职业能力测验)练习题及答案
- 钢筋绑扎合同协议书范本
- 备婚接亲游戏卡片互动小游戏演示模板
- 2025年事业单位工勤技能-河南-河南图书资料员三级(高级工)历年参考题库含答案解析(5套)
- 肺癌合并静脉血栓栓塞的多学科诊疗全程管理
- 国际金融实务(第五版)刘玉操全套教案课件
- 2024-2025学年广西壮族百色市靖西县数学三年级第一学期期末学业质量监测模拟试题含解析
- NB-T20293-2014核电厂厂址选择基本程序
- 【人教版】六年级数学上册全册课件
- 人类普遍交往与世界历史的形成发展
评论
0/150
提交评论