计算机视觉之旅-进阶-物体检测

article/2025/10/16 11:57:40

1. 物体检测概念

计算机视觉中的物体检测是指在图像中检测和定位特定目标对象,它是计算机视觉中一个基本而又重要的问题。

物体检测的目的就是在输入图像中检测所关心的目标对象,并给出其边界框和类别信息。典型的输出包括:

- 边界框:表示目标对象在图像中的位置和大小。常用的边界框有四点坐标形式(左上、右上、右下、左下)和中心宽高形式(中心点坐标、宽度、高度)。

- 类别信息:表示检测到的目标对象的类别,比如人、车、猫、椅子等。

- 置信度:表示检测结果的可信度,一般为0-1之间的数值。

物体检测在许多领域都有重要应用,比如:

- 自动驾驶:检测车辆、行人、交通灯等

- 视频监控:检测异常物体和可疑人员

- 图像搜索:根据检测到的物体进行图像索引和搜索

- 机器人视觉:导航和操控时对环境中物体进行检测

 4a15bcab27ea4513a58b20bbe5acc512.jpg

 

2. 物体检测方法

计算机视觉中的物体检测通常分为基于图像分类和基于置信度预测两种方法。

2.1. 基于图像分类的检测

先利用图像分类模型判断输入图像中是否包含某个物体,如果包含则进一步定位物体位置。典型的方法有RCNN系列,比如Fast RCNN, Faster RCNN等。这类方法先利用选取的区域提议(Region Proposals)生成可能包含物体的区域,然后利用CNN来分类这些区域并修正边界框。

2.1.1 图像分类方法步骤

基于图像分类的物体检测方法主要分为两步:

第一步、生成区域提议(Region Proposals)

首先在输入图像中提出可能包含物体的区域候选框,这一步通常使用一些ati区域提议方法完成,如Selective Search、Edge Boxes等。这些方法会生成上百至上千个候选框。

第二步、区域分类和边界框回归

然后利用CNN对每个候选框进行分类判断是否包含物体以及类别,同时也进行边界框的修正。

 

这类方法的代表工作有RCNN系列,包括:

- RCNN

将每个候选框调整到统一大小,输入CNN进行分类和边框回归。但是重複计算量太大。

- Fast RCNN

利用RoI Pooling层在特征图上进行区域整合,然后进入全连接层分类和回归,减少计算量。

- Faster RCNN

在Fast RCNN的基础上,使用RPN网络生成候选框,进一步减少计算量。这是基于分类的检测方法的经典工作。

 

具体的网络结构包括:

- 特征提取网络

通常使用预训练的CNN模型(如VGG16、ResNet等)来提取输入图像的特征图。

- RPN网络

对特征图使用小的卷积网络生成多个矩形候选框,并计算每个框属于前景或背景的概率。

- RoI Pooling层

将每个候选框在特征图上进行max pooling,得到固定大小的特征表示。

- 两系列全连接层

一系列用于分类每个候选框属于各个类别的概率;另一系列用于回归生成更精确的候选框坐标。

- 非极大值抑制

移除大量重叠的候选框,只保留类别概率最大的框。

 

这个方法通过一步步的优化,大大减少了RCNN中冗余的计算,使得物体检测变得非常高效。Faster RCNN至今仍是基于分类的检测方法的最佳基线,也是实际工业应用中最广泛的方法之一。

2.1.2. 图像分类检测示例

这里给出一个基于TensorFlow实现的Faster RCNN的代码示例。

 python
 # 输入图像
 image = tf.read_file(...) 
 image = tf.image.decode_image(image)
 
 # 特征提取
 feature_extractor = ResNet101(...) 
 feature_maps = feature_extractor(image)
 
 # RPN生成候选框
 rpn = ...
 anchors = rpn.generate_anchors()
 proposal_boxes, proposal_scores = rpn.propose(feature_maps)
 
 # RoI Pooling  
 roi_pooling = RoiPoolingLayer(7, 7)
 pooled_feature_maps = roi_pooling(feature_maps, proposal_boxes)
 
 # 分类和回归分支
 classification = FullyConnected(n_classes)  
 class_predictions = classification(pooled_feature_maps)
 
 regression = FullyConnected(4 * n_classes)  
 reg_predictions = regression(pooled_feature_maps)  
 
 # 非极大值抑制
 selected_indices = NonMaximumSuppressionLayer(iou_threshold=0.5)([proposal_boxes, proposal_scores]) 
 proposal_boxes = tf.gather(proposal_boxes, selected_indices) 
 class_predictions = tf.gather(class_predictions, selected_indices)
 reg_predictions = tf.gather(reg_predictions, selected_indices)
 
 # 最终检测框 
 detection_boxes = DecodeBoundingBoxesLayer()([proposal_boxes, reg_predictions])


- 输入图像和特征提取:使用ResNet-101提取特征图feature_maps,包含目标信息。

- RPN生成候选框:在feature_maps上生成9个anchor,计算类别概率和偏移量得到proposal_boxes和proposal_scores,使用NMS获得选定的候选框。

- RoI Pooling:选定的候选框在feature_maps进行max pooling,获得pooled_feature_maps。

- 分类和回归分支:pooled_feature_maps输入全连接,分别输出类别概率class_predictions和框坐标reg_predictions。

- 非极大值抑制:基于proposal_scores选择更优的候选框。

- 最终检测框:根据reg_predictions对proposal_boxes进行解码微调,获得精确的detection_boxes。

2.2. 基于置信度预测的检测

物体检测的输出通常不仅包含边界框和类别信息,还会给出一个置信度(confidence score)表示预测结果的可信度。它直接预测输入图像中每个像素属于某个物体类别的概率(称为类别置信度),以及属于某个边界框的概率(称为框置信度)。然后通过类别置信度图和框置信度来生成检测结果。典型的方法有YOLO,SSD等。这类方法可以一步到位地完成检测而不需要区域提议的过程。

2.2.1 基于分类的预测方法步骤

对于基于分类的检测方法如Faster RCNN,其置信度预测过程如下:

1. RPN网络生成候选框时,会同时给出每个框属于前景或背景的概率,这可以看作是初步的置信度预测。

2. RoI Pooling层将每个候选框表示成固定大小的特征,输入到类别分类分支。

3. 分类分支会输出每个候选框属于各个类别的概率,其中包含背景类别。

4. 通常会认为类别概率最大且不属于背景类别的那个类别,就是预测框的类别。同时,其类别概率可以作为预测框的置信度。

5. 非极大值抑制会基于每个预测框的置信度选择更优的框,剔除置信度较低的冗余框。

6. 最终保留下来的预测框及其对应的置信度,就是网络的预测结果。

以Faster RCNN为例,其置信度预测主要来源于RPN和分类分支的概率预测。RPN初步给出前景/背景预测,分类分支进一步输出各类别的精细预测,其中最有可能的类别对应的概率即为置信度。

2.2.2 基于回归的预测方法步骤

对于基于回归的检测方法如YOLO和SSD,其置信度预测过程稍有不同:

1. 直接在特征图上定义锚框或默认框,不需要RPN生成区域提议。

2. 通过堆叠多个卷积层提取特征,然后对每个锚框/默认框执行类别预测和边界框回归。

3. 在类别预测中同样会输出各个类别的概率,最有可能的类别对应的概率作为置信度。

4. 根据置信度和iou进行非极大值抑制,选择最终的预测框。

 

不管是基于分类的检测方法还是基于回归的检测方法,其置信度预测的核心都来自于对各类别概率的预测,选择最匹配的类别并使用其概率作为置信度。这一过程为最终的预测结果赋予了可信度,也为后续处理算法提供了判断依据。

2.2.3. 示例

这里给出一个基于TensorFlow实现的Faster RCNN的置信度预测代码示例。

 python
 # RPN生成候选框
 anchors = rpn.generate_anchors()
 proposal_scores = rpn.propose_scores(feature_maps)  # 前景/背景概率
 
 # 非极大值抑制选择高置信度的候选框
 selected_indices = NonMaximumSuppressionLayer(iou_threshold=0.5)  
                          ([proposal_boxes, proposal_scores])
 proposal_boxes = tf.gather(proposal_boxes, selected_indices)
 
 # 分类分支输出类别概率  
 classification = FullyConnected(n_classes)  
 class_predictions = classification(pooled_feature_maps)  
 
 # 选择概率最大的类别
 category = tf.argmax(class_predictions, axis=1)  
 
 # 取该类别对应的概率作为置信度  
 confidence = tf.gather(class_predictions, category)  
 
 # 使用置信度进行再次非极大值抑制 
 selected_boxes = NonMaximumSuppressionLayer(iou_threshold=0.5)  
                     ([detection_boxes, confidence])
 final_boxes = tf.gather(detection_boxes, selected_boxes) 
 final_confidence = tf.gather(confidence, selected_boxes)


- RPN生成候选框proposal_boxes,并预测每个框属于前景或背景的proposal_scores,proposal_scores为初步置信度。

- 使用proposal_scores进行非极大值抑制,选择高置信度的候选框。

- 分类分支对每个候选框预测其属于各个类别的概率class_predictions。

- 选择class_predictions中概率最大的类别作为预测类别category。

- 取该category对应的概率值作为置信度confidence。

- 使用confidence再次进行非极大值抑制,选择高置信度的最终预测框final_boxes。

- 最终输出结果为final_boxes和对应的置信度final_confidence。

可以看出,Faster RCNN的置信度预测来源于:

1. RPN初步判断每个anchor属于前景或背景的概率prediction_scores。

2. 分类分支输出每个候选框属于各类别的概率class_predictions。

3. 选择class_predictions中概率最大的类别作为预测类别,其概率作为置信度confidence。

4. 使用confidence过滤掉低置信度的框,获得高置信度的最终预测结果。

该过程赋予了最终的预测结果一定的可信度,为模型输出的预测框判定准确性提供了依据。希望通过这个代码示例,可以进一步理解Faster RCNN是如何进行置信度预测的。如果您有任何疑问,欢迎提出,我将进行详细解释。

2.3. 总结

无论是哪一类方法,目标检测的评价主要指标都包含准确率、召回率和mAP。

1. 准确率(Precision)

检测结果中真正的物体框占全部检测框的比例。

2. 召回率(Recall)

检测结果中真正的物体框占全部物体的比例。

3. mAP(mean Average Precision)

在不同召回率条件下的平均准确率。是综合考量准确率和召回率最重要的指标。

 

物体检测是一个视觉任务中比较基础但也比较困难的问题,是许多高级视觉任务如行为识别,场景解析的基础。随着深度学习的发展,物体检测的精度也在快速提高。但对小物体,部分遮挡场景的检测依旧面临很大困难。

 


http://chatgpt.dhexx.cn/article/5LvlYD3l.shtml

相关文章

物体检测技术的简单介绍

1. 物体检测技术概念 物体检测技术,通常是指在一张图像中检测出物体出现的位置及对 应的类别,主要包括物体类别、 x m i n x_{min} xmin​、 y m i n y_{min} ymin​、 x m a x x_{max} xmax​与 y m a x y_{max} ymax​。它是一项非常基础的任 务&…

Opencv项目实战:05 物体检测

1,效果展示 为此,我专门还去查了查,怎么将视频转化为gif图,不知不觉中,我又多学会了一项技能。 OK!cool,效果很不错,今天需要搭配一些文件,都是可以从官网里找到的,那么我为了方便,专门去学习怎么在GitHub上托管项目,还下载了VScode和Git,我太难受了,如果不是要写…

百万youtube高清视频数据集采集

HD-VILA-100M是什么? HD-VILA-100M是一个大规模、高分辨率、多样化的视频语言数据集,有助于多模态表示学习。 数据统计 该数据集共包含330万个视频,视频质量较高,均衡分布在15个类别中。 下载(Download) 您可以通…

100多万个视频短片数据集来啦!

本文经授权转载自 IEEE电气电子工程师学会(ID: IEEE_China) 想象一下,如果我们必须向外星人解释地球上发生的所有行为。我们可以为他们提供非小说类书籍或BBC纪录片。我们可以尝试口头解释什么是电臀舞。但是,实际上,没…

大数据视频课程汇总

1.由于未经视频版权方授权,很可能会被下架,请各位需要的同仁及时下载,如果被下架,请留言说明。 2.视频为大数据梅峰谷整理,所有视频不加密,不收费,不做机构的宣传品,(因为微信和各大…

视频分类数据集介绍

视频分类数据集 在视频分类项目中,有很多经典的公开数据集,目前主要的数据集如列表所示: 重点介绍三个中等规模的数据集。 1. UCF101 动作识别数据集,从youtube收集而得,共包含101类动作。其中每类动作由25个人做动作…

Python毕业设计 抖音短视频数据分析与可视化 - python 大数据 可视化

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕…

大数据分析视频全套

一、全套视频总览 二、大数据分析之level2 三、大数据分析之level3 四、大数据分析之level4 五、课程相关资料 具体详细内容及目录结构如下: 注: 大数据分析与大数据开发的区别在于:本套课程涵盖算法更多,需掌握python语言&#…

AI大数据可视化EasyCVR视频融合平台的部署操作流程详解

EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频直播、云端录像、云存储、…

音视频造数据的路

目录 1、多路数据制造 (1)合并多路 (2) 视频修改分辨率 (3) 修改视频码率 (4)修改帧率 2、音频流多声道合成 (1)双声道合并单声道 (2&…

音视频数据介绍

1、前言 在诸如安防系统标准GB28181和“电网视频监控系统及接口”中,固定视频流的传输格式为PS格式。PS流和TS流的概念是在MPEG2的ISO/IEC-13818标准的第一部分“系统”中提出的。其提出的目的是提供MPEG2编码比特的存储与传输方案。 2、先介绍PS封装中的…

互联网海量视频数据的存储

原文链接:http://www.docin.com/p-86312184.html?docfromrrela 一、背景 互联网内容提供方式转变:用户创造内容。视频应用、网络游戏、搜索引擎等互联网衍生业务迅速发展,使得海量数据存储、管理和处理成为当今互联网公司面临的严峻问题。这…

浅析大数据时代下的视频技术发展趋势以及AI加持下视频场景应用

视频技术的发展可以追溯到19世纪初期的早期实验。到20世纪初期,电视技术的发明和普及促进了视频技术的进一步发展。 1)数字化:数字化技术的发明和发展使得视频技术更加先进。数字电视信号具有更高的清晰度和更大的带宽,可以更快地…

音视频数据方案

一点点想法:还请各路大神多多指点! 技术栈: 1、数据存储、数据缓存、数据索引:springboot redis mysql elasticSearch 2、数据抓取:python mysqlBeautifulSoup、Selenium、lxml 3、图片分析:pythonPill…

浅析基于EasyCVR视频技术构建工业园区视频安防大数据监管平台的方案

随着社会经济的快速发展,越来越多的工业园区也正在加快智能化建设的步伐,为入驻企业提供舒适、安全、科技、智慧的办公及生产环境。在建设园区的智能化安防视频监管平台时,需要满足两方面的需求:一是园区内部及周边公共区域安全防…

某马大数据全套视频

某马大数据 01、阶段一 Python大数据开发基础 01、第一章大数据介绍及开发环境 02、第二章 linux命令 03、第三章 MySQL数据库 04、第四章 excel的使用 05、第五章 kettle的使用 06、第六章 数据分析及可视化 07、第七章 大数据框架与数仓基础 08、第八章 数仓实战项目 …

视频观看行为高级分析(大数据分析)

今天介绍一下我们的视频观看行为高级分析功能。 一、观看行为分析 观看行为分析,基于Polyv大数据分析,能够以秒为粒度展示观众如何观看您的视频。 视频观看热力图是单次观看行为的图形化表示,Polyv云点播视频的每一次播放,都会产…

【毕业设计】基于大数据的抖音短视频数据分析与可视化 - python 大数据 可视化

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,…

五分钟读懂视频大数据分析

 发展至今,大数据不再为互联网企业独有,而是逐渐成为覆盖各行业、可以为具体业务服务的技术。如今,春节不仅演化成了一年一度的“人口迁徙”大节,还成了交通、安保等领域接受技术检验的关键时刻&#xff…

视频大数据的三大发展趋势

趋势一:系统集成下的技术融合 智能视频分析计算本身就是一个非常耗计算资源的过程,利用分布式计算平台的并行计算能力及云平台的计算资源弹性分配机制,可以有效利用平台的计算资源提高视频处理能力。同时,视频分析算法也需要不断…