CV中常用Backbone-4:目标检查算法原理以及代码操作

HuangJie 于 2025-06-28 在 武汉🏯 2025-06-28 发布 ⏳ 预计阅读 2 分钟 更新 2025-09-18

前面已经介绍了简单的视觉编码器,这里主要介绍常用的目标检测算法
1、CV中常用Backbone-2:ConvNeXt模型详解
2、CV中常用Backbone(Resnet/Unet/Vit系列/多模态系列等)以及代码
3、CV中常用Backbone-3:Clip/SAM原理以及代码操作

目标检测算法

基于卷积的目标检测算法如:R-CNN、FastRCNN、Yolo(部分版本)等,基于Attention如Vit等

R-CNN目标检测

Image
算法原理1如上面所述,主要过程为:1、区域候选框生成器(Region Proposal Extractor);2、CNN特征提取器;3、SVM分类器根据特征进行分类;4、回归模型用于收紧边界框。其中主要需要着重介绍的 区域候选款生成器用像 Selective Search 这样的传统方法从输入图像产生大约 1–2k 个候选框(每个候选框可能包含一个物体或背景)。Selective Search 利用图像分割和层次合并产生高召回率的候选区域。
Image
整体过程如上面描述一下,通过预训练的神经网络(AlexNet)等去获取CNN特征,然后再去通过选择性搜索算法(Selective Search)获取所有的可能的“目标”

对于选择性搜索算法的一个大致思路:大概的意思就是首先根据图像分割的算法来初始化划分区域,然后根据不同颜色模式、目标颜色、纹理、大小、形状等特征来计算相似度合并子区域。

在经过分类以及SVM分类之后直接再去收缩边界框,这个过程主要是通过非极大值抑制去剔除重叠的建议框。比如对于同一个目标会生成大量的、重叠的候选框,而非极大值抑制原理就是:对于每一个框都会有一个置信度,首选按照置信度进行排列得到最大的置信度框,然后去计算其他框和这个最大框的IoU,如果某个框与选取框的IoU大于我们设定的阈值(比如0.5),说明它们和选取框检测的是同一个目标,所以需要被抑制(删除)。如果某个框与选取框的IoU小于阈值,说明它们和框A检测的可能是另一个目标(或者只是重叠不多),予以保留。

Fast RCNN以及Faster RCNN目标检测

Fast RCNN2主要是依次解决上面模型存在的问题,其主要的原理如下:
Image
在Fast RCNN中主要过程:输入是一张图片和多个proposal,经过卷积层计算之后,通过ROI pooling的方式归一到一个fixed size的feature map,最后通过FCs计算分类损失(softmax probabilities)和框回归损失(b-box regression offsets)。这种方法的好处是一张图片只需要经过一次CNN的推理,不再像RCNN那样根据Proposals把原图切成多个子图输入到CNN中再去由SVM处理,大大提升了效率。
而在Faster CNN3主要是为了解决前者依赖于外部候选区域方法,而在该论文中主要提出改进措施是通过使用设计一个RPN去替换外部候选区域,整体流程如下:
Image
对于上面两个模型主要是需要关注两点:
1、RPN网络结构设计:在原图尺度上,设置了密密麻麻的候选Anchor。然后用cnn去判断哪些Anchor是里面有目标的positive anchor,哪些是没目标的negative anchor。算法思路为:在得到特征图之后再特征图上每个像素点都预设9个anchor(基本就覆盖需要识别的目标),但是对于这些anchor肯定有很多多余的,因此再RPN中就有两个分支:1、分类分支(上面流程图中上面部分):直接通过(1, 1, 2k)(k=9)卷积去计算得到Objectness Score(标记框是目标还是背景);2、回归分支(上面流程图中下面部分):微调锚点框的位置和大小,使其更贴合真实目标。它不是直接预测坐标,而是预测偏移量(offsets)
2、RoI Pooling以及RoI Align4:两个RoI算法主要是将bbox映射到特征图上获取bbox中特征,后者是为了解决前者纯在的数据舍入问题。

YoLo算法

参考

Footer Image