了解 YOLO 是如何训练的

2024-05-14

我试图了解 YOLO (v2) 是如何训练的。为此,我使用这个 keras 实现https://github.com/experiencor/keras-yolo2 https://github.com/experiencor/keras-yolo2在 VOC 数据集上从头开始训练 YOLO(我对其他实现持开放态度,但我从未使用过 pytorch,因此,keras 实现将是首选)。

1-据我了解,YOLO首先在imageNet上进行分类训练,然后在训练yolo进行回归(以检测边界框)时,应在某处使用这些训练过的权重(用于分类)。在我在互联网上找到的从头开始训练 yolo (用于回归)的大多数代码中,我没有看到加载这些分类权重的部分。什么时候会发生这种情况?训练yolo回归时什么时候使用分类权重?

2- 我的理解如 1) 中所述是否正确?

提前致谢


您有两个选择:

  • 对整个检测器(后端+前端,即分类网络+检测器)使用预先训练的权重。
  • 仅对后端使用预先训练的权重。

一切解释如下https://github.com/experiencor/keras-yolo2#2-edit-the-configuration-file https://github.com/experiencor/keras-yolo2#2-edit-the-configuration-file在你给的链接上。

在代码中,完成了整个模型的预训练权重的加载here https://github.com/experiencor/keras-yolo2/blob/8bc3fcdc123a5d6b9624ed4188e07b876b79dac5/train.py#L73。它是可选的。

后端的预训练权重是强制性的(根据教程),在代码中已完成here https://github.com/experiencor/keras-yolo2/blob/8bc3fcdc123a5d6b9624ed4188e07b876b79dac5/backend.py#L167(完整 Yolo 的示例)。请注意,您应该在创建模型之前下载后端权重,如教程中或本文开头所述file https://github.com/experiencor/keras-yolo2/blob/8bc3fcdc123a5d6b9624ed4188e07b876b79dac5/backend.py#L11.

Edit 1

如果类的数量发生变化,检测器部分(前端)中的滤波器数量将随着分类向量大小的变化而变化。然而,即使类的数量发生变化,后端(特征提取器,即主干)也保持不变。

您可以使用与骨干网大小相匹配的任何预训练权重,但对于整个网络,如果类别数量不同,则不能使用。例如,您不能将 Racoon 的重量用于狗和猫探测器。

您不能使用 YoloV2 原始权重来初始化该网络,因为 Darknet 和 Keras 之间的格式不同,您首先必须将它们转换为 Keras 格式。

如果您有足够的训练数据,则可以仅使用骨干预训练权重。

请注意,还有一个称为迁移学习的附加选项。如果您有预先训练的网络(主干网络和前端),您可以提取主干权重并使用它们来初始化网络主干。

Edit 2

不,严格来说,前端和后端并不是两个独立的网络:它们是两个链式网络。事实上,在大多数深度学习框架(例如 PyTorch、Keras 或 Tensorflow)中,任何层都可以被视为网络(全连接、卷积、MaxPool 等)。

“网络”只是一个对象,表示将输入映射到可以应用自动微分的输出的任意复杂数学函数(您必须定义前向和后向传播)。

在像 Yolo 这样的单次目标检测器中,将整个网络视为两个网络的链更为相关:backbonedetector。这种表示允许更通用的构造和更广泛的调整(即使用性能更高的主干或轻量级主干)。

是的,你是对的,边界框回归和标签分类发生在整个网络的最末端,因此发生在前端。

前端可以有任意数量的层,唯一的约束是在最后一层,它应该尊重特定的通道大小(即给定数量的过滤器),该大小始终受到要分类的类数量的限制。

通常最后一个输出层的通道数应该是numberOfClasses + 4 where numberOfClasses包括背景类,其中数字 4 表示边界框的四个坐标。这个例子简化了很多,我建议你阅读Yolo论文以更好地理解网络结构。

看起来只有一个可训练层(2D Convhere https://github.com/experiencor/keras-yolo2/blob/8bc3fcdc123a5d6b9624ed4188e07b876b79dac5/frontend.py#L63)在检测器网络中。请注意输出的大小受类数量的限制:self.nb_box * (4 + 1 + self.nb_class).

然后使用随机分布初始化该层参数。

关于你的最后一个问题,我认为你对迁移学习程序的理解是正确的,这应该可行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 YOLO 是如何训练的 的相关文章

  • 卷积 ImageNet 网络对于翻转图像具有不变性

    我正在使用深度学习 caffe 框架进行图像分类 我有一些有头像的硬币 有些是左向的 有些是右向的 为了对它们进行分类 我使用常见的方法 从预训练的 ImageNet 网络中获取权重和结构 该网络已经捕获了大量图像模式 并主要训练最后一层以
  • 为什么我们应该在 Keras 中对深度学习数据进行标准化?

    我正在 Keras 中测试一些网络架构 以对 MNIST 数据集进行分类 我已经实现了一个类似于 LeNet 的方法 我看到在网上找到的例子中 有一个数据标准化的步骤 例如 X train 255 我在没有这种标准化的情况下进行了测试 我发
  • 让 TensorFlow 在 ARM Mac 上使用 GPU

    我已经安装了TensorFlow在 M1 上 ARM Mac 根据这些说明 https github com apple tensorflow macos issues 153 一切正常 然而 模型训练正在进行CPU 如何将培训切换到GPU
  • Keras:嵌入/向量的附加层?

    我有 3 个词嵌入 嵌入 1 w11 w12 w13 w14 嵌入 2 w21 w22 w23 w24 嵌入 3 w31 w32 w33 w34 有没有办法通过添加所有三个向量来获得第四个嵌入 并使用所有向量的可训练权重 例如 嵌入 4 w
  • 卷积神经网络 (CNN) 输入形状

    我是 CNN 的新手 我有一个关于 CNN 的问题 我对 CNN 特别是 Keras 的输入形状有点困惑 我的数据是不同时隙的二维数据 比方说10X10 因此 我有 3D 数据 我将把这些数据输入到我的模型中来预测即将到来的时间段 所以 我
  • Theano导入错误

    我正在尝试在 CPU 机器上安装 Theano 运行 intel HD 显卡 没有 NVIDIA 在 python 中测试时出现以下导入错误 WARNING theano configdefaults g not detected Thea
  • 如何使用 Keras ImageDataGenerator 预测单个图像?

    我已经训练 CNN 对图像进行 3 类分类 在训练模型时 我使用 keras 的 ImageDataGenerator 类对图像应用预处理功能并重新缩放它 现在我的网络在测试集上训练得非常准确 但我不知道如何在单图像预测上应用预处理功能 如
  • sigmoid激活函数可以用来解决Keras中的回归问题吗?

    我已经用 R 实现了简单的神经网络 但这是我第一次用 Keras 实现 所以希望得到一些建议 我在 Keras 中开发了一个神经网络函数来预测汽车销量 数据集可用here https github com allmydatasets dat
  • 使用 keras 澄清 Yolo v3 模型输出

    我将 yolo v3 模型与 keras 一起使用 该网络为我提供了形状如下的输出容器 1 13 13 255 1 26 26 255 1 52 52 255 所以我找到了这个link https www cyberailab com ho
  • 关于具有自定义损失的 3 输出 ANN 的加权

    我正在尝试定义一个自定义损失函数 它在回归模型中接收 3 个输出变量 def custom loss y true y pred y true c K cast y true float32 Shape batch size 3 y pre
  • Tensorflow 训练期间 GPU 使用率非常低

    我正在尝试为 10 类图像分类任务训练一个简单的多层感知器 这是 Udacity 深度学习课程作业的一部分 更准确地说 任务是对各种字体呈现的字母进行分类 数据集称为 notMNIST 我最终得到的代码看起来相当简单 但无论如何我在训练期间
  • Tensorflow 2.0 中的二阶导数

    我正在尝试计算标量变量的简单向量函数的二阶导数f x x x 2 x 3 使用 TF 2 3 与tf GradientTape def f ab x return x x 2 x 3 import tensorflow as tf in1
  • 使用 Keras 和 fit_generator 绘制 TensorBoard 分布和直方图

    我正在使用 Keras 使用 fit generator 函数训练 CNN 这似乎是一个已知问题 https github com fchollet keras issues 3358TensorBoard 在此设置中不显示直方图和分布 有
  • L-BFGS 是否有 tf.keras.optimizers 实现?

    有人有 L BFGS 算法的 Tensorflow 2 tf keras 子类吗 如果想使用 L BFGS 目前有两个 官方 选项 TF概率 SciPy 优化 这两个选项使用起来相当麻烦 尤其是在使用自定义模型时 因此 我计划实现 tf k
  • 如何为模型提供“输出列表”?

    很抱歉这个标题 但我无法在这里提出更好的描述 我正在尝试应用批量训练模型 该模型应该有 13 个完全连接的输出层 每个输出层只有两个节点 但如所述完全连接 构建模型的输出如下所示 outputs list for i in range nu
  • Keras 显示 GPU 训练速度没有任何改进(部分 GPU 使用?!)

    我正在尝试在我的 Jupyter Notebook 的 AWS p2 xlarge 实例上的 GPU 而不是 CPU 上训练我的模型 我正在使用tensorflow gpu后端 仅tensorflow gpu已安装并在中提到requirem
  • 批量大小不适用于带有deploy.prototxt的caffe

    我正在努力让我的分类过程更快一些 我想增加我的deploy prototxt中的第一个input dim 但这似乎不起作用 甚至比对每张图像进行分类还要慢一点 部署 prototxt input data input dim 128 inp
  • “Dense”对象没有属性“op”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在尝试使用tensorflow keras制作一个完全连接的模型 这是我的代码 from tensorflow keras m
  • Keras,如何获取每一层的输出?

    我已经用 CNN 训练了一个二元分类模型 这是我的代码 model Sequential model add Convolution2D nb filters kernel size 0 kernel size 1 border mode
  • 为什么反向传播神经网络中必须使用非线性激活函数? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我一直在阅读一些有关神经网络的内容 并且了解单层神经网络的一般原理 我理解需要额外的层 但为什么要使用非线性激活函数 这个问题后面跟着这个

随机推荐

  • 使 Chrome 扩展弹出窗口透明

    我正在写一个 chrome 扩展 我想知道是否有办法使弹出窗口透明 即即使弹出窗口覆盖当前页面 用户也可以看到当前页面的内容 谢谢你 昨天我想到了一个有趣的想法 虽然你不能删除白色背景 但你仍然可以mimic透明背景 这可以通过在打开弹出窗
  • Browserify:如果需要,使用 module.exports,否则暴露全局

    我正在考虑采用浏览器化 http browserify org 对于我的一些项目 但想确保其他人如果想使用 捆绑的 代码就不必使用 browserify 执行此操作的明显方法是通过以下方式公开模块导出module exports以及通过一个
  • System.IO.IOException:由于意外>数据包格式,握手失败?

    有谁知道这意味着什么 System Net WebException 底层连接已关闭 发送时发生意外错误 gt System IO IOException 由于意外 握手失败 数据包格式 在 System Net Security SslS
  • 是否可以将一位的位向量转换为 SMTLib2 中的布尔变量?

    我想要一个布尔变量来测试 例如 位向量的第三位是否为 0 位向量的理论允许提取 1 位作为位向量 但不是布尔类型 我想知道我是否可以出演这个角色 谢谢 更新 如果我的问题不清楚 我很抱歉 但 Nikolaj Bjorner 的答案是如何测试
  • 将 Python Selenium 输出写入 Excel

    我编写了一个脚本来从在线网站上抓取产品信息 目标是将这些信息写入 Excel 文件 由于我的Python知识有限 我只知道如何在Powershell中使用Out file导出 但结果是每个产品的信息都打印在不同的行上 我希望每种产品都有一条
  • Xamarin.Forms DataTemplateSelector 不适用于 iOS(未调用构造函数)

    我正在膨胀数据模板选择器 如下所示
  • 复制文件时 Ant 重命名

    如何在将文件复制到ant中的目录时重命名文件
  • Mongoid 中的 find_or_create_by 线程安全吗?

    我有一个使用 Mongoid 的 find or create by 方法的网络应用程序 poll Poll find or create by fields 在投入生产之前 我尝试运行故障场景 我发现多个用户可以尝试使用此方法访问此资源
  • 在 wampserver 2.2 上安装 php_imagick.dll PHP 扩展

    我使用的是 32 位操作系统的 Windows 7 我安装了 ImageMagick 6 8 7 Q16Link https www imagemagick org script download php windows我能够从命令行 转换
  • NEST 1.0:请参阅 Fiddler 上的请求

    我刚刚更新到 NEST 1 0 我在远程服务器 不是本地主机 上有 Elastic Search 通常我在使用 Fiddler 发送和接收请求时没有任何问题 更新后 bammm 没有检测到任何请求 但我的应用程序发出这些请求没有任何问题 你
  • 我可以在 if 语句中使用“as”机制吗

    是否可以使用as in if类似的声明with我们使用的 例如 with open tmp foo r as ofile do something with ofile 这是我的代码 def my list rtrn lst True if
  • 如何修改actix-web中间件中的请求数据? [复制]

    这个问题在这里已经有答案了 是否有推荐的方法来修改 actix web 上收到的请求 我正在寻找将数据添加到请求对象并使其可供下游中间件和处理程序处理的方法 The 中间件文档 https actix rs docs middleware
  • Microsoft Surface 支持 Flash 网站吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我搜索过谷歌但没有找到明确的答案 我或我工作的 Flash 网站 应用程序可以在 Microsoft Surface 平板电脑上运行吗 看来微软 Su
  • 比较 Objective C 中的 NSNumber

    我是 Objective C 的初学者 对这种情况有点困惑 我有以下代码 if number1 lt number2 NSLog THE FOLLOWING NUMBER NSLog number1 NSLog IS LESS THAN N
  • 无法识别用“授权”属性修饰的 SignalR 中心中的用户上下文

    Server MVC 5 WebApi 2 内的 SignalR 集线器 安全性 不记名令牌 Client 使用 HttpWebRequest 从 WebApi 控制器 Token 端点检索承载令牌的 C 类 我使用了所描述的模式here
  • 动态更改 vuejs 2 中的选择输入选项

    如何动态更改选择下拉 v model 中的选项 我有 2 个选择输入 其中一个应该根据其他输入进行更改 例如 如果我选择 水果 则选择显示水果 如果我选择 蔬菜 则选择显示蔬菜 我不使用Vuejs 但查看文档后 var TypesArr F
  • 禁用 iPhone 4S / 新 iPad 键盘上的听写按钮

    我们的应用程序是一个医疗保健应用程序 我们的应用程序中有一个符合 HIPAA 标准的语音识别器 所有听写都可以通过它进行 医院不希望医生意外开始与不符合 HIPAA 标准的 Nuance Dragon 服务器进行对话 因此 我正在寻找可以抑
  • 如何生成Mac应用程序的安装包?

    如何为 OS X 二进制文件以及一些配置和脚本文件创建单个安装程序包 最终文件夹应如下所示 任何帮助 将不胜感激 谢谢 如果您希望将各种东西放置在不同的位置 安装程序在这里 文档在那里 支持文件在这里等等 它们也非常适合提供安装体验的可配置
  • Excel VBA - 如何逐行读取csv文件而不是整个文件

    这是我需要读取的 csv 文件内容 header header header header header header value value value value value value value value value 我在网上找到
  • 了解 YOLO 是如何训练的

    我试图了解 YOLO v2 是如何训练的 为此 我使用这个 keras 实现https github com experiencor keras yolo2 https github com experiencor keras yolo2在