计算机视觉之目标检测

前言

  在之前的文章中,我们已经实现了局域网视频流传输功能,朱老师的海思9季课程也结束了,一开始说的剩下的两季内容朱老师不做了,准备放到后边其他系列课程,所以暂时我也无法学习。不过我准备自己完成一些功能,接下来的工作就是:如何充分利用视频流中的图像实现更多的功能,我个人的打算是使用视频流中的图像在上位机 (电脑端) 进行目标检测,实现诸如垃圾分类,物体识别等功能。

卷积神经网路入门:
https://zhuanlan.zhihu.com/c_141391545
https://zhuanlan.zhihu.com/p/31249821

了解目标检测(推荐):https://www.bilibili.com/video/BV1m5411A7FD

一、目标检测的基本概念

1、目标检测(物体检测):Object Detection

  目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割。它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。

  尤其是在复杂场景中,需要对多个目标进行实时处理时,目标自动提取和识别就显得特别重要。

  随着计算机技术的发展和计算机视觉原理的广泛应用,利用计算机图像处理技术对目标进行实时跟踪研究越来越热门,对目标进行动态实时跟踪定位在智能化交通系统、智能监控系统、军事目标检测及医学导航手术中手术器械定位等方面具有广泛的应用价值。

---------以上内容来自于百度百科

2、目标检测算法分类

(1)两步走的目标检测

1、先找出候选的一些区域
2、对区域进行调整,分类

在这里插入图片描述
代表算法:R-CNN, SPP-net, Fast R-CNN, Faster R-CNN

(2)端到端的目标检测

>采用一个网路一步到位
>输入一个图片,直接输出有那些物体,物体在什么位置

在这里插入图片描述
代表算法:YOLO、SSD

3、目标检测的任务

在这里插入图片描述
(1)分类的损失和优化
在训练的时候需要计算每个样本的损失,那么CNN做分类的时候使用softmax函数计算结果,损失为交叉熵损失。
在这里插入图片描述
(2)常见CNN模型
参考学习:https://blog.csdn.net/lianghe77/article/details/104486543
在这里插入图片描述
(3)分类

>N个类别
>输入:图片
>输出:类别标签
>评估指标:Accuracy(准确性,精度)

(4)定位

>N个类别
>输入:图片
>输出:物体的位置坐标
>主要评估指标:IOU(交并比,IoU 作为目标检测算法性能 mAP 计算的一个非常重要的函数。)

iou参考了解:https://www.pianshen.com/article/964158954/

在这里插入图片描述
  在分类的时候我们直接输出各个类别的概率,如果再加上定位的话,我们可以考虑在网络的最后输出加上位置信息。

  物体定位的简单实现思路:增加一段全连接输出四个位置,做损失计算。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
summary:

输入:图片
输出:物体的类别及坐标

(5)两种Bounding box(最小外接矩形)名称
在这里插入图片描述
一般在目标检测中:我们预测的框有可能很多个,真实框GT也有很多个。
在这里插入图片描述
 定位是找到检测图像中带有一个给定标签的单个目标
 检测是找到图像中带有给定标签的所有目标

二、目标检测数据集

参考学习(必看):https://blog.csdn.net/liuxiao214/article/details/80552026

1、PASCAL VOC数据集

下载链接: http://host.robots.ox.ac.uk/pascal/VOC/voc2012/

PASCAL VOC挑战赛在2005年至2012年间展开。
PASCAL VOC 2007: 9963张图像,24640个标注;
PASCAL VOC 2012: 11530 张图像,27450个标注

该数据集有20个分类:
• Person: person
• Animal: bird, cat, cow, dog, horse, sheep
• Vehicle: aeroplane, bicycle, boat, bus, car, motorbike, train
• Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor

2、MS COCO数据集

下载链接:http://cocodataset.org/

MS COCO的全称是Microsoft Common Objects in Context,起源于是微软于
2014年出资标注的Microsoft COCO数据集,与ImageNet 竞赛一样,被视为是计
算机视觉领域最受关注和最权威的比赛之一。

在ImageNet竞赛停办后,COCO竞赛就成为是当前目标识别、检测等领域的一个最
权威、最重要的标杆,也是目前该领域在国际上唯一能汇集Google、微软、
Facebook以及国内外众多顶尖院校和优秀创新企业共同参与的大赛。

MSCOCO主要是为了解决detecting non-iconic views of objects(对应常说的
detection), contextual reasoning between objects and the precise 2D
 localization of objects(对应常说的分割问题) 这三种场景下的问题。

参考学习:https://zhuanlan.zhihu.com/p/362049720

三、R-CNN算法

  R-CNN的全称是Region-CNN,是第一个成功将深度学习应用到目标检测上的算法。R-CNN基于卷积神经网络(CNN),线性回归,和支持向量机(SVM)等算法,实现目标检测技术。

1、问题引出

在这里插入图片描述
对于多个目标的情况,就不能以固定个数输出物体的位置值。

2、目标检测-Overfeat模型

(1)滑动窗口
在这里插入图片描述

>首先定义若干个大小窗口,k个
>k中每个窗口都要滑动图片,每个窗口滑动M次
>共有M x K 个结果

在这里插入图片描述
  overfeat模型是一种暴力穷举的方式,会消耗大量的计算力量,并且由于窗口大小问题可能会造成效果不准确。但是提供了一种解决目标检测问题的思路。

3、目标检测-R-CNN模型

在CVPR 2014年中Ross Girshick提出R-CNN。
(1)完整的R-CNN结构
  不使用暴力方法,而是使用候选区域方法(region proposal method),创建目标检测的区域改变了图像领域实现物体检测的模型思路,R-CNN是以深度神经网络为基础的物体检测的模型,其在当时以优异的性能令世人瞩目,以R-CNN为基点,后续的SPPNet, Fast R-CNN, Faster R-CNN模型都是照着这个物体检测思路。
在这里插入图片描述
在这里插入图片描述

R-CNN步骤:
1、对于一张图片,找出默认2000个候选区域
22000个候选区域做大小变化,输入AlexNet当中,得到特征向量[2000, 4096]
3、经过20个类别的SVM分类器,对2000个候选区域做判断,得到[2000, 20]得分矩阵
42000个候选区域进行NMS(非极大值抑制),取出不好的、重叠度高的一些区域,得到剩下
的分数高、结果好的矩阵
5、修正候选框,bbox的回归微调

(2)候选区域(ROI)
在这里插入图片描述
合并过程会有一个终止条件
在这里插入图片描述
   选择性搜索在一张图片上提取出来的2000个候选区域,由于长宽不定,不能直接输入AlexNet,2000个候选区域需进行大小变换

(3)CNN网络提取特征
在这里插入图片描述
(4)特征向量训练分类器SVM
在这里插入图片描述
每个SVM分类器做的事情:判断2000个候选区域是某类别,还是背景

(5)非极大值抑制抑制
在这里插入图片描述
粉色框是真实物体的位置(ground-truth)。
在这里插入图片描述
在这里插入图片描述
上边图片中输出的框A,B是我们选择性搜索后得到的,但是我们筛选出的位置不一定真的就特别准确,需要对A,B进行最后的修正。

(6)修正候选区域
在这里插入图片描述
在这里插入图片描述

4、R-CNN总结

在这里插入图片描述

四、目标检测的评价指标

1、IOU交并比(0~1之间的值)

在这里插入图片描述
表示两个区域的重叠程度overlap:候选区域和标定区域的IOU值,是位置上的考量
在这里插入图片描述
通常Correct:类别正确 且 IOU > 0.5

2、平均精确率(mean average precision)

出于分类准确的考量。

• AP (Average Precision)
• mAP (mean Average Precision)在这里插入图片描述
• AP衡量的是学习出来的模型在每个类别上的好坏
• mAP衡量的是学出的模型在所有类别上的好坏。mAP就是取所有类别上AP的平均值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述第一位T/F: 表示预测的对错
第二位P/N: 表示预测的结果

3、性能指标

(1)检测精度

• Precision, Recall, F1 score
• IoU (Intersection over Union)
• P-R curve (Precison-Recall curve)
• AP (Average Precision)mAP (mean Average Precision)

(2)检测速度

• 前传耗时:从输入一张图像到输出最终结果所消耗的时间,包括前处理耗时(如图
像归一化)、网络前传耗时、后处理耗时(如非极大值抑制)
• 每秒帧数 FPS (Frames Per Second):每秒钟处理的图像数量
• 浮点运算量(FLOPS):处理一张图像所需要的浮点运算数量, 跟具体软硬件没有关系,
可以公平地比较不同算法之间的检测速度。

本文章参考了百度百科,他人技术文章以及哔哩哔哩免费教程,综合整理而来,如有侵权联系删除,小白一个,欢迎大家指导交流!

版权声明:本文为CSDN博主「小嵌同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45842280/article/details/123099082

小嵌同学

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

目标检测AP计算

一、查全率和召回率计算 针对目标检测查全率和召回率计算: 其中GT表示ground truth的数量。 二、AP计算 假如目标类别为Dog,有5张照片,共包含7只Dog,也即GT(GroundTruth)数量为

从0开始实现目标检测——实践篇

根据上一篇《从0开始实现目标检测——原理篇》的讲述,我们选择了YOLOv3作为模型,那么本篇文章将继续接着上篇的内容,自己动手基于YOLOv3实现模型训练和mAP的计算。 在自己动手的这个过程中&#xf