构造训练样本和设计损失函数

在进行模型训练时,我们需要构造训练样本和设计损失函数,才能利用梯度下降对网络进行训练。

训练样本的构建

将一幅图片输入到yolo模型中,对应的输出是一个7x7x30张量,构建标签label时对于原图像中的每一个网格grid都需要构建一个30维的向量。对照下图我们来构建目标向量:

构造训练样本和设计损失函数

20个对象分类的概率

对于输入图像中的每个对象,先找到其中心点。比如上图中自行车,其中心点在黄色圆点位置,中心点落在黄色网格内,所以这个黄色网格对应的30维向量中,自行车的概率是1,其它对象的概率是0。所有其它48个网格的30维向量中,该自行车的概率都是0。这就是所谓的"中心点所在的网格对预测该对象负责"。狗和汽车的分类概率也是同样的方法填写

2个bounding box的位置

训练样本的bbox位置应该填写对象真实的位置bbox,但一个对象对应了2个bounding box,该填哪一个呢?需要根据网络输出的bbox与对象实际bbox的IOU来选择,所以要在训练过程中动态决定到底填哪一个bbox。

2个bounding box的置信度

预测置信度的公式为:

构造训练样本和设计损失函数

利用网络输出的2个bounding box与对象真实bounding box计算出来。然后看这2个bounding box的IOU,哪个比较大,就由哪个bounding box来负责预测该对象是否存在,即该bounding box的Pr(Object)=1,同时对象真实bounding box的位置也就填入该bounding box。另一个不负责预测的bounding box的Pr(Object)=0。

上图中自行车所在的grid对应的结果如下图所示:

构造训练样本和设计损失函数

损失函数

损失就是网络实际输出值与样本标签值之间的偏差:

构造训练样本和设计损失函数

yolo给出的损失函数:

构造训练样本和设计损失函数

构造训练样本和设计损失函数

模型训练

Yolo先使用ImageNet数据集对前20层卷积网络进行预训练,然后使用完整的网络,在PASCAL VOC数据集上进行对象识别和定位的训练。

Yolo的最后一层采用线性激活函数,其它层都是Leaky ReLU。训练中采用了drop out和数据增强(data augmentation)来防止过拟合。

模型预测

将图片resize成448x448的大小,送入到yolo网络中,输出一个 7x7x30 的张量(tensor)来表示图片中所有网格包含的对象(概率)以及该对象可能的2个位置(bounding box)和可信程度(置信度)。在采用NMS(Non-maximal suppression,非极大值抑制)算法选出最有可能是目标的结果。

总结:yolo模型预测速度非常快,处理速度可以达到45fps,其快速版本(网络较小)甚至可以达到155fps。训练和预测可以端到端的进行,非常简便。准确率会打折扣对于小目标和靠的很近的目标检测效果并不好。

文章来源于:王晴儿网页设计博客 欢迎分享交流,转载请注明出处

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/262469.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
黑马程序员黑马程序员订阅用户
上一篇 2023年5月8日 01:09
下一篇 2023年5月8日 01:10

相关推荐

  • PHP 新手入门之变量的认识

    PHP 中的变量用一个美元符号后面跟变量名来表示。 变量名是区分大小写的。 变量名与 PHP 中其它的标签一样遵循相同的规则。 一个有效的变量名由字母或 者下划线开头,后面跟上任意数量的字母,数字,或者下划线 注…

    2018年12月11日
    0318
  • PHP函数的Slim函数。

    PHP是一门非常流行的服务器端脚本语言,在Web开发领域有着广泛的应用。其中,Slim框架是PHP中一个轻量级、灵活、易于学习和使用的开源框架,提供了构建web应用程序所需的基本功能和组件,并且可扩展性强,适用于中…

    2023年5月23日
    00
  • PHP函数的数据可视化函数。

    PHP作为一种高性能、易学易用的服务器端脚本语言,功能十分强大。在开发过程中,经常需要对数据进行可视化,以便更好地展示和分析数据,这时就需要使用到PHP函数的数据可视化函数。数据可视化是指将复杂的数据经过…

    2023年5月22日
    02
  • PHP8函数:str_contains()的新用途。

    PHP 8是一款功能更强大的编程语言,它引入了许多新的函数和特性,其中之一就是str_contains()函数。str_contains()函数主要用于检查字符串中是否包含指定的子字符串,它可以用于各种不同的应用程序中,例如搜索引擎…

    2023年5月21日
    04
  • 总结PHP字符串与数组处理函数用法

    本文实例讲述了PHP字符串与数组处理函数用法。分享给大家供大家参考,具体如下:字符串处理函数trim --去除字符串首尾的多余空白字符和其他字符函数结构:string trim ( string $str [, string $character_mask = &…

    2022年6月16日
    0151
  • php的默认构造函数

    如果在类中,没有定义构造函数,那么会有一个默认的构造函数,形式如下, 举例说明 如何将一个对象的属性输出并显示 说明: 通过上面的案例,我们讲解了两个重要的点 如果显示成员属性的值 深刻理解了$this 的指向当…

    2018年4月11日
    0435
  • PHP8中的函数:str_contains()的实用技巧。

    PHP8中新增的str_contains()函数是一种非常实用的字符串处理功能,它能够快速地判断一个字符串是否包含某一个子字符串。在实际应用中,它可以帮助我们快速定位出数据中的关键字,从而更加高效地进行数据处理和分析…

    2023年5月21日
    00
  • 重蔚php学习第二十七天——php可变变量,匿名函数

    运算符:赋值运算符,算术运算符,错误抑制符,比较运算符,逻辑运算符,三元运算符,位运算符,连接运算符,自操作运算符(在项目计算当中,非常不建议使用多个自操作一起运算) 源码反码补码 整数的原码反码和补…

    2017年5月5日 PHP自学教程
    0379

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息