博客
关于我
小白也能弄得懂的YOLO系列之YOLOv1网络训练
阅读量:664 次
发布时间:2019-03-15

本文共 1131 字,大约阅读时间需要 3 分钟。

YOLO网络训训练过程详解

输入图片首先被分成S×S个网格cell,每个网格会预测B个边界框bbox,这B个边界框来定位目标。每个边界框包含5个预测值:x、y、w、h和置信度confidence。这些预测值有特定的约束:

  • x = (bbox.x - cell.x) / cell.width
  • y = (bbox.y - cell.y) / cell.height
  • w = bbox.width / image.width
  • h = bbox.height / image.height

YOLO训练过程

YOLO采用了两阶段训练策略:首先对前20层卷积神经网络进行ImageNet数据集的预训练,然后在Pascal VOC2007和2012数据集上进行对象识别和定位的进一步训练。

网络结构采用深度多层卷积结构,其中最后一层采用线性激活函数,其它层使用Leaky ReLU激活函数。为了防止过拟合,训练过程中采用了Dropout正则化和数据增强技术。


YOLO损失函数

YOLO的损失函数旨在衡量网络输出与实际标签之间的误差偏差,包括:

  • 定位误差:涉及边界框的xy坐标和宽高wh的预测误差。
  • 分类误差:涉及边界框是否包含目标的预测及对目标类别的分类误差。
  • 总损失函数是各项误差平方和的总和,对应五个预测项:

    • 定位误差(坐标偏离)
    • 置信度的预测误差
    • 边界框宽高的预测误差
    • 是否包含目标的预测误差
    • 对应目标类别的分类误差

    优化策略

  • 权重分配

    • 定位误差误差项权重较大。
    • 不包含目标的边界框误差权重较小。
    • 宽高预测采用平方根形式:将目标尺度改为对预测值的平方根处理。
  • 数据增强

    • 使用随机调整亮度、色调、对比度和翻转等方法扩展数据集,提升模型泛化能力。
  • 正则化

    • 采用Dropout方法随机屏蔽部分神经元,防止过拟合。

  • YOLO预测

    在实际使用中,YOLO会输出一个7×7×30的矩阵,存储每个网格的目标概率、边界框坐标和置信度。由于交并比(IOU)和非极大值抑制(NMS)算法的筛选,只保留置信度最高且与其他边界框IOU较低的前几个框。


    兼注事项

  • 定位误差:较高权重分配给定位任务。
  • 置信度误差:只有包含目标的边界框计算分类误差。
  • 交并比(IOU):用于筛选预测框的合理性。

  • TensorFlow版YOLOv1代码下载

    如果你对YOLO感兴趣,可以在GitHub上下载TensorFlow版YOLOv1代码:github.com/gliese581gg/YOLO_tensorflow。安装好开发环境后,直接使用预训练模型即可测试和训练。


    如需了解YOLO的更多细节,可以参考以下相关文章:

    转载地址:http://girmz.baihongyu.com/

    你可能感兴趣的文章
    NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
    查看>>
    nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
    查看>>
    Nuget~管理自己的包包
    查看>>
    NuGet学习笔记001---了解使用NuGet给net快速获取引用
    查看>>
    nullnullHuge Pages
    查看>>
    NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
    查看>>
    null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
    查看>>
    Numix Core 开源项目教程
    查看>>
    numpy
    查看>>
    NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
    查看>>
    numpy 或 scipy 有哪些可能的计算可以返回 NaN?
    查看>>
    numpy 数组 dtype 在 Windows 10 64 位机器中默认为 int32
    查看>>
    numpy 数组与矩阵的乘法理解
    查看>>
    NumPy 数组拼接方法-ChatGPT4o作答
    查看>>
    numpy 用法
    查看>>
    Numpy 科学计算库详解
    查看>>
    Numpy.fft.fft和numpy.fft.fftfreq有什么不同
    查看>>
    Numpy.ndarray对象不可调用
    查看>>
    Numpy:按多个条件过滤行?
    查看>>
    Numpy:条件总和
    查看>>