2026/1/15 8:07:09
网站建设
项目流程
网站生成手机版,荆州北京网站建设,绍兴网站建设报价,注册城乡规划师有什么用此分类用于记录吴恩达深度学习课程的学习笔记。
课程相关信息链接如下#xff1a;
原课程视频链接#xff1a;[双语字幕]吴恩达深度学习deeplearning.aigithub课程资料#xff0c;含课件与笔记:吴恩达深度学习教学资料课程配套练习#xff08;中英#xff09;与答案#…此分类用于记录吴恩达深度学习课程的学习笔记。课程相关信息链接如下原课程视频链接[双语字幕]吴恩达深度学习deeplearning.aigithub课程资料含课件与笔记:吴恩达深度学习教学资料课程配套练习中英与答案吴恩达深度学习课后习题与答案本篇为第四课第三周的课后习题和代码实践部分。1.理论习题【中英】【吴恩达课后测验】Course 4 -卷积神经网络 - 第三周测验习题都较为简单就不再多说了还是把重点放在下面的演示部分。2.代码实践YOLO车辆识别实战同样先摆上这位博主的链接在这周的编程作业中这位博主手动构建了YOLO网络及其各个组件非常详细但同样因为 Keras 如今已经被 TF 的集成如果要进行相应实践需要调整相应的导库代码和一些方法的调用。我们仍然使用较成熟的框架来演示一下 YOLO 算法只是这次我们既不用 PyTorch 也不用TF。我们这次要使用的库叫做 ultralytics是 YOLO 官方团队维护的 Python 包。无论是使用 YOLO 进行学术实验还是竞赛打榜ultralytics 都被广泛使用如果说 PyTorch 和 TF 提供的是造模型的积木那么 ultralytics 就是针对 YOLO 算法的专精机器。你可以直接通过 pip 安装这个包/* by 01130.hk - online tools website : 01130.hk/zh/ */ pip install ultralyticsultralytics 毕竟是一个首次使用的全新库因此本篇我会使用一个极小的 demo 数据集主要演示一下 ultralytics 的使用流程。2.1 demo 数据集:COCO8在目标检测领域COCOCommon Objects in Context是目前使用最广泛、影响力最大的标准数据集之一。它以复杂真实场景为特点强调多目标共存、小目标比例高以及目标与背景强耦合长期以来被作为目标检测算法的重要评测基准。标准的 COCO 数据集规模庞大仅 2017 版本就包含超过11 万张训练图像覆盖80 个常见物体类别完整下载、预处理与训练成本都较高。因此尽管 COCO 非常适合用于严肃的算法研究与性能对比但对于初学者上手门槛偏高。为了解决这一问题Ultralytics 官方提供了一个用于演示和教学的极简数据集 ——COCO8。COCO8 本质上是从 COCO 数据集中抽取出的一个最小化子集在保持COCO 数据格式与标注规范完全一致的前提下将数据规模压缩到了极低的水平。目前的 COCO8仅包含 8 张图像通常划分为训练集 4 张、验证集 4 张并覆盖 COCO 中的若干典型目标类别。这种设计使得 COCO8 具备两个非常突出的特点一方面它可以在数秒内完成下载并在极短时间内跑完一次完整的训练流程另一方面它又完整保留了真实 COCO 数据集在目录结构、标注格式与训练接口上的一致性。因此COCO8 的核心用途并不是训练一个性能良好的检测模型而是用于快速验证 ultralytics 的安装与环境配置是否正确、流程是否正常并演示 YOLO 的训练、验证与推理的完整闭环。需要特别说明的是由于数据规模极小COCO8 上得到的指标也不具备统计意义也不反映模型的实际检测能力。它的价值更多体现在“流程验证”和“使用示例”层面。2.2 使用 ultralytics 实现 YOLO 算法先来看这样一段代码/* by 01130.hk - online tools website : 01130.hk/zh/ */ from ultralytics import YOLO model YOLO(yolo11n.pt) results model.train( datacoco8.yaml, epochs50, imgsz640, batch16, namecoco8_train, devicecpu ) metrics model.val(devicecpu) print(mAP50-95:, metrics.box.map) print(mAP50:, metrics.box.map50)要说明的是这就是在 ultralytics 上实现 YOLO 算法的完整代码包括创建模型、输入数据、模型传播、指标评估甚至包括可视化图表。是的这便是 ultralytics 的显著特点它的封装度极高。这代表我们使用起来可以较容易地跑通代码但同时也意味着隐藏了大量细节想要熟练应用就要慢慢拆解。现在我们就来详细看看这段代码的运行细节1 模型定义首先定义模型model YOLO(yolo11n.pt) # 这里传入的是预训练权重文件名.pt文件是 PyTorch 的权重格式。YOLO是ultralytics 提供的统一模型接口类它可以根据传入的参数加载不同版本的 YOLO 模型如 YOLOv8、YOLO11 等它封装了模型的所有关键逻辑。要说明的是YOLO 模型权重文件通常遵循如下命名规则在 ultralytics 最新版本中YOLO 模型权重文件通常遵循如下命名规则yolo[版本号][模型大小].pt版本号表示 YOLO 的算法版本或 ultralytics 发布的迭代版本。模型大小表示模型的参数量与计算复杂度也是速度和精度的折中指标n nano → 极小模型参数少推理快适合演示和入门s small → 小型模型参数稍多精度和速度平衡m medium → 中等模型精度更高训练和推理开销也增大l large → 大模型高精度训练和推理成本高x extra large → 超大模型精度最高但训练成本最大同时你会发现只要我们传入 .pt 结尾的权重文件作为参数那就代表我们使用的是预训练模型。而如果你希望从头训练自己的模型就要改变传入参数# 从头创建模型不加载预训练权重 model YOLO(yolov8n.yaml) # 只指定网络结构 YAML不是 .pt 文件2 训练方法了解完模型定义后现在就来看看传入方法results model.train(...)这一行是整个流程的核心。调用train()方法后ultralytics 会自动完成一次完整的目标检测训练流程。从宏观上看这一行代码内部依次完成了以下工作读取并解析coco8.yaml数据集配置文件根据配置构建训练集与验证集的数据加载器加载预训练权重并初始化模型参数按照指定的训练轮数执行前向传播、损失计算与反向传播在训练过程中自动记录 loss、mAP 等指标并生成可视化结果也就是说我们在代码中看到的只是一次函数调用但在其背后实际上已经包含了一个标准深度学习训练框架所需的完整流程。下面我们再展开看看这个方法的参数设置datacoco8.yaml # Ultralytics 内置的 COCO8 配置首次运行自动下载数据集这一参数用于指定数据集的配置文件。与之前在代码中手动构建Dataset和DataLoader不同ultralytics 采用YAML 文件你可以理解为专用设定集来描述数据集的路径、类别数量以及类别名称。通过这种方式模型与数据集实现了解耦同一套训练代码可以通过更换 YAML 文件直接应用到不同的数据集上而无需修改模型或训练逻辑。再来看看它的运行时的细节继续看下面几个参数epochs50, # 训练轮次 imgsz640, # 图像大小 batch16, # 批次大小 namecoco8_train, # 实验名称 devicecpu # 如果有 GPU 用 0或 cuda无 GPU 用 cpu这些我们都比较熟悉了要专门说的一点是namecoco8_train指定了本次训练实验的名字ultralytics 会根据这个名字创建一个文件夹来保存训练输出。每个实验名对应一个独立的训练结果目录方便管理。我们后面展示运行结果时就会再次用到它。3评估方法同样这一方法被高度封装metrics model.val(devicecpu) # 默认使用GPU因此如果没有GPU要显式指定CPU。 print(mAP50-95:, metrics.box.map) print(mAP50:, metrics.box.map50)这是ultralytics YOLO 提供的验证接口, 它在内部做了这些关键步骤读取并加载验证集如果有缓存.cache文件会加快数据载入。模型前向传播自动使用非极大值抑制筛选重复框。计算指标返回的metrics对象中包含了不同类型的指标数据。于是我们便可以直接打印metrics对象中的指标。现在了解了框架本身后我们来看看运行效果和其过程中的细节。2.3 在 coco8 上运行 YOLO 算法YOLO 的模型时至今日仍在不断地更新我们使用的 YOLOv11 的网络结构如下它集成了很多的先进技术非常复杂目前阶段我们理解 YOLO 算法的基础原理就好。现在我们来看看代码的运行过程1控制台输出内容当代码成功开始运行后你会发现在轮次信息前控制台就输出了很多内容。这些其实是在训练开始时的标准日志它主要是在做训练前的准备、模型初始化、数据检查和优化器配置。我们简单看一看直到这里模型才完成前期准备工作开始正式训练。同样ultralytics 对训练信息的输出也十分丰富别急还没完在结束训练后ultralytics 还会给你做一些”善后和总结“显然这里的指标较高是预训练的成果。这一整套下来你会发现不同于我们原本自己打印的输出结果ultralytics 对训练日志的记录和管理非常完备而且还不仅仅局限于控制台输出。我们继续往下2日志文件夹在完成训练后你会发现运行文件的同级目录中新出现了一个名为runs的文件夹这就是ultralytics用来管理日志的文件夹。这样的管理方式也更方便我们的溯源和调试。我们这次实践内容就到这里实际上与其说本篇是在演示 YOLO 算法倒不如说是对 ultralytics 的使用介绍。主要原因是 YOLO 算法作为真正流行的算法其使用的各项技术和原理已经可以出本书了我们这里只将其作为计算机视觉中的一个方向来介绍一些基础内容。实际上还有很多内容可以展开比如在训练日志里出现的一些专业图表的含义以及检测任务的几个评估指标这些我们之后遇到再慢慢说。