快速理解YOLO目标检测
YOLO(You Only Look Once)论文
近些年,R-CNN等基于深度学习目标检测方法,大大提高了检测精度和检测速度。

例如在Pascal VOC数据集上Faster R-CNN的mAP达到了73.2。而YOLO和SSD在达到较高的检测精度的同时,检测速度都在40FPS以上。这里主要对YOLO做简单介绍。

整个YOLO的网络结构如图,前面20层使用了改进的GoogleNet,得到14×14×1024的tensor,接下来经过4个卷积层分别进行3×3的卷积操作和1×1的降维操作,最后经过两个全连接层后输出为7×7×30的tensor。检测目标就能从7×7×30的tensor中得到。

作者首先取出前面的20层网络,另外再加上一个average-pooling层和一个全连接层,在ImageNet训练集上进行图像分类任务的欲训练,top-5达到88%的准确度。然后将经过图像分类训练的前20层网络加上后面的网络层进行检测任务的训练。
7×7×30 tensor的解释:
其实这里的7×7并不是将输入图像划分为7×7的网格,实际上指经过多个卷积层处理过后的特征map是7×7大小的,而且其中的每个cell是互相有重叠的,但是为了便于直观理解,直接将原始图像用7×7的网格进行划分。可以看到每个cell向量的前5维分别代表了一个检测框的x坐标,y坐标,宽度和高度,检测框中有目标物体的置信度(P(Object) ∗ IOU)。

在论文中每个cell有两个检测框,6到10维向量代表了另外一个检测框的x坐标,y坐标,宽度和高度,检测框中有目标物体的置信度。


cell还剩下20维向量,代表这个cell中的物体属于20个类别的概率值。将cell两个检测框的置信度分别乘以20类别的概率值。




最后得到了7×7×2=98个检测框的20个类别的概率值。

接下来要从候选的检测框中找出最后的目标框:

对每个类别,进行阈值比较、降序排列、对有重叠的候选框使用非极大值抑制(NMS)操作。



最后候选框的最终分数得到最终的类别和分数:

标出检测框:

关于非极大值抑制(NMS):

用bbox_max代表分数最大的候选框,将其与其他候选框bbox_cur进行比较,如果IoU(bbox_max,bbox_cur)>0.5,将候选框bbox_cur的分数置为0。
第一轮循环后,由于橙色框(bbox_max)和绿色框的重叠度大于0.5,所以将绿色候选框的分数置0。

第二轮循环,将剩下的第二大分数的候选框设为bbox_max(图中的蓝色框)

同样的道理,由于蓝色框(bbox_max)和粉色框的重叠度大于0.5,所以将粉色候选框的分数置0。

使用非极大值抑制循环结束后,很多情况下,都只有少数的几个候选框大于0。
关于Intersect over Union (IoU)

关于Yolo v2
后来作者对YOLO进行了改进,公布了YOLO v2,论文
在精度(73.4 mAP on Pascal voc)和速度两个方面都有提高,并且提出了能够检测9000类物体的方法。
具体改进的地方有:
- 增加了batch normalization
- 在ImageNet上的预训练使用224×224和448x448两种尺寸的图像。
- 用Faster-RCNN类似的anchor boxes ,代替7×7grid-cell。
- 用kmeans方法得到box形状,代替人工选择box形状。
- 在ImageNet和MS-COCO数据集上进行训练。
- 提出了能够在分类数据集上训练检测任务的方法。
- 使用WordTree结合多种不同标签的数据。
参考:
deepsystems.io
快速理解YOLO目标检测的更多相关文章
- Python实现YOLO目标检测
作者:R语言和Python学堂 链接:https://www.jianshu.com/p/35cfc959b37c 1. 什么是目标检测? YOLO目标检测的一个示例 啥是目标检测? 拿上图 (用YO ...
- CNN之yolo目标检测算法笔记
本文并不是详细介绍yolo工作原理以及改进发展的文章,只用做作者本人回想与提纲. 1.yolo是什么 输入一张图片,输出图片中检测到的目标和位置(目标的边框) yolo名字含义:you only lo ...
- Keras+Yolo 目标检测
参考:https://www.cnblogs.com/tensorflownews/p/8922359.html Github:https://github.com/qqwweee/keras-yol ...
- TensorFlow + Keras 实战 YOLO v3 目标检测图文并茂教程
运行步骤 1.从 YOLO 官网下载 YOLOv3 权重 wget https://pjreddie.com/media/files/yolov3.weights 下载过程如图: 2.转换 Darkn ...
- 第三十六节,目标检测之yolo源码解析
在一个月前,我就已经介绍了yolo目标检测的原理,后来也把tensorflow实现代码仔细看了一遍.但是由于这个暑假事情比较大,就一直搁浅了下来,趁今天有时间,就把源码解析一下.关于yolo目标检测的 ...
- [炼丹术]YOLOv5目标检测学习总结
Yolov5目标检测训练模型学习总结 一.YOLOv5介绍 YOLOv5是一系列在 COCO 数据集上预训练的对象检测架构和模型,代表Ultralytics 对未来视觉 AI 方法的开源研究,结合了在 ...
- 理解 YOLO
YOLO: 1. YOLO的网络结构 YOLO v1 network (没看懂论文上的下图,看下面这个表一目了然了) 24层的卷积层,开始用前面20层来training, 图片是224x224的,然后 ...
- 使用Caffe完成图像目标检测 和 caffe 全卷积网络
一.[用Python学习Caffe]2. 使用Caffe完成图像目标检测 标签: pythoncaffe深度学习目标检测ssd 2017-06-22 22:08 207人阅读 评论(0) 收藏 举报 ...
- 目标检测中常提到的IoU和mAP究竟是什么?
看完这篇就懂了. IoU intersect over union,中文:交并比.指目标预测框和真实框的交集和并集的比例. mAP mean average precision.是指每个类别的平均查准 ...
随机推荐
- Angular Schematics 三部曲之 Add
前言 因工作繁忙,差不多有三个月没有写过技术文章了,自八月份第一次编写 schematics 以来,我一直打算分享关于 schematics 的编写技巧,无奈还是拖到了年底. Angular Sche ...
- shell 概览
shell能做什么: 1. 自动化批量系统初始化程序(update,软件安装,时区设置,安全策略...) 2. 自动化批量软件部署程序(LAMP,LNMP,Tomcat,LVS,Nginx) 3. 管 ...
- vim的常用指令(脑图)
将正在编辑的文件另存新文件名 :w newfilename 在正在编辑的文件中,读取一个filename :r filename 做了很多编辑工作,想还原成原来的文件内容 :e! 我在v ...
- TensorFlow——TensorBoard可视化
TensorFlow提供了一个可视化工具TensorBoard,它能够将训练过程中的各种绘制数据进行展示出来,包括标量,图片,音频,计算图,数据分布,直方图等,通过网页来观察模型的结构和训练过程中各个 ...
- 1、Vue 实战-入门篇
先决条件:需要 Node.js . npm 基础. 如果没有基础看先看下面简单的两点介绍. 1.npm 命令介绍. 1.所有命令 -h 可以查看.也可以从官网查 docs,结果如下. --help ...
- Spring Boot 2.X(十九):集成 mybatis-plus 高效开发
前言 之前介绍了 SpringBoot 整合 Mybatis 实现数据库的增删改查操作,分别给出了 xml 和注解两种实现 mapper 接口的方式:虽然注解方式干掉了 xml 文件,但是使用起来并不 ...
- bzoj 2683 CDQ分治
题目描述 你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作: 命令 参数限制 内容 1 x y A 1<=x,y<=N,A是正整数 将格子x,y里的数 ...
- 1.Java和Python的选择
我认为高级语言分为Java/c系列和其他. Java:1995年,让程序员设计一些大型分布式复杂应用. Python:1991年,面向系统管理.科研教育.等非程序员群体用的多. C系列语言:奠定了现在 ...
- 关于selenium无法在chrome中自动播放flash的问题
最近用selenium写个小脚本,遇到flash不能自动播放问题 我遇到的情况,直接提示 请确认是否安装flash,其实已经安装,点击下载flash,然后提示是否允许. 整了好久,发现终极方法: ## ...
- Installing PyCharm
Installing PyCharm| # ...