上期给大家介绍了YOLO模型的检测系统和具体实现,YOLO是如何进行目标定位和目标分类的,这期主要给大家介绍YOLO是如何进行网络训练的,话不多说,马上开始!

前言:

输入图片首先被分成S*S个网格cell,每个网格会预测B个边界框bbox,这B个边界框来定位目标,每个边界框又包含5个预测:x,y,w,h和置信度confidence.那这取值有什么约束嘛?如下图所示:

黄色的圆圈代表了中间这个网格的中心点,红色的圆圈代表了这个红色方框的中心点,则x,y的取值是两个中心的偏移量和 cell 本身宽高的比值:

x = (bbox.x-cell.x)/cell.width

y = (bbox.y - cell.y)/cell.height

bbox 的宽高w,h是和整张图片的宽高的比值:

w = bbox.width / image.width

h = bbox.height / image.height

现在回到我们YOLO的训练上。

YOLO训练

YOLO先使用ImageNet数据集对前20层卷积神经网络进行预训练,然后使用完整的网络,在Pascal voc2007和2012数据集上进行对象识别和定位的训练和预测。网络结构图如下所示:

YOLO的最后一层采用线性激活函数,其它层都是Leaky Relu,训练过程中为了防止数据过拟合,数据过拟合的话对于外来检测的数据的检测效果会不好,采用了(drop out)正则化和数据增强(data augmentation)技术防止过拟合。

YOLO损失函数

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

总的来说就是,就是用网格输出与样本标签的各项内容的误差平方和作为一个样本的整体误差,损失函数中的五项分别对应于每一个网格的输出的30维相对应,边框中心xy,宽高wh,可以称为定位误差,以及边框是否有对象,和有对象时的分类误差,可以称为分类误差。

YOLO预测:

在上期中我已经讲解来了YOLO是如何进行目标定位和分类了,输入一张图片到我们已经训练好了的YOLO网络,将输出一个7*7*30的张量来表示图片中所有网格包含的对象(概率)以及该网格中对象可能的两个位置(bounding box)以及可信程度(置信度),就是说一张图片上最后会有98个边界框,那么如何找到最有可能的对象和位置呢? 如下图所示:

这就用到 交并比(Intersection over union 和非极大值抑制(Non-max suppression )算法。

交并比:

如下图,把A和B分别当做一个边界框,由于我们从预测结果中可以得到边界框的宽高和中心坐标,我们就可以计算边界框A和边界框B的面积,从而计算他们之间的交并比,又假如A是实际边界框,而B是预测框,那么当A和B之间的交并比大于0.5时,判断预测这个框预测正确,否则舍弃这个框。

那剩下还有许多边界框怎么办呢?

最后附上TensorFlow版的YOLOv1的代码地址:下载好代码装好环境即可使用预训练好了的权重就可测试https://github.com/gliese581gg/YOLO_tensorflow,下载下来进行自己的训练吧!

参考:

https://zhuanlan.zhihu.com/p/32525231

https://link.zhihu.com/?target=https%3A//segmentfault.com/a/1190000016692873%3Futm_source%3Dtag-newest

往期推荐:

小白也能弄懂的目标检测之YOLO系列 - 第一期​

小白也能弄懂的目标检测YOLO系列之YOLOV1 - 第二期​

更多有关python、深度学习和计算机编程和电脑知识的精彩内容,可以关注微信公众号:码农的后花园

小白也能弄得懂的目标检测YOLO系列之YOLOv1网络训练的更多相关文章

  1. 小白也能弄懂的目标检测YOLO系列之YOLOV1 - 第二期

    上期给大家展示了用VisDrone数据集训练pytorch版YOLOV3模型的效果,介绍了什么是目标检测.目标检测目前比较流行的检测算法和效果比较以及YOLO的进化史,这期我们来讲解YOLO最原始V1 ...

  2. 第四节,目标检测---YOLO系列

    1.R-CNN回顾 适应全卷积化CNN结构,提出全卷积化设计 共享ResNet的所有卷积层 引入变换敏感性(Translation variance) 位置敏感分值图(Position-sensiti ...

  3. 目标检测YOLO进化史之yolov1

    yolov3在目标检测领域可以算得上是state-of-art级别的了,在实时性和准确性上都有很好的保证.yolo也不是一开始就达到了这么好的效果,本身也是经历了不断地演进的. yolov1 测试图片 ...

  4. [目标检测]RCNN系列原理

    1 RCNN 1.1 训练过程 (1) 训练时采用fine-tune方式: 先用Imagenet(1000类)训练,再用PASCAL VOC(21)类来fine-tune.使用这种方式训练能够提高8个 ...

  5. 深度学习笔记之目标检测算法系列(包括RCNN、Fast RCNN、Faster RCNN和SSD)

    不多说,直接上干货! 本文一系列目标检测算法:RCNN, Fast RCNN, Faster RCNN代表当下目标检测的前沿水平,在github都给出了基于Caffe的源码. •   RCNN RCN ...

  6. 小白也能弄懂的目标检测之YOLO系列 - 第一期

    大家好,上期分享了电脑端几个免费无广告且实用的录屏软件,这期想给大家来讲解YOLO这个算法,从零基础学起,并最终学会YOLOV3的Pytorch实现,并学会自己制作数据集进行模型训练,然后用自己训练好 ...

  7. [目标检测]YOLO原理

    1 YOLO 创新点: 端到端训练及推断 + 改革区域建议框式目标检测框架 + 实时目标检测 1.1 创新点 (1) 改革了区域建议框式检测框架: RCNN系列均需要生成建议框,在建议框上进行分类与回 ...

  8. 目标检测(五)YOLOv1—You Only Look Once:Unified,Real-Time Object Detection

    之前的目标检测算法大都采用proposals+classifier的做法(proposal提供位置信息,分类器提供类别信息),虽然精度很高,但是速度比较慢,也可能无法进行end-to-end训练.而该 ...

  9. 目标检测-yolo

    论文下载:http://arxiv.org/abs/1506.02640 代码下载:https://github.com/pjreddie/darknet 1.创新点 端到端训练及推断 + 改革区域建 ...

随机推荐

  1. 90行代码让微信地球转起来,太酷了!(python实现)

    1.微信地球 手机重启后打开微信的一瞬间,会看到一幅有名的图片,上面站着一个 张小龙 . 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. ...

  2. 解决 SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp的问题

    连接数据库时 设置:zeroDateTimeBehavior=convertToNull

  3. CSS基础知识(上)

    1.创建结构化.语义丰富HTML 语义化标记是优秀HTML文档的基础. 语义化标记意味着在正确的地方使用正确的元素,从而得到有意义的文档. 有意义的文档可以确保尽可能多的人都能够使用. 1.1 ID和 ...

  4. 未来云原生世界的“领头羊”:容器批量计算项目Volcano 1.0版本发布

    在刚刚结束的CLOUD NATIVE+ OPEN SOURCE Virtual Summit China 2020上,由华为云云原生团队主导的容器批量计算项目Volcano正式发布1.0版本,标志着V ...

  5. Java—构造方法及this/super/final/static关键字

    构造方法 构建创造时用的方法,即就是对象创建时要执行的方法. //构造方法的格式: 修饰符 构造方法名(参数列表) { } 构造方法的体现: 构造方法没有返回值类型.也不需要写返回值.因为它是为构建对 ...

  6. Android小技巧总结——持续更新

    WebView实现 博客地址: https://blog.csdn.net/lowprofile_coding/article/details/77928614 获取网络权限 <uses-per ...

  7. Spring Security 实战干货:实现自定义退出登录

    文章目录 1. 前言 2. 我们使用 Spring Security 登录后都做了什么 2. 退出登录需要我们做什么 3. Spring Security 中的退出登录 3.1 LogoutFilte ...

  8. Build PhantomJS from Source

    Getting the Code To obtain the code using Git from the official repository github.com/ariya/phantomj ...

  9. 第4篇 Scrum 冲刺博客(专✌️团队)

    一.站立式会议 1.1会议图片 1.2成员完成情况 成员 昨天完成的任务 今天计划完成的任务 工作中的困难 陈忠明 按下载热度返回歌曲信息,与前端尝试交互 歌曲信息的上传/下载包 前后端交互问题 吴茂 ...

  10. 第 1 篇 Scrum 冲刺博客(5.21)

    一.Alpha阶段认领的任务 二.明日任务安排 成员 5.22任务安排 工时 陈芝敏 调用小程序接口获取用户微信登录权限,初始化 1h 在页面显示倒计时 5h 冯晓凤 继续学习微信开放文档 5h 江晓 ...