YOLOv1: You Only Look Once: Unified, Real-Time Object Detection
1. 论文简介
Look
论文名:You Only Look Once: Unified, Real-Time Object Detection
论文地址 :YOLOv1
论文作者:Joseph Redmon, Santosh Divvala, Ross Girshick , Ali Farhadi
论文时间:2016年CVPR
2. 网络结构
YOLOv1的网络结构借鉴了GooLeNet,共包含24个卷积层,2个全连接层,其中,3x3的卷积后接1x1 reduction layer来取代GooLeNet的inception module。
输入:448 x 448 x 3
前向传播:24个Conv Layer + 2个FC,3x3的卷积后接1x1的卷积来做通道上的降维,最后一个FC层包含1470个神经元,得到1470x1的输出,经过reshape后得到7 x 7 x 30的tensor。卷积层和全连接层采用Leaky ReLU激活函数,最后一层采用线性激活函数。
输出:最后一层FC的输出经过reshape后得到7 x 7 x 30的tensor,也就是,每个grid cell都有一个30维的输出,代表包含2个bounding box的信息和20个类别概率,下文马上介绍。
3. 7 x 7 x 30的解释
(1)YOLOv1首先会将图片划分为SxS个grid cell(网格),如果某个object的中心落在这个网格中,那么这个网格就负责预测这个object。论文中取S=7。例如,下图中,狗的中心点所在的grid cell就负责预测这只狗。
(2)每个网格预测B个bounding box。论文中取B=2。
具体的:
每个bounding box的预测信息包含位置和confidence值m,也就是,每个bounding box的预测信息包含5个值:x,y,w,h,confidence。
confidence值是YOLO系列网络特有的一个值,它衡量了模型以多大的置信度认为这个box包含了目标物体以及这个box的准确率有多高。
当bounding box中存在目标时,Pr(Object)=1,此时confidence=IOU(交并比);当bounding box中不存在目标时,Pr(Object)=0,此时confidence=0。
x,y是bounding box的中心点坐标,它是相对于grid cell而言的值(所以是0-1之间的值),w,h是bounding box相对于整个图像的宽和高的相对值(所以也是0-1之间的值),即w=bounding box的宽/图片的宽,h=bounding box的高/图片的高。(YOLOv1中没有anchor的概念,是直接预测这几个值的)
每个grid cell还会预测C个条件类别概率,,它表示在bounding box包含了目标的情况下属于C个类别的概率。这里需要注意,虽然每个grid cell会预测B个bounding box,但是每个grid cell只预测一组类别概率。
在测试阶段,会将条件概率和confidence值相乘。条件概率即:每个bounding box分别属于每个类的概率值,例如Pascal VOC数据集有20个类,那么这里的概率值就有20个,公式为:
也就是测试阶段输出的概率分数即包含了这个bounding box内包含某个目标的概率,也包含了这个bounding box与真实目标的重合程度。
于是!!!最终的输出为7x7x30。(Pascal VOC数据集一共有20类)
输入图片被分成7x7个网格,每个网格预测输出2个bounding box,每个bounding box包含5个值:4个坐标+1个置信度,另外每个网格预测输出20个类别(针对Pascal VOC数据集),所以最终预测输出的维度为:7 x 7 x (4 + 1 + 4 + 1 + 20) = 7 x 7 x 30,如下图所示。
4. 损失函数
包含了:bounding box损失+confidence损失+classes损失。
主要采用:sum-square error,因为优化起来比较方便。
损失函数中,bounding box损失的系数,不包含目标的confidence系数,这是因为:在一张图片中,很多grid cell并不包含目标,这会导致confidence值为0,影响包含了目标的这些grid cell的梯度的作用,也会导致模型不稳定,过早发散。
bounding box损失:
1)并不是所有的bounding box都参与损失的计算。满足:第i个grid cell中包含目标,同时,该grid cell中第j个bounding box和ground truth有最大的IoU值,那么这个bounding box才参与loss的计算,其他的不满足条件的bounding box不参与损失的计算。
2)位置损失部分,宽和高取开根号处理。作者在论文中提出,损失是应该要反映出小偏移量对于大目标带来的影响是小于小目标的。具体分析如下:假设有两个不同大小的目标,在两个bounding box有相同的偏移量时,小目标相对于大目标来说,这个bounding box的预测效果明显更差,如左图所示。而在采用开根号之后,相同的偏移量下,小目标带来的损失明显是大于大目标的,对比右边两图可知。
confidence损失:
同样需要满足:第i个grid cell中包含目标,同时,该grid cell中第j个bounding box和ground truth有最大的IoU值,那么这个bounding box才参与loss的计算。
分类误差:以回归误差的方式来计算,同样是使用sum-squared error。需要注意的是只有包含object的grid cell才参与分类loss的计算。
5. 模型训练
首先在ImageNet上对网络中的前20层+一个平均池化层+FC层进行预训练,训练花了将近一个星期获得top-5正确率88%(ImageNet2012验证集上)。然后,前20层后接上4层卷积和2层全连接层进行检测训练。也就是,前20层是用预训练网络初始化的,最后的这6层是随机初始化的。
因为检测需要更多的图片细节信息,训练时,将输入图片从224x224调整为448x448。
batch size大小为64,优化器选择momentum(0.9),weight decay=0.0005。
学习率:先逐渐从0.001增大到0.01(如果一开始就比较大,模型训练会因为梯度的不稳定而发散),然后的75个epoch,学习率为0.01,再30个epoch,学习率为0.001,最后的30个epoch是0.0001。
采用了dropout,第一个全连接后引入了dropout,rate设为0.5。
数据增强:近20%的图片进行了随机scaling,随机调整了图片HSV颜色空间的exposure值和saturation值。
6. 存在问题
每个grid cell只预测两个bounding box和一组类别,这就限制了预测重叠或邻近物体的数量,比如说两个物体的中心点都落同一个grid cell中,这个grid cell只能预测一个类别。对于群体性的目标难以检测。
YOLOv1是根据训练数据来预测bounding box的,当测试数据中出现了新的或者不太常见的长宽比(尺寸)时,预测结果较差,泛化能力较差。
网络经过多次下采样,最终得到coarse feature(分辨率小,比较粗?),这会影响到物体的检测。
损失函数的设计没有很好地区分小目标和大目标。
作者发现,主要的错误原因来自于定位不准确,因为YOLOv1直接预测目标的坐标信息,而Faster R-CNN预测的是相对于anchor box的offset。从YOLOv2开始基于anchor的预测。
7. 性能对比
8.如果某处表达不当,烦请指出,谢谢。
YOLOv1: You Only Look Once: Unified, Real-Time Object Detection相关推荐
- 深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》
深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1< You Only Look Once: Unified, Real-Time Object Detection> Abstra ...
- 《每日论文》You Only Look Once: Unified, Real-Time Object Detection
Abstract 摘要 We present YOLO, a unified pipeline for object detection. 我们提出了一个统一的对象检测管道YOLO. Prior wo ...
- 论文研读 —— 4. You Only Look Once Unified, Real-Time Object Detection (3/3)
文章目录 3. Comparison to Other Detection Systems 4. Experiments 4.1. Comparison to Other Real-Time Syst ...
- YOLO系列阅读(一) YOLOv1原文阅读:You Only Look Once: Unified, Real-Time Object Detection
目录 0.Abstract 0.1原文翻译 第一段(说明本次研究和之前研究的区别) 第二段(速度快.虽然错误率高一点,但是背景被错误标记的概率更低) 0.2总结 1. Introduction 1.翻 ...
- 【YOLOv1原文+翻译】You Only Look Once Unified, Real-Time Object Detection
最近新出了YOLOV4,我系统的从V1开始整理出稿,传送门: [YOLOv1原文+翻译]You Only Look Once Unified, Real-Time Object Detection [ ...
- 目标检测--A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection
A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection ECCV2016 https://g ...
- UFS-Net: A unified flame and smoke detection method for early detection of fire in video surveillanc
论文引用: Hosseini, A., Hashemzadeh, M., & Farajzadeh, N. (2022). UFS-Net: A unified flame an ...
- You Only Look Once: Unified, Real-Time Object Detection (YOLO 论文翻译)
英文版论文原文:https://arxiv.org/pdf/1506.02640.pdf You Only Look Once: Unified, Real-Time Object Detection ...
- 【论文翻译】UniT: Unified Knowledge Transfer for Any-Shot Object Detection and Segmentation
UniT: Unified Knowledge Transfer for Any-Shot Object Detection and Segmentation UniT:任意样本量的目标检测和分割的统 ...
- (深度学习论文精读总结)You Only Look Once: Unified, Real-Time Object Detection
一.文献名字和作者 文献名:You Only Look Once: Unified, Real-Time Object Detection 作者名:Joseph Redmon,Santosh Divv ...
最新文章
- Nginx基础——Rewrite规则
- 20个顶尖产品经理都在用的APP
- rust实战入门到进阶(4)
- java throw与throws_基于Java中throw和throws的区别(详解)
- leetcode力扣77. 组合
- aws rds监控慢sql_AWS RDS SQL Server入门
- bll调用mysql存储过程_SQL Server的存储过程或自定义函数调用Com组件
- VS 显示方法引用的设置方法
- linux centos 恢复 还原 备份 Snapper 快照说明
- 微信公众号开发之(21)视频
- 约束优化方法_1_——Zoutendijk可行方向法
- php卡片式排版显示,卡片式设计思考
- 用户账户计算机管理员密码,电脑管理员密码是什么
- IPFS星际文件系统科普
- 《你的孤独,虽败尤荣》摘抄及想法
- ACW3302表达式求值
- 【HTML期末作业】大学生抗疫感动专题网页设计作业 抗疫最美逆行者网页 致敬疫情感动人物网页设计制作
- AO是什么?GO是什么?深度解析JS预编译遇见AO和GO
- 微信跳一跳辅助脚本(神奇的战士版本)安装过程的各种问题合集(附教程连接)
- 【Latex】编辑公式效率太低?来看一些MathType的重要技巧