博客
关于我
小白也能弄得懂的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/

    你可能感兴趣的文章
    Openlayers中使用Cluster实现缩放地图时图层聚合与取消聚合
    查看>>
    Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度)
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
    查看>>
    Openlayers中将某个feature置于最上层
    查看>>
    Openlayers中点击地图获取坐标并输出
    查看>>
    Openlayers中设置定时绘制和清理直线图层
    查看>>
    Openlayers图文版实战,vue项目从0到1做基础配置
    查看>>
    Openlayers实战:modifystart、modifyend互动示例
    查看>>
    Openlayers实战:判断共享单车是否在电子围栏内
    查看>>
    Openlayers实战:绘制图形,导出geojson文件
    查看>>
    Openlayers实战:绘制图形,导出KML文件
    查看>>
    Openlayers实战:绘制多边形,导出CSV文件
    查看>>
    Openlayers实战:输入WKT数据,输出GML、Polyline、GeoJSON格式数据
    查看>>
    Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
    查看>>
    Openlayers高级交互(11/20):显示带箭头的线段轨迹,箭头居中
    查看>>
    Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
    查看>>
    Openlayers高级交互(15/20):显示海量多边形,10ms加载完成
    查看>>
    Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
    查看>>
    Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
    查看>>
    Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
    查看>>