本文并不是详细介绍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. 82天突破1000star,项目团队梳理出软件开源必须注意的8个方面

    近期,我们在GitHub上开源了微服务任务调度框架SIA-TASK,82天,收获了1000+个star!由于这是SIA团队第一次开源项目,开源的相关工作,团队之前并没有太多的经验,因此我们特别整理了本 ...

  2. gym/102021/J GCPC18 模拟拼图

    模拟拼图 题意: 给定n块拼图,每个拼图为四方形,对应四条边有四个数字,如果为0,表示这个边是在边界的,其他数字表示和另一个拼图的一条边相接.保证每个非零数只出现两次. 思路: 模拟,但是要注意几个情 ...

  3. HDU - 2824 The Euler function 欧拉函数筛 模板

    HDU - 2824 题意: 求[a,b]间的欧拉函数和.这道题卡内存,只能开一个数组. 思路: ϕ(n) = n * (p-1)/p * ... 可利用线性筛法求出所有ϕ(n) . #include ...

  4. codeforces C. Sonya and Problem Wihtout a Legend(dp or 思维)

    题目链接:http://codeforces.com/contest/713/problem/C 题解:这题也算是挺经典的题目了,这里附上3种解法优化程度层层递进,还有这里a[i]-i<=a[i ...

  5. CodeM 资格赛 B 可乐 思维

      分析: 我们假设购买一种可乐p瓶,我们可以得到期望:p*(m/n*a[i]+(n-m)/n*b[i]),由这个式子我们可以看出唯一的变量是i,所以可以遍历i找出式子的最大值 #include &l ...

  6. codeforces 465 C. No to Palindromes!(暴力+思维)

    题目链接:http://codeforces.com/contest/465/problem/C 题意:给出一个不存在2个或以上回文子串的字符串,全是由小写字母组成而且字母下表小于p,问刚好比这个字符 ...

  7. Go语言标准库之strconv

    Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换. strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数: Atoi().Itia().pa ...

  8. Elasticsearch在Java中的增删改查

    public class ElasticAPI { private static RestClient restClient; static { restClient=RestClient.build ...

  9. HashMap和ConcurrentHashMap的区别,HashMap的底层源码

    HashMap本质是数组加链表,根据key取得hash值,然后计算出数组下标,如果多个key对应到同一个下标,就用链表串起来,新插入的在前面. ConcurrentHashMap在HashMap的基础 ...

  10. Windows10 系统更新之后找不到输入法

    是因为 , 系统更新之后 , 系统自带的输入法没有更新好 , 过个一两天,系统会自动修复. 简单解决办法是 , Ctrl+Alt+delete 打开任务管理器, 在进程中,按CPU大小排序,找到输入法 ...