本文并不是详细介绍yolo工作原理以及改进发展的文章,只用做作者本人回想与提纲。

1.yolo是什么

  输入一张图片,输出图片中检测到的目标和位置(目标的边框)

yolo名字含义:you only look once

对于yolo这个神经网络:

(Assume  s*s栅格, n类可能对象, anchor box数量为B)

Input       448*448*3

Output     s*s*(5 * B +n)的tensor

2.CNN目标检测之yolo

在目标检测领域,DPM方法采用滑动窗口检测法将原图片切出一小块一小块,先选区再卷积提取特征,先整张图卷积提取特征再选区,然后投入神经网络进行图像分类操作处理。RCNN方法采用region proposal来生成整张图像中可能包含待检测对象的可能的bounding boxes然后用分类器评估这些boxes,再post processing来改善bounding box并消除重复的目标,最后基于整个场景中其他物体重新对boxes打分(这些环节都是分开训练)。其实都是把目标检测问题转化成了一个分类问题。2015年yolo论文公开,提出了一种新思路,将目标检测问题转化成了一个regression problem。Yolo 从输入的图像,仅仅经过一个神经网络直接得到bounding box和每个bounding box所属类别的概率。正因为整个过程下来只有一个神经网络,所以它可以进行端到端的优化。

Yolo优缺点:速度极快;在背景上预测出不存在物体的概率要低;能够学习抽象的特征,可用于艺术画像等。但定位偶尔出现错误。

3.Unified Detection

先分s*s个栅格;

每一个栅格预测B个bounding boxes以及每个bboxes的confidence score。

Confidence score =P(Object) * IOUtruth_pred

若bbox包含物体,则P(Object)=1,否则为0

每一个栅格预测n个条件类别概率P(Classi|Object)——在一个栅格包含一个Object的前提下它属于某个类的概率。为每一个栅格预测一组类概率。

在测试的非极大值抑制阶段,对于每个栅格:将每个bbox的置信度和类概率相乘,

class-specific confidence scores=Confidence * P(Classi|Object) = P(classi) * IOU,

结果既包含了类别信息又包含了对bbox值的准确度。然后设置一个阈值,把低分的滤掉,剩下的投给非极大值抑制,然后得到最终标定框。

4.模型训练

  首先预训练一个分类网络。在 ImageNet 1000-class competition dataset上预训练一个分类网络,这个网络是Figure3中的前20个卷机网络+average-pooling layer(平均池化层)+ fully connected layer(全连接层) (此时网络输入是224*224)。

  然后训练我们的检测网络。转换模型去执行检测任务,《Object detection networks on convolutional feature maps》提到说在预训练网络中增加卷积和全链接层可以改善性能。在作者的例子基础上添加4个卷积层和2个全链接层,随机初始化权重。检测要求细粒度的视觉信息,所以把网络输入把224*224变成448*448。

5.损失函数

CNN之yolo目标检测算法笔记的更多相关文章

  1. 目标检测算法YOLO算法介绍

    YOLO算法(You Only Look Once) 比如你输入图像是100x100,然后在图像上放一个网络,为了方便讲述,此处使用3x3网格,实际实现时会用更精细的网格(如19x19).基本思想是, ...

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

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

  3. 目标检测算法的总结(R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD、FNP、ALEXnet、RetianNet、VGG Net-16)

    目标检测解决的是计算机视觉任务的基本问题:即What objects are where?图像中有什么目标,在哪里?这意味着,我们不仅要用算法判断图片中是不是要检测的目标, 还要在图片中标记出它的位置 ...

  4. (六)目标检测算法之YOLO

    系列文章链接: (一)目标检测概述 https://www.cnblogs.com/kongweisi/p/10894415.html (二)目标检测算法之R-CNN https://www.cnbl ...

  5. 基于候选区域的深度学习目标检测算法R-CNN,Fast R-CNN,Faster R-CNN

    参考文献 [1]Rich feature hierarchies for accurate object detection and semantic segmentation [2]Fast R-C ...

  6. 基于深度学习的目标检测算法:SSD——常见的目标检测算法

    from:https://blog.csdn.net/u013989576/article/details/73439202 问题引入: 目前,常见的目标检测算法,如Faster R-CNN,存在着速 ...

  7. Python实现YOLO目标检测

    作者:R语言和Python学堂 链接:https://www.jianshu.com/p/35cfc959b37c 1. 什么是目标检测? YOLO目标检测的一个示例 啥是目标检测? 拿上图 (用YO ...

  8. 深度剖析目标检测算法YOLOV4

    深度剖析目标检测算法YOLOV4 目录 简述 yolo 的发展历程 介绍 yolov3 算法原理 介绍 yolov4 算法原理(相比于 yolov3,有哪些改进点) YOLOV4 源代码日志解读 yo ...

  9. 如何使用 pytorch 实现 SSD 目标检测算法

    前言 SSD 的全称是 Single Shot MultiBox Detector,它和 YOLO 一样,是 One-Stage 目标检测算法中的一种.由于是单阶段的算法,不需要产生所谓的候选区域,所 ...

随机推荐

  1. Drop Table对MySQL的性能影响分析

    [问题描述] 最近碰到有台MySQL实例出现了MySQL服务短暂hang死,表现为瞬间的并发线程上升,连接数暴增. 排查Error Log文件中有page_cleaner超时的信息,引起我们的关注: ...

  2. JavaScript的“true/false && expression”逻辑表达式

    true/false && expression 在学习react的过程中,遇到了如下一个方法: function Mailbox(props) { const unreadMessa ...

  3. D-Distance_2019牛客暑期多校训练营(第八场)

    题目链接 Distance 题意 1<=nmh,q<=1e5 q个操作 1 x y z往坐标里加入一个点 2 x y z查询距离该点最近的点的距离(曼哈顿距离) 题解 做法一 将要插入的点 ...

  4. UVA - 10480 Sabotage 最小割,输出割法

    UVA - 10480 Sabotage 题意:现在有n个城市,m条路,现在要把整个图分成2部分,编号1,2的城市分成在一部分中,拆开每条路都需要花费,现在问达成目标的花费最少要隔开那几条路. 题解: ...

  5. poj 3026 Borg Maze(最小生成树+bfs)

    题目链接:http://poj.org/problem?id=3026 题意:题意就是从起点开始可以分成多组总权值就是各组经过的路程,每次到达一个‘A'点可以继续分组,但是在路上不能分组 于是就是明显 ...

  6. HDU dp递推 母牛的故事 *

    母牛的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  7. 漫谈JavaScript中的提升机制(Hoisting)

    前言 刚接触到JavaScript的时候,便知道JavaScript是按顺序执行的,是如浏览器的解析DOM树一样的流程,解析DOM结构的时候,如果遇到JS脚本或者外联脚本便会停止解析,继续下载脚本之后 ...

  8. Java代理设计模式(Proxy)的几种具体实现

    Proxy是一种结构设计模型,主要解决对象直接访问带来的问题,代理又分为静态代理和动态代理(JDK代理.CGLIB代理. 静态代理:又程序创建的代理类,或者特定的工具类,在平时开发中经常用到这种代理模 ...

  9. Map.Entry 接口

    Map.Entry Map 接口下面的 Entry 接口. 该接口,定义一个键值对实体接口.Map.entrySet 方法返回的 Set 集合中的实体就是实现这个 它.只有一种方法可以获得 Map.E ...

  10. Junit测试Controller(MockMVC使用),以及传输@RequestBody数据解决办法

    转自:http://www.importnew.com/21153.html 一.单元测试的目的 简单来说就是在我们增加或者改动一些代码以后对所有逻辑的一个检测,尤其是在我们后期修改后(不论是增加新功 ...