车辆行人检测学习笔记

1、目标检测&常见检测网络

目标检测:物体识别是要分辨出图片中有什么物体,输入是图片,输出是类别标签和概率。而目标检测不仅要检测图片中有什么物体,还要输出无异的外框(x,y,width,height)来定位物体的位置。

object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。

object detection要解决的问题就是物体在哪里以及是什么的整个流程问题。
然而,这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别。

目前学术和工业界出现的目标检测算法分成3类:
1.传统的目标检测算法:
Cascade + HOG/DPM + Haar/SVM以及上述方法的诸多改进、优化;
2.候选区域/框+深度学习分类:通过提取候选区域,并对相应区域进行以深度学习方法为主的
分类的方案,如:

•R-CNN(Selective Search + CNN + SVM)
•SPP-net(ROI Pooling)
•Fast R-CNN(Selective Search + CNN + ROI)
•Faster R-CNN(RPN + CNN + ROI)
3.基于深度学习的回归方法:YOLO/SSD等方法

评价标准

1、IOU(Intersection over Union)

IOU是一种测量在特定数据集中检测相应物体准确度的一个标准。
IoU是一个简单的测量标准,只要是在输出中得出一个预测范围(bounding box)的任务都可以用IoU来进行测量。
为了可以使IoU用于测量任意大小形状的物体检测,我们需要:
1、(人为在训练集图像中标出要检测物体的大概范围)
2、我们的算法得出的结果范围
也就是说,这个标准用于测量真实和预测之间的相关度,相关度越高,该值越高。


比如通过上图来理解一下IoU的作用,绿框是ground-truth bounding box,红框是预测值,他们两个很显然是有差距的,用原始加减的方式肯定是比较不了的,我们需要用交并比的方法,如下公式:

IoU实际上就是面积的相除,交集/并集,举个例子,IOU=0.53定义为bad,IOU=0.76定义为nice,IOU=0.98定义为prefect(自己根据实际情况定义)

2、TP TN FP FN

TP TN FP FN里面一共出现了4个字母,分别是T F P N。
T是True;
F是False;
P是Positive;
N是Negative。
TP(True Positives)意思就是被分为了正样本,而且分对了。
TN(True Negatives)
意思就是被分为了负样本,而且分对了,
FP(False Positives)意思就是被分为了正样本,但是分错了(事实上这个样本是负样本)。
FN(False Negatives)意思就是被分为了负样本,但是分错了(事实上这个样本是正样本)。

在mAP计算的过程中主要用到了,TP、FP、FN这三个概念。

precision(精确度)和recall(召回率)


TP是分类器认为是正样本而且确实是正样本的例子,FP是分类器认为是正样本但实际上不是正样本的例子吗,precision意思是分类器认为是正类并且确实是正类的部分占所有分类器认为是正类的比例。

TP是分类器认为是正样本而且确实是正样本的例子,FN是分类器认为是负样本但实际上不是负样本的例子,recall意思是分类器认为是正类并且确实是正类的部分占所有确实是正类的比例。

精度就是找得对,召回率就是找的全
下图代表的是准确率和召回率的一个应用:

蓝色的框是真实框。绿色和红色的框是预测抗,绿色的框是正样本,红色的框是负样本。
一般来讲,当预测框和真实框IOU>=0.5时,被认为是正样本。(0.5是自己设定的)

边框回归Bounding-Box regression算法(更多用在Faster RCNN中)

可以看到预测框和真实框还有差距,怎么解决这个问题呢,就出现了边框回归

边框回归是什么?

1、对于窗口一般使用四维向量(x,y,w,h)来表示,分别表示窗口的中心点坐标和宽高。
2、红色的框P代表原始的proposal;
3、绿色的框G代表目标的ground truth;
我们的目标是寻找一种关系使得输入原始的窗口P经过映射得到一个跟真实窗口G更加接近的回归窗口G^。
所以,边框回归的目的是:


边框回归怎么做?
比较简单的思路就是:平移+尺度缩放


意味着从长度单位转换为坐标单位

one-stage和two-stage

two-stage:two-stage算法会先使用一个网络生成proposal,如selective search和RPN网络,RPN出现后,ss方法基本就被摒弃了。RPN网络接在图像特征提取网络backbone后,会设置RPNloss(bbox
regression loss+classification loss)对RPN网络进行训练,RPN生成的proposal再送到后面的网络中进行更精细的bbox regression和classification。
**one-stage:**One-stage追求速度舍弃了two-stage架构,即不再设置单独网络生成proposal,而是直接在feature map上进行密集抽样,产生大量的先验框,如YOLO的网格方法。这些先验框没有经过两步处理,且框的尺寸往往是人为规定。

two-stage算法主要是RCNN系列,包括RCNN,Fast-RCNN,Faster-RCNN。之后的Mask-RCNN融合了Faster-RCNN架构、ResNet和FPN(Feature Pyramid Networks)backbone,以及FCN里的segmentation方法,在完成了segmentation的同时也提高了detection的精度。

one-stage算法最典型的是YOLO(后面又更新了YOLO2,YOLO3),该算法速度极快。

YOLO-You Only Look Once


YOLO算法实际上采用一个单独的CNN模型实现end-to-end的目标检测:
1、Resize成448*448,图片分割得到7 * 7网格(cell)
2、CNN提取特征和预测:卷积部分负责提取特征,全连接部分负责预测。
3、过滤Bbox(通过NMS:非极大值抑制算法)


置信度是指框属于某一类别的概率是多少。

关于标定框:
网络的输出是S * S*(5*B+C)的一个tensor(S-尺寸,B标定框个数,C-检测类别数,5-标定框信息)
—5分为4+1
—4代表标定框的位置信息。框的中心点(x,y),框的高宽h,w
—1代表每个标定框的置信度以及标定框的准确度信息

一般情况下,YOLO不会预测边界框中心的确切坐标,它预测:
(1)与预测目标的网格单元左上角相关的偏移;
(2)使用特征图单元的维度进行归一化的偏移。
例如:
以上图为例 ,如果中心的预测是(0.4,0.7),则中心在13*13特征图上的坐标是(6.4,6.7)(红色单元的左上角坐标是(6,6))
但是如果预测的x,y坐标大于1,比如(1.2,0.7)。那么预测的中心坐标是(7.2,6.7)
注意:该中心在红色单元右侧的单元中。这打破了YOLO背后的理论,因为如果我们假设红色框负责预测目标狗,那么狗的中心必须在红色单元中,不应该在它旁边的网格单元中。
因此,为了解决这个问题,我们对输出执行sigmoid函数,将输出压缩到区间0到1之间,有效确保中心处于执行预测的网格单元中。

每个标定框的置信度以及标定框的准确度信息:
左边代表包含这个标定框的格子里面是否有目标。有=1,没有=0
右边代表标定框的准确程度,右边的部分是把两个标定框(一个是ground truth,一个是预测的标定框)进行一个IOU操作,即两个标定框的交集比并集,数值越大,即标定框重合越多,越准确。


我们可以计算出各个标定框的类别置信度:表达的是该标定框中目标属于各个类别的可能性大小以及标定框匹配目标的好坏。

每个网络预测的class信息(表示的是每个类别的概率)和bounding box预测的confidence信息相乘,就得到每个bounding box的类别置信度。

实际上,这个公式的意义就是:第一项是每个网络预测的类别的概率,即一共20类,每一类的概率;第二项是检测标定框是否有目标;第三项是计算IOU。
看一下整体框图:


到这里,就得到7730的网格,之前都是卷积池化,基本的神经网络操作,那得到7730的网格是如何进行检测的呢,我们继续往下看:


把它看成小竖条,前10是两个标定框的x,y,w,h和置信度,后20个是类别数

一共有49条,每条都是30个数字,组成7730的tensor,接下来开始计算:
下图中,前5个标定框的一个置信度乘以后面蓝条的类别得到20个置信度,得到20个class scores for Bbox 1。每个小格有两个标定框,每个标定框会得到20个数,一共得到40个数



得到每个Bbox的类别置信度以后,设置阈值,过虑掉得分(类别置信度)低的boxes,然后做一个降序排列(按照同一类别降序排列,比如:第一次对狗的得分进行降序排列,第二次对猫,循环20次)对保留的boxes进行NMS处理,得到最终的检测结果。下图以狗为例

注意:下图取得是上图的一横行(红色虚线框)

上图每一个格都代表一个框,最大值的Bbox与比它小的非0值作比较IOU,去除冗余,IOU越接近,说明越冗余,IOU大于一定的阈值,则设为0,去除绿色的框

第一个值比较完,接下来递归,以下一个非0值的Bbox最大值继续比较IOU,如下图所示

最终,剩下n个框



分数为0也就是没有目标的直接跳过,大于0的找每个Bbox分数最大的

然后就可以找到正确的框

到这一步其实主要经历了这样几步:把图像通过卷积拆成好多份,比如7*7,进行Bounding box +置信度,实现了概率地图,最终得到一个框


YOLO的缺点:
(1)YOLO对相互靠的很近的物体(挨在一起且中点都落在同一个格子上的情况),还有很小的群体检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。
(2)测试图像中,当同一类物体出现不常见的长宽比和其他情况是泛化能力偏弱。

YOLO2

1、YOLO2使用了一个新的分类网络作为特征提取部分;
2、网络使用较多的33卷积核,在每一次池化操作后把通道数翻倍;
3、把1
1的卷积核置于33的卷积核之间,用来压缩特征;
4、使用batch normalization稳定模型训练,加速收敛;
5、保留了一个shortcut用于存储之前的特征;
6、YOLO2相比于YOLO1加入了先验框,最后输出的conv_dec的shape为(13,13,425):
(1)13
13是把整个图分为1313的网格用于预测。
(2)425可以分解为(85
5)。在85中,用于YOLO2常用的是COCO数据集,其中具有80个类;剩余的5指的是x,y,w,h和置信度。×5意味着预测结果包含5个框,分别对应5个先验框。

Dimension Clusters(维度聚类)

使用kmeans聚类获取先验框的信息

之前先验框都是手工设定的,YOLO2尝试统计出更符合样本中对象尺寸的先验框,这样就可以减少网络微调先验框到实际位置的难度。YOLO2的做法是对训练集中标注的边框进行聚类分析,以寻找尽可能匹配样本的边框尺寸。
聚类算法最重要的是选择如何计算两个边框之间的“距离”,对于常用的欧式距离,大边框会产生更大的误差,但我们关心的是边框的IOU。所以,YOLO2在聚类时采用以下公式来计算两个边框的“距离”。

到聚类中心的距离越小越好,但IOU值是越大越好,所以使用 1 - IOU;这样就保证距离越小,IOU值越大。具体实现方法如下:

YOLO3

YOLO3相比之前的YOLO1和YOLO2,主要改进方向:
1、使用了残差结构
2、提取多特征层进行目标检测,一共提取三个特征层,他的shape分为为(13,13,75),(26,26,75),(52,52,75)。最后一个维度为75是因为该图是基于voc数据集的,它的类为20种。YOLO3针对每一个特征层存在3个先验框,所以最后的维度为3*25
3、采用了upsampling2d设计

下面是它的效果图:

参考资料:https://ai-wx.blog.csdn.net/article/details/107509243
链接:https://pan.baidu.com/s/1R90nTPYR4IAmqy5k7QN3bg?pwd=p5kd 
提取码:p5kd

车辆行人检测学习笔记相关推荐

  1. 行人检测 读书笔记 综述

    行人检测 读书笔记 综述(1) 朱文佳-基于机器学习的行人检测关键技术研究 本文是博主对上海交通大学的朱文佳的硕士毕业论文的学习笔记,如果不当或理解错误之处,敬请指导,不胜感激. 绪论 1.1 典型应 ...

  2. [初窥目标检测]——《目标检测学习笔记(2):浅析Selective Search论文——“Selective Search for object recognition”》

    [初窥目标检测]--<目标检测学习笔记(2):浅析Selective Search论文--Selective Search for object recognition> 本文介绍 前文我 ...

  3. 《南溪的目标检测学习笔记》——模型预处理的学习笔记

    1 介绍 在目标检测任务中,模型预处理分为两个步骤: 图像预处理:基于图像处理算法 数值预处理:基于机器学习理论 关于图像预处理,请参考<南溪的目标检测学习笔记>--图像预处理的学习笔记 ...

  4. 《南溪的目标检测学习笔记》——COCO数据集的学习笔记

    1 COCO数据集 COCO数据集下载链接:COCO_download 1.1 数据概览 数据集大小 train: 118287张 train+val: 123287张 val: 5000张 目标数量 ...

  5. 《南溪的目标检测学习笔记》的笔记目录

    1 前言 这是<南溪的目标检测学习笔记>的目录~ 2 学习目标检测的思路--"总纲" <南溪的目标检测学习笔记>--目标检测的学习笔记 我在这篇文章中介绍了 ...

  6. 《南溪的目标检测学习笔记》——目标检测模型的设计笔记

    1 南溪学习的目标检测模型--DETR 南溪最赞赏的目标检测模型是DETR, 论文名称:End-to-End Object Detection with Transformers 1.2 decode ...

  7. 《南溪的目标检测学习笔记》——夏侯南溪的CNN调参笔记,加油

    1 致谢 感谢赵老师的教导! 感谢张老师的指导! 2 调参目标 在COCO数据集上获得mAP>=10.0的模型,现在PaddleDetection上的Anchor-Free模型[TTFNet]的 ...

  8. 9月6日关键点检测学习笔记——人脸和手部特征点检测

    文章目录 前言 一.干扰因素 1.主动因素 2.固有因素 二.特征点检测 1.PFLD 2.LLCV 三.人脸比对 1.人脸 1:1 2.人脸 1:n 3.人脸 1:N 4.人脸 M:N 四.高清分辨 ...

  9. 9月1日目标检测学习笔记——文本检测

    文章目录 前言 一.类型 1.Top-Down 2.Bottom-up 二.基于深度学习的文本检测模型 1.CTPN 2.RRPN 3.FTSN 4.DMPNet 5.EAST 6.SegLink 7 ...

最新文章

  1. VTK:几何对象之OpenVRSphere
  2. hadoop中如何动态更新集群队列和容量
  3. c++ stl stack_C ++ STL中的stack :: top()函数
  4. Spring Boot集成RabbitMQ发送接收JSON
  5. 为什么感觉赚100万很难?
  6. SQL 宝典(本人总结供学习使用)
  7. 你真的了解VRP操作系统吗?华为网络设备的文件系统、设备基础管理、命令行基础一次学会
  8. 记一次贴吧签到脚本的编写
  9. numpy结构化数组
  10. 程序员的自我修养 - 读书笔记文字版
  11. 企业服务器固态硬盘寿命,SSD固态硬盘使用寿命短?_企业存储技术与评测-中关村在线...
  12. python早读读后感_《学习Python》读后感摘抄
  13. 【JZOJ4598】准备食物
  14. Python自动化办公:openpyxl绘制图表
  15. 读书札记-曾国藩陈景润
  16. 成功入职字节跳动,分享我的八面面经心得!
  17. NCTF2020 web 你就是我的master吗
  18. 电传输之POE供电的介绍
  19. 张勋说:钢渣处理和综合利用的原因及效益分析
  20. linux 删除网卡配置文件,linux-如何通过命令行/ shell脚本从etc / wpa_supplicant / wpa_supplicant.conf中删除网络配置文件...

热门文章

  1. 解密短信木马为何屡杀不尽
  2. beanstalkd介绍
  3. 计算机打开网络连接,win7电脑三种打开网络连接上网的方法
  4. pytorch 模型保存方式(.pt, .pth, .pkl)
  5. spring事物(转载:http://www.cnblogs.com/ysxlin/archive/2008/06/06/1215300.html)
  6. 《管家老婆》软件介绍
  7. 小米CyberOne,用于营销的人型机器人
  8. 《率土之滨论文研赏大赛》参赛文章
  9. GDC翻译:Far Cry 5 的程序化世界生成(第四部分:总结和QA)
  10. cpu虚拟化怎么开启(华硕主板cpu虚拟化怎么开启)