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

yolov1有个基本的思想,就是将图片划分为S*S个小格grid,每个grid负责一个目标.上图里的黄色框就是grid.蓝色框就是预测的object.蓝色点是object的中心,位于黄色框内.


每个grid只预测一个目标,这个就造成了yolo的一个缺陷,当多个目标的中心都落在同一个grid cell里的时候,却只能预测出来一个.比如上图左下角有9个圣诞老人,但是只预测出来5个.

反映到模型上,也就是说输入一个448*448*3图片,经过不断卷积,输出一个7*7*30的tensor. 这里的7*7就对应于上面说到的S*S.

那么这里的30怎么来的呢? 每一个grid cell预测2个框出来,每个框对应5个值,(x,y,w,h)和一个box confidence score.box confidence score反映了预测出来的box含有目标的可能性以及这个预测的box的准确性. yolov1预测出20个类别的概率. 所以30 = 2*5 + 20
我们用B指代每个cell预测出B个box,C指代每个cell预测出C个类别的概率.那么yolo的输出的tensor的shape则为(S,S,Bx5+C)
这就是yolo的核心思想了,构建一个CNN网络,得到一个(7,7,30)的tensor.

这样的话就得到了7*7*2个box,我们只保留box confidence score>某个值的box作为我们最终的预测box.

loss
损失函数分为3个部分
- box位置错误
- confidence错误(box确实包含目标的可能性错误)
- 类别概率错误
其实也就是衡量我们的这些预测值(x,y,w,h,confidence,classp1,classp2....)和真实值的差异
首先,我们预测出了B个box,我们只会用其中一个去计算loss.我们选取与ground-truth box的IOU最大的作为我们计算loss的box.ground-truth box怎么来,因为我们事先已经把数据标注好了,我们当然可以找到ground-truth box的中心位于某个grid cell内,如果有多个ground-truth box的中心都位于当前grid cell内,怎么办?计算每一个predict box和每一个ground-truth box的IOU,选取iou最大的作为相应的predict box,ground-truth box.这个方式带来的一个问题就是前面圣诞老人那个图说到的,当多个目标很密集,他们的中心都落在了同一个grid cell内的时候,yolov1只能检测出其中之一.
loss函数如下图所示:

loss函数的设计基于以下几种考虑
- 每一种loss都给相同的权重是不合适的,对于box位置错误给更多的权重,
目标检测YOLO进化史之yolov1的更多相关文章
- 小白也能弄得懂的目标检测YOLO系列之YOLOv1网络训练
上期给大家介绍了YOLO模型的检测系统和具体实现,YOLO是如何进行目标定位和目标分类的,这期主要给大家介绍YOLO是如何进行网络训练的,话不多说,马上开始! 前言: 输入图片首先被分成S*S个网格c ...
- 小白也能弄懂的目标检测YOLO系列之YOLOV1 - 第二期
上期给大家展示了用VisDrone数据集训练pytorch版YOLOV3模型的效果,介绍了什么是目标检测.目标检测目前比较流行的检测算法和效果比较以及YOLO的进化史,这期我们来讲解YOLO最原始V1 ...
- [目标检测]YOLO原理
1 YOLO 创新点: 端到端训练及推断 + 改革区域建议框式目标检测框架 + 实时目标检测 1.1 创新点 (1) 改革了区域建议框式检测框架: RCNN系列均需要生成建议框,在建议框上进行分类与回 ...
- 目标检测(五)YOLOv1—You Only Look Once:Unified,Real-Time Object Detection
之前的目标检测算法大都采用proposals+classifier的做法(proposal提供位置信息,分类器提供类别信息),虽然精度很高,但是速度比较慢,也可能无法进行end-to-end训练.而该 ...
- 第四节,目标检测---YOLO系列
1.R-CNN回顾 适应全卷积化CNN结构,提出全卷积化设计 共享ResNet的所有卷积层 引入变换敏感性(Translation variance) 位置敏感分值图(Position-sensiti ...
- 目标检测-yolo
论文下载:http://arxiv.org/abs/1506.02640 代码下载:https://github.com/pjreddie/darknet 1.创新点 端到端训练及推断 + 改革区域建 ...
- 目标检测YOLO算法-学习笔记
算法发展及对比: 17年底,mask-R CNN YOLO YOLO最大的优势就是快 原论文中流程,可以检测出20类物体. 红色网格-张量,在这样一个1×30的张量中保存的数据 横纵坐标中心点缩放到0 ...
- 【目标检测】YOLO:
PPT 可以说是讲得相当之清楚了... deepsystems.io 中文翻译: https://zhuanlan.zhihu.com/p/24916786 图解YOLO YOLO核心思想:从R-CN ...
- 第三十五节,目标检测之YOLO算法详解
Redmon, J., Divvala, S., Girshick, R., Farhadi, A.: You only look once: Unified, real-time object de ...
随机推荐
- 使用flink Table &Sql api来构建批量和流式应用(3)Flink Sql 使用
从flink的官方文档,我们知道flink的编程模型分为四层,sql层是最高层的api,Table api是中间层,DataStream/DataSet Api 是核心,stateful Stream ...
- hadoop的运行模式
概述 1)资料查询(官方网址) (1)官方网站: http://hadoop.apache.org/ (2)各个版本归档库地址 https://archive.apache.org/dist/hado ...
- 总结暨JAVAWEB学习开篇(一)
匆匆,距上一篇博客已经过去7月有余,遂作文一篇总结暨JAVAWEB学习开篇. 1. 啃英文新概念.在多方讨教英语大佬后改变学习方式,通过背诵英文书籍以及多听英文录音来学习,效果还不错(等真正有成效了跟 ...
- 使用Kubeadm创建k8s集群之部署规划(三十)
前言 上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群. 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲).因此 ...
- 《VR入门系列教程》之3---运动追踪与输入设备
运动追踪设备 第二种可以使人脑相信它真实处于虚拟世界的关键技术就是运动追踪技术,它可以通过追踪头部的运动状态实时更新渲染的场景.这与我们在真实世界中观看周围非常类似. 高速的惯性测量单元( ...
- 通过sysbench工具实现MySQL数据库的性能测试
1.背景 sysbench是一款压力测试工具,可以测试系统的硬件性能,也可以用来对数据库进行基准测试.sysbench 支持的测试有CPU运算性能测试.内存分配及传输速度测试.磁盘IO性能测试.POS ...
- Git实战
Git实战 1.Git特点 1.1.Git两大特点 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题. 分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器 ...
- mysql协议分析2---认证包
主人看到navicat和mysql在那嘻嘻哈哈,眉来眼去的,好不快乐,忽然也想自己写个程序,直接去访问Mysql,虽然现在已经有很多现成的中间件可以直接拿来用了,程序只要负责写sql语句就行了,但是主 ...
- SSM框架实现原理图(转)
- centos7更新yum库为aliyun库
1. 备份原来的yum源$sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2.设置ali ...
- 小白也能弄得懂的目标检测YOLO系列之YOLOv1网络训练