目标检测 :YOLO V1思想总结

简介: 目标检测 :YOLO V1思想总结

YOLO V1

在这里插入图片描述

Introduction(模型介绍)

  1. YOLO V1在当时的速度非常快,FastYOLO可以达到150FPS。
  2. 它的背景误判率小于Faster RCNN,由于它直接提取全图的特征(前景与背景的关系),而后者则是提取候选框的特征。
  3. 迁移学习效果好。
  4. 在小目标上表现不佳。

Network Design(网络设计)

在这里插入图片描述

Backbone(骨干网络)

在这里插入图片描述
yolo的骨干网络是一个很简单网络,总体类似于VGG,采用3 3的卷积,最后全连接层输出4096维的向量,然后在跟一个全连接 (7 7 30)1430维的向量, 然后把它 resize成 7 7 * 30的一个tensor,这里面的每一个channel维就对应了一个单元格。

Grid Cell(单元格)

它把输入的一张图像分成 S * S 的网格(原文S=7),如果标注框的中心落在其中的一个 单元格,那么这个单元格就负责预测这个标注框对应的类别。每个单元格预测B个bounding box,每个bounding box 包含 四个坐标(x,y,w,h),和一个confidence。

其中这四个坐标为:x ,y 是bounding box的中点,用gird cell 左上角的偏移量表示,wh是相对于原图的大小,它们都是被归一化的。
在这里插入图片描述

confidence 的公式为:
在这里插入图片描述
其中 Pr(object)为gird cell是否包含物体中心的概率,非0即1,后者表示如果gird cell 负责预测某一类别,它的标注框与预测框的IOU。
其中每个gird cell还会预测每个类别的概率,公式为:
在这里插入图片描述
其中第一项就这个gird cell在负责预测某一类别的情况下,所有类别的softmax概率。
那么我们用什么样的feature来代表gird cell 呢?
在这里插入图片描述
根据骨干网络输出的feature,每一个channel维就是每一个 gird cell 的 feature。

那么最终模型会输出 S S (5B+C)shape 的 tensor。

Loss Function(损失函数)

均方误差对需要细粒度的目标检测任务比较敏感,所以大部分都采用均方误差。
在这里插入图片描述

这里我们首先解释$\lambda$,由于作者发现大部分的 gird cell 不负责预测物体,那么它们就没有坐标,只有背景的confdence,而这部分占大多数,就会掩盖住有物体的gird cell 所产生的loss,所以把下标为 coord的lambda 设为5,noobj设置为0.5,以便均衡两者。
在这里插入图片描述
其中对不同尺度的IOU而言,当他们的偏移量一致的时候,小的bounding box 产生的误差要更大,所有为 w h 去根号,小的wh 会获得较小的loss,反之较大。

Training

首先把骨干网络 在Image Net上跑一遍,达到了很好的精度后,然后把权重拿到yolo,把input size 改为 448 * 448 因为检测任务对feature map 细粒度要求大。
激活函数采用 Leaky relu,根据训练epoch衰减lr, dropour =0.5. 数据增强。

小结

YOLO以速度见长,处理速度可以达到45fps,其快速版本(网络较小)甚至可以达到155fps。这得益于其识别和定位合二为一的网络设计,而且这种统一的设计也使得训练和预测可以端到端的进行,非常简便。
不足之处是小对象检测效果不太好(尤其是一些聚集在一起的小对象),对边框的预测准确度不是很高,总体预测精度略低于Fast RCNN。主要是因为网格设置比较稀疏,而且每个网格只预测两个边框,另外Pooling层会丢失一些细节信息,对定位存在影响。 更多细节请参考原论文。

目录
相关文章
|
机器学习/深度学习 编解码 算法
【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)
【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)
2044 0
【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)
|
存储 Java C语言
Windows 下 JNI 调用动态链接库 dll
Windows 下 JNI 调用动态链接库 dll
290 0
|
4月前
|
网络协议 开发工具 git
解决 git 报错 “fatal: unable to access ‘https://github.com/.../.git‘: Recv failure Connection was rese
在使用 Git/Git小乌龟 进行代码管理的过程中,经常会遇到各种各样的问题,其中之一就是在执行 git clone 或 git pull 等操作时出现 “fatal: unable to access ‘https://github.com/…/.git’: Recv failure Connection was reset” 的报错。这个问题通常是由网络连接问题或代理设置不正确导致的。在我的个人使用经验中,我亲自尝试了四种方法,它们都能够有效地解决这个报错。个人比较推荐方法二。
1864 0
|
机器学习/深度学习 人工智能 边缘计算
Paper Reading | 一种高效的光流估计方法——NeuFlow v2
本文介绍了一种高效的光流估计方法——NeuFlow v2。
Paper Reading | 一种高效的光流估计方法——NeuFlow v2
|
11月前
|
消息中间件 存储 运维
云消息队列 Kafka 版全面升级:经济、弹性、稳定,成本比自建最多降低 82%
本文介绍了阿里云云消息队列 Kafka 版的全面升级,强调了其在经济性、稳定性和弹性方面的显著提升。同时,与 Apache Kafka 相比,云消息队列 Kafka 版通过节省 66% 的资源,实现了客户使用成本比自建最多降低 82%。
518 112
|
应用服务中间件 nginx Docker
Docker中报错 Error response from daemon: Conflict. The container name “/nginx01“ is already in use
在尝试运行 `docker run -d --name nginx01 -p 3344:80 nginx` 时遇到错误。问题源于已有名为 nginx01 的容器未正确终止,造成命名冲突。解决方法:首先使用 `docker ps -a` 查看所有容器,然后删除现有 nginx01 容器,执行 `docker rm <container_id>`(替换 `<container_id>` 为实际容器ID),最后再运行 `docker run` 命令即可。
1147 0
|
12月前
|
存储 NoSQL MongoDB
小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态
基于MongoDB灵活模式的特性,小川实现了功能的快速迭代和上线,而数据库侧无需任何更改
|
运维 Devops 应用服务中间件
阿里云云效操作报错合集之从企业仓库里拉取依赖报错403,该如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
阿里云云效操作报错合集之从企业仓库里拉取依赖报错403,该如何解决
|
机器学习/深度学习 编解码 计算机视觉
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)
2745 0
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)
|
机器学习/深度学习 编解码 算法
【YOLO系列】YOLOv2论文超详细解读(翻译 +学习笔记)
【YOLO系列】YOLOv2论文超详细解读(翻译 +学习笔记)
1829 0
【YOLO系列】YOLOv2论文超详细解读(翻译 +学习笔记)