计算机视觉案例实战 课件 张腾龙 项目4-6 图像分割-综合实训_第1页
计算机视觉案例实战 课件 张腾龙 项目4-6 图像分割-综合实训_第2页
计算机视觉案例实战 课件 张腾龙 项目4-6 图像分割-综合实训_第3页
计算机视觉案例实战 课件 张腾龙 项目4-6 图像分割-综合实训_第4页
计算机视觉案例实战 课件 张腾龙 项目4-6 图像分割-综合实训_第5页
已阅读5页,还剩63页未读, 继续免费阅读

下载本文档

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

文档简介

项目4图像分割·任务1了解图像分割·任务2实践:使用Python实现图像分割71/138项目4图像分割·任务1了解图像分割任务目标(1)了解什么是图像分割(2)了解图像分割的基本方法72/138项目4图像分割·任务1了解图像分割1.什么是图像分割定义:把图像分成若干具有独特性质的区域,并提取感兴趣目标。目标:根据图像中的物体划分像素,使目标区域与其他部分区分开。作用:图像分割是图像语义理解与图像识别的重要环节,可用于物体分割、三维重建等任务。图4-1图像分割73/138项目4图像分割·任务1了解图像分割2.图像分割的基本方法常见方法:包括基于阈值、区域、边缘和特定理论的分割方法。相关理论:教材列举图论、聚类和深度语义分割等方法。处理困难:光照不均、噪声、阴影和不清晰区域可能导致错误分割,深度学习方法可改善部分问题。74/138项目4图像分割·任务2实践:使用Python实现图像分割任务目标(1)使用Python实现基于阈值的图像分割(2)使用Python实现基于边缘检测的图像分割(3)使用Python实现图像的语义分割(4)使用Python实现图像的实例分割75/138项目4图像分割·任务2实践:使用Python实现图像分割1.使用Python实现基于阈值的分割分割依据:通过设置灰度门限,确定有意义的区域或待分割物体的边界。像素分类:阈值内外的像素采用不同处理方式,二值化可把像素划分为黑白两类。实践函数:按照教材对项目二的衔接,使用threshold()或adaptiveThreshold()完成阈值分割,比较固定与局部阈值的效果。76/138项目4图像分割·任务2实践:使用Python实现图像分割2.边缘检测分割:微分算子边缘依据:沿边缘方向像素变化较缓,垂直边缘方向变化较大,可用一阶、二阶导数描述边缘。处理准备:读取图像并灰度化,根据示例进行高斯滤波或二值化处理。算子比较:教材对Roberts、Prewitt、Sobel、Laplacian、Scharr、Canny和LOG的结果进行并列展示。图4-2不同微分算子的边缘检测结果77/138项目4图像分割·任务2实践:使用Python实现图像分割2.边缘检测分割:寻找与绘制轮廓寻找轮廓:findContours()从二值图像寻找轮廓。mode设置检索模式,method设置轮廓近似方法。教材设置:先灰度化和阈值化,采用RETR_TREE与CHAIN_APPROX_SIMPLE,获得轮廓和层次信息。绘制轮廓:drawContours()指定背景图、轮廓、颜色和线宽。示例把所有轮廓用绿色线条显示在原图上。图4-3基于边缘检测的图像分割结果78/138项目4图像分割·任务2实践:使用Python实现图像分割3.语义分割:环境与模型准备实现方案:教材使用PixelLib调用DeepLabv3+算法进行语义分割。安装依赖:在目标虚拟环境中安装TensorFlow、Pillow、opencv-python、scikit-image和PixelLib。准备模型:下载基于PascalVOC训练的Xception模型,把模型、待分割图像和脚本放在同一文件夹中。79/138项目4图像分割·任务2实践:使用Python实现图像分割3.语义分割:执行与结果观察准备环境与模型:安装TensorFlow、Pillow、OpenCV、scikit-image和PixelLib,准备教材所用的Xception模型。执行分割:创建semantic_segmentation实例,加载PascalVOC模型,调用segmentAsPascalvoc()。结果含义:按类别划分像素。overlay=True可输出叠加图,但同类别的不同对象不会被区分。图4-4原图、语义分割图与叠加图80/138项目4图像分割·任务2实践:使用Python实现图像分割4.实例分割:概念与模型准备任务含义:在像素级别分离对象,并进一步区分同类别中的不同实例,结合目标检测与语义分割。实现方案:使用PixelLib中的instance_segmentation创建实例分割对象。加载模型:准备训练好的mask_rcnn_coco.h5,通过load_model()加载,再对待分割图像执行处理。81/138项目4图像分割·任务2实践:使用Python实现图像分割4.实例分割:执行与结果观察实例分割:在像素级别分离对象,同时区分同类别中的不同实例。加载与执行:创建instance_segmentation实例,加载mask_rcnn_coco.h5,再调用segmentImage()。输出选项:设置show_bboxes=True,可在分割结果中显示实例的边界框。图4-5原图、实例分割图与带边界框的分割图82/138项目5图像中的目标检测·任务1了解目标检测·任务2制作图片数据集·任务3实践:以YOLOv5为例实现目标检测83/138项目5图像中的目标检测·任务1了解目标检测任务目标(1)了解目标检测的应用领域(2)了解目标检测的基本方法84/138项目5图像中的目标检测·任务1了解目标检测1.目标检测的应用领域检测任务:识别并定位图像或视频中的一个或多个对象,同时确定类别和位置。工业与商业:应用于工业生产、物流和零售,可提高自动化水平,智能制造中可用于产品缺陷检测。其他领域:教材还列举自动驾驶和医疗等应用,说明目标检测在实际场景中的作用。85/138项目5图像中的目标检测·任务1了解目标检测2.目标检测方法:Two-Stage算法R-CNN:利用候选框进行特征提取和分类,其特征提取模块使用深度卷积网络。SPP-Net:先提取整张图像的特征,再把候选框映射到特征区域,利用空间金字塔池化获得固定长度特征。FastR-CNN:在R-CNN和SPP-Net基础上改进,生成候选区域并投影到特征图上提取特征。86/138项目5图像中的目标检测·任务1了解目标检测2.目标检测方法:One-Stage算法OverFeat:用不同大小的窗口滑动检测,计算窗口中目标的概率。SSD:使用单个神经网络,在多个阶段输出上进行多尺度检测。YOLO:把图像划分为网格,依据目标中心所在位置进行预测。后续任务采用YOLOv5完成鸟类检测。87/138项目5图像中的目标检测·任务2制作图片数据集任务目标(1)了解数据集的定义与常用数据集(2)制作图片数据集88/138项目5图像中的目标检测·任务2制作图片数据集1.数据集的定义数据集合:数据集是一批数据的集合,可通过样本及其特征描述。例如鸟类样本可包含羽毛颜色、体形和喙形等信息。训练与验证:数据集是人工智能模型训练和验证的重要资源,其质量直接影响模型质量。自建数据集:标准数据集无法满足具体场景时,需要按任务需求采集数据并进行标注。89/138项目5图像中的目标检测·任务2制作图片数据集2.常用数据集介绍PASCALVOC:用于分类、定位、检测、分割等任务,教材重点提到VOC2007和VOC2012。MSCOCO:包含检测、分割与关键点任务,场景复杂、目标数量较多、目标尺寸较小。CUB-200:面向鸟类目标,教材介绍的Birds-200-2011包含200种鸟类、11,788张图片。其他数据来源:可按任务寻找开源数据,或加入自行采集和标注的数据,对数据集进行扩充。90/138项目5图像中的目标检测·任务2制作图片数据集3.制作数据集:安装labelImg安装:在工作环境中执行pipinstalllabelImg,再输入labelImg启动。图片与保存路径:Open导入单张图像,OpenDir批量打开目录,ChangeSaveDir设置标签保存目录。标注工具:选择YOLO标签格式,使用CreateRectBox创建目标框,Save保存标签。图5-1labelImg界面91/138项目5图像中的目标检测·任务2制作图片数据集3.制作数据集:标注图片导入图片:单击OpenDir,选择待标注图片所在文件夹。框选目标:拖出矩形框,完整包含鸟类目标,尽量避免多余空白或遗漏目标部分。类别与保存:填写类别名称,保存同名标签文件。完成一张后切换到下一张,重复操作形成数据集。图5-2图片标注结果92/138项目5图像中的目标检测·任务2制作图片数据集3.制作数据集:YOLO标签含义文件对应:每张图像对应一个同名.txt标签文件,classes.txt保存类别名称。类别编号:每行第一项为类别编号,0对应classes.txt第一行,1对应第二行,以此类推。位置字段:其余四项依次为归一化中心点横坐标、纵坐标、矩形框宽度和高度。教材标签示例:00.5833330.5690000.5980390.77400093/138项目5图像中的目标检测·任务2制作图片数据集4.数据集划分划分比例:教材将图像随机打乱,按训练集与验证集约8∶2的比例划分。图像与标签:划分时保持文件名一一对应,使图像及其标签进入同一组。训练目录:images/train、images/val存放图像,labels/train、labels/val存放对应标签。脚本流程:示例读取undivided中的图像和标签,随机排列、创建目标目录,再分别复制到训练与验证目录。94/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测任务目标(1)了解YOLOv5(2)配置YOLOv5运行环境(3)使用YOLOv5实现目标检测95/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测1.了解YOLO:检测与回归基本思路:YOLO将目标检测作为回归问题,由一个端到端网络从原始图像直接预测目标。预测信息:输出边界框中心位置x、y,宽度w、高度h,以及目标置信度和类别信息。版本演进:教材介绍YOLOv1至YOLOv5,各版本对网络和训练方法作出不同改进。96/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测1.YOLO系列:v1至v3YOLOv1:采用24个卷积层和2个全连接层,检测速度快,但对小物体、密集物体存在局限。YOLOv2:采用Darknet19,引入BN、先验框及多尺度训练等改进。YOLOv3:采用Darknet53,在三个尺度进行预测,并以逻辑回归进行类别预测。97/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测1.YOLO系列:v4与v5YOLOv4:引入CSPDarknet53、Mosaic数据增强、SPP及FPN/PAN等组件和方法。YOLOv5:采用PyTorch,包含数据增强、自适应锚框、CSP主干与PAN特征聚合等设计。训练损失:教材把YOLOv5损失分为分类、定位和置信度损失,并介绍Adam与默认SGD优化器。98/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测1.YOLOv5的总体网络结构BackBone:骨干网络从输入图像中提取特征。Neck:混合、组合不同层次的特征,连接骨干网络与检测输出。Head:根据特征预测目标位置、类别及相关信息,形成检测结果。图5-3YOLOv5的网络结构99/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测1.YOLOv5的主要模块CBS:由卷积、批量归一化和SiLU激活函数组成。CSP与BottleNeck:CSP将输入分为两路后组合,BottleNeck1包含残差结构,BottleNeck2不含残差结构。SPPF与特征金字塔:SPPF进行空间金字塔池化。Neck中结合FPN与PAN,传递语义信息和定位信息。图5-4YOLOv5网络中的各模块结构100/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测2.配置PyTorch环境PyTorch作用:提供GPU加速的张量计算及带自动求导的深度神经网络功能。安装环境:先激活Anaconda工作环境,再按设备与CUDA条件选择对应的PyTorch安装命令。安装验证:安装后使用condalist查看当前环境是否包含所需PyTorch及相关包。教材示例版本为PyTorch1.8.0。101/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测2.安装YOLOv5及其依赖准备项目:下载并解压YOLOv5项目文件。进入环境与目录:进入已安装PyTorch的工作环境,切换到YOLOv5根目录,即requirements.txt所在位置。安装依赖:执行pipinstall-rrequirements.txt,使软件包版本满足项目所列要求。102/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.模型训练:数据集配置放置数据:把已划分的数据集放入项目路径,创建数据路径配置文件data_dir.yaml。图像路径:train指向训练集,val指向验证集,路径应与实际目录一致。类别设置:nc表示类别数量,names表示类别名称列表,需与数据标签对应。配置字段:train/val/nc/names103/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.模型训练:网络与预训练权重网络配置:models中提供n、s、m、l、x五类配置,depth_multiple和width_multiple控制深度与宽度。选择模型:按训练目标考虑网络规模、速度及检测精度,再设置nc、anchors、backbone和head等参数。准备权重:下载所选网络对应的.pt预训练权重,放入pretrained文件夹。104/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.模型训练:启动训练训练入口:在项目目录使用train.py,指定数据文件、网络配置和预训练权重。关键参数:--data对应数据配置,--cfg对应网络配置,--weights指向预训练模型。教材示例:采用YOLOv5m,训练100个epoch,batchsize为2。epoch表示完整数据集的一次训练遍历,batchsize表示每批样本数。示例参数:--epoch100--batch-size2105/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.模型训练:保存结果权重文件:训练结果保存在runs/train/中,best.pt为表现最好的权重,last.pt为最后一次训练的权重。评价文件:结果目录还保存混淆矩阵、P/R/F1曲线及可视化训练结果。验证检测:查看验证集上的目标框与类别输出,结合评价指标判断检测效果。图5-12验证集上的部分检测结果106/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.评价指标:混淆矩阵真正例与假正例:TP表示正确预测的正例,FP表示把负例错误预测为正例。真负例与假负例:TN表示正确预测的负例,FN表示把正例错误预测为负例。矩阵作用:把真实类别与预测类别交叉对照,观察正确分类和错误分类的分布。图5-6混淆矩阵形式及示例107/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.评价指标:精度与召回率精度P:所有预测为正例的样本中,真正正例所占的比例。P=TP/(TP+FP)。召回率R:全部真实正例中,被模型找到的比例。R=TP/(TP+FN)。曲线观察:教材分别展示P曲线与R曲线,用于观察不同置信度条件下的指标变化。图5-7、图5-8P曲线与R曲线108/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.评价指标:F1综合评价:F1是精度P与召回率R的调和平均。计算公式:F1=2×P×R/(P+R)。观察内容:结合F1曲线考察精度与召回率的共同表现。图5-9F1曲线109/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.评价指标:PR、AP与mAPPR曲线:横坐标为召回率R,纵坐标为精度P,表示两者随条件变化的关系。AP与mAP:AP为PR曲线下面积,mAP为各类别AP的平均值。IoU条件:mAP@0.5使用IoU=0.5,mAP@0.5:0.95对0.5至0.95、间隔0.05的多个IoU阈值取平均。图5-10PR曲线110/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测3.训练结果的可视化分析损失指标:box_loss、obj_loss、cls_loss分别反映选框、目标置信度和类别相关的损失变化。检测指标:同时观察precision、recall和mAP的变化,结合验证集检测图判断训练效果。训练调整:教材结合训练集与验证集损失曲线讨论学习、过拟合和瓶颈,并检查学习率、批量大小、标签与网络设置。图5-11可视化的训练结果111/138项目5图像中的目标检测·任务3实践:以YOLOv5为例实现目标检测4.使用训练模型完成目标检测准备输入:进入工作环境与YOLOv5项目目录,选择训练所得权重及待检测的图片或视频。执行推理:使用detect.py,指定数据源与训练模型。教材支持图像、目录、视频、摄像头等数据源。检查与部署:查看目标框、类别和检测结果。将检测函数嵌入自己的脚本,为综合实训的界面应用做准备。图5-13检测结果112/138项目6综合实训·任务1安装PyQt5·任务2设计一个图形用户界面113/138项目6综合实训·任务1安装PyQt5任务目标(1)认识PyQt5(2)掌握安装PyQt5的方法114/138项目6综合实训·任务1安装PyQt51.什么是PyQt5Qt:Qt是跨平台应用开发框架。PyQt5:PyQt5提供Python访问Qt库的接口,可用Python创建图形用户界面。应用场景:可以开发桌面程序、图形化配置界面和数据可视化程序。本项目以PyQt5搭建目标检测界面。图6-1Qt图标115/138项目6综合实训·任务1安装PyQt52.安装PyQt5:命令提示符打开终端:按Win+R,在“运行”对话框输入cmd,打开系统命令提示符。选择环境:输入condaenvlist查看环境,再用condaactivate环境名激活目标环境。安装:在环境名前缀出现后,执行pipinstallpyqt5。图6-6在命令提示符中激活虚拟环境116/138项目6综合实训·任务1安装PyQt52.安装PyQt5:AnacondaPrompt打开终端:在系统搜索栏查找并打开AnacondaPrompt。检查与激活:用condaenvlist查看环境,星号标记当前环境,再输入condaactivate环境名。安装:在工作环境内执行pipinstallpyqt5,等待安装完成。图6-9在AnacondaPrompt中进入环境117/138项目6综合实训·任务1安装PyQt52.安装PyQt5:PyCharm项目解释器:在PyCharm解释器设置中,选择带工作环境名的解释器。查找安装:打开软件包下载界面,搜索pyqt5并安装。验证结果:在当前解释器的软件包列表中查看是否包含PyQt5。图6-14、图6-15安装软件包与验证118/138项目6综合实训·任务2设计一个图形用户界面任务目标(1)掌握安装QtDesigner,并将其添加到PyCharm的扩展插件中的方法(2)掌握设计一个图形用户界面的方法119/138项目6综合实训·任务2设计一个图形用户界面QtDesigner与图形用户界面界面作用:通过图形、按钮、标签和菜单与用户交互,并显示图像或视频等内容。可视化设计:QtDesigner提供可拖拽的组件及布局,便于构建、修改和预览界面。项目目标:设计一个能够上传图片、调用目标检测模型并显示检测结果的图形界面。图6-16QtDesigner界面120/138项目6综合实训·任务2设计一个图形用户界面1.安装QtDesigner:命令提示符准备环境:打开命令提示符,以condaactivate环境名激活目标虚拟环境。安装依赖:输入pip3installPyQt5-tools,安装相关工具。安装设计器:输入pip3installPyQt5designer,在同一环境中完成设计器安装。121/138项目6综合实训·任务2设计一个图形用户界面1.安装QtDesigner:AnacondaPrompt打开终端:在系统搜索栏打开AnacondaPrompt。激活环境:输入condaactivate环境名,确认命令行开头显示所选环境。安装工具:依次执行pip3installPyQt5-tools和pip3installPyQt5designer。122/138项目6综合实训·任务2设计一个图形用户界面2.将QtDesigner部署到PyCharm添加外部工具:在“文件”的“设置”中打开“工具”,选择“外部工具”并新增本地工具。填写程序路径:填写名称QtDesigner,将程序路径指向所安装环境中的designer.exe。启动设计器:保存后,从“工具”的ExternalTools中选择QtDesigner即可打开。图6-26、图6-27配置工具与启动123/138项目6综合实训·任务2设计一个图形用户界面3.界面设计:常用显示与输入组件QWidget:所有可视化组件的基类,可以容纳其他组件。QPushButton与QLabel:按钮用于响应单击操作,标签用于显示文本或图像。QLineEdit与QTextEdit:分别用于单行和多行文本输入,支持设置文本及相关属性。图6-28QtDesigner组件区124/138项目6综合实训·任务2设计一个图形用户界面3.界面设计:选择与数值组件QComboBox:下拉选择框,可设置选项列表、默认选项和当前选项。QCheckBox与QRadioButton:复选框用于多项选择,单选按钮用于单项选择。QSpinBox与QSlider:分别通过数字输入和滑块调整数值,可设置范围、步长及默认值。125/138项目6综合实训·任务2设计一个图形用户界面3.界面设计:创建按钮组件新建窗体:选择“文件”中的“新建”,在新建窗体列表选择Widget。放置按钮:将组件区Buttons中的PushButton拖到工作窗口。检查对象:在对象查看器中可查看Form和PushButton,并调整组件大小与名称。图6-30创建按钮组件126/138项目6综合实训·任务2设计一个图形用户界面3.界面设计:布局方式布局作用:自动安排组件,使其在不同窗口大小和分辨率下适当放置与调整。常用布局:教材介绍垂直布局、水平布局、网格布局及标签与输入框配对的表单布局。操作示例:拖入VerticalLayout,再把按钮拖入布局区域。可通过属性面板和预览调整显示效果。图6-32按钮按照垂直布局排列127/138项目6综合实训·任务2设计一个图形用户界面3.检测界面:创建窗口与组件创建窗口:新建MainWindow,作为目标检测应用的主窗口。放置标签:放置两个QLabel,分别显示检测前与检测后的图片。放置按钮:放置两个QPushButton,将显示文本设为“上传图片”和“开始检测”。图6-35创建图形用户界面窗口128/138项目6综合实训·任务2设计一个图形用户界面3.检测界面:对象命名与保存按钮名称:把上传按钮命名为btn_load,把检测按钮命名为btn_detect。标签名称:左侧标签命名为img_left,右侧标签命名为img_right。保存界面:另存为run_windows.ui,文件中保存图形用户界面的布局信息。图6-36修改组件名称129/138项目6综合实训·任务2设计一个图形用户界面3.模型部署:将UI转换为Python转换工具:PyUIC用于把QtDesigner设计的.ui文件转换成Python代码。执行转换:将PyUIC配置为外部工具,在项目中右击.ui文件,选择Externaltools中的PyUIC。生成文件:得到同名.py脚本。生成代码定义界面组件,但仍需添加初始化及程序入口。教材第119页选择PyUIC命令130/138项目6综合实训·任务2设计一个图形用户界面3.模型部署:初始化与程序入口窗口类:让Ui_MainWindow继承QtWidgets.QMainWindow,并在__init__()中调用父类初始化及setupUi(self)。程序入口:创建QApplication和Ui_MainWindow实例,调用show()显示窗口。消息循环:通过app.exec_()进入应用消息循环,配合sys.exit()处理退出。图6-39显示图形用户界面131/138项目6综合实训·任务2设计一个图形用户界面3.模型部署:设置待机图片显示图片:使用QLabel的setPixmap()与QPixmap加载待机图片。图片路径:教材分别为左右标签设置ready.png与finished.png,存放在icon/UI目录。对齐方式:用setAlignment(Qt.AlignCe

温馨提示

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

评论

0/150

提交评论