计算机视觉基础6-目标检测

目标检测

区域卷积神经网络R-CNN

目标检测 检测图片中所有物体的类别标签,位置(最小外接矩形,bounding box

模块1:提取物体区域Region proposal 

模块2:对区域分类识别

 RCNN: selective search 

 优先合并四种区域:颜色相近的 纹理相近的 合并后总面积小的 合并后总面积在其BoundingBox中所占比例大的

RCNN:warp

 

 IoU 两个region的交并比

在ImageNet上对CNN模型进行pre-train=>M

在Selective Search生成的所有区域上对M进行fine-tune(微调)=>M`

正样本(N类):跟Ground-truth重合IoU>=0.5   负样本(1类):IoU < 0.5

 在M`的Fc7特征上训练线性SVMs分类器=> C

        每个类别(N类)对应一个SVM分类器,正样本:所有Ground-truth区域;负样本:跟ground-truth重合 IoU <0.3的SS区域。  

一个类别对应一个SVM分类器,一个猫的分类器来分类是不是猫。

 SVM训练完成后,如果完全分类正确,所有正样本输出概率都大于0.5,所有负样本的输出概率都小于0.5,但常见的情况是有一部分负样本的数据概率也大于0.5,这些样本被称为False Positives

把这些False Positives收集起来对SVM进行二次训练,经过二次训练的SVM分类准确度会有一定提升。

Fc7特征 第七层全连接特征

RCNN 回归部分:

        在M`的Conv5特征上训练BoundingBox回归模型,提升定位性能,每个类别(N类)训练一个回归模型 将SS提供的Boungdingbox做重新映射P=》G,P的IoU>0.6 本来差异就不大才能拿来做回归

RCNN测试阶段:

        Selective Search 提取 2000区域/图片

        将所有区域膨胀+缩放到227*227

        使用fine-tune过的AlexNet计算2套特征:为每个类别分别执行 Fc7特征->SVM分类器->类别分值,使用非极大值抑制(IoU>=0.5)获取无冗余的区域子集(所有区域安分值从大到小排序,提出冗余:与最大分值区域IoU>=0.5的所有区域,保留该最大分值区域,剩余区域作为新候选集)Conv5特征->boudingbox回归模型->bbox偏差,使用bbox偏差修正区域子集

RCNN性能评价:

True Positive  False positive  False negetive

        mAP:所有类别的平均精度求和除以所以类别数,即数据集中所有类的平均精度的平均值

选出区域之后再进行卷积需要训练大量时间

速度慢的原因:卷积特征重复计算量太大,每张图的区域都会计算CNN特征

两大改进:直接输入整图,所有区域共享卷积计算(一遍),在conv5层输出上提取所有区域特征;引入空间金字塔池化,为不同尺寸的区域在Conv5输出上提取特征,映射到尺寸固定的全连接层上。

SPP-Net训练流程

 多阶段训练  减少特征提取的时间, SPP层之间的所有卷积层参数不能fine-tune(感受野太大,效率太低)

Fast R-CNN  训练测试更快 更高的mAP  实现end-to-end 单阶段训练,采用多任务损失函数 ,所有层都可以fine-tune,不需要离线存储特征文件

引入两个新技术:感兴趣区域池化层RoI pooling layer、多任务损失函数(Multi-task loss)

感兴趣区域池化层RoI pooling layer:空间金字塔池化SPP pooling的单层特例,将RoI区域的卷积特征拆分成H*W网格,每个bin内的所有特征进行Max pooling

寻找一种映射f,是的Regional proposal 拟合ground truth,先做平移,再做缩放,需要学习的是四个变换,将中心点坐标xy和长宽这四个值进行变换。

多任务损失包括

分类器loss   L(p,u) =-logpu   每个RoId的概率分布p Groung truth 类别u

Bounding box回归L1 loss  每个RoI共有N个loss,根据偏差目标和预测偏差来得到loss

Mini Batch sampling 抽样 

        分级抽样法 batch尺寸(128)= 每个batch的图片数量(2)* 每个图像的RoI数量(64)

                充分利用卷积层的共享计算

        RoI分类基于与Ground truth的重叠,物体占25% IoU >=0.5 背景占75% IoU在【0.1,0.5]之内

采用SVD分解加速全连接层计算

Faster RCNN 集成Region Proposal Network 网络

Faster RCNN = Fast R-CNN +RPN

取代离线Selective Search模块 解决性能瓶颈 进一步共享卷积层计算,基于Attention注意机制引导FastRcnn关注区域, Region proposals量少质优 

        

 Anchor box 类型 k=9 

 Anchor 锚点  得到候选框 

RPN网络loss 分为两部分 分类object & non object

        回归部分也是用smooth L1 

Cython 

flow --model cfg/yolo-new.cfg --load   

yolo.weights yolo的权重文件 可以下载 

CNN全卷积趋势 ResNet Googlenet 只剩一个全连接层

        应用两难:检测网络的变换敏感性,分类网络的变换不变性,卷积层越深,不变性越强,对变换越不敏感

R-FCN  特点 score map

适应全卷积化CNN结构,提出全卷积化设计

位置敏感分值图:特殊设计的卷积层,Grid位置信息+类别分值

位置敏感池化:无训练参数,无连接网络的类别推断

R-FCN结构:

 无论物体在哪个位置都能通过同一的卷积层判断出类别来

使用k2(c+1)个通道对(位置、类别)组合进行编码,

R-FCN 多任务损失函数 总损失包括分类损失函数和Boundingbox回归损失函数

R-FCN的训练  OHEM 首先对RPN获得的候选ROI进行排序操作,然后再含有正样本的roi中选择前N个ROI将正负样本的比例维持在1:3范围内,保证每次抽取的样本中都会含有一定的正样本,这样训练可以提高网络的训练能力。

Faster R-CNN的四步训练法,2轮,RPN和R-FCN交叉训练

YOLO one-stage 算法

将物体检测任务当做一个regression问题来处理,拟合出一个特定的张量,包括bbox坐标和物体信息。可以一次得到很多个值,即检测出多个物体

使用一个神经网络直接从一整张图像来预测出boundingbox坐标box中包含物体的置信度和物体的可能性。然后进行非极大值抑制,筛选Boxes

YOLO v1网络j结构: 

最后得到一个7*7*30的张量  30包括B*5+20  5是包括五个值,bbox的长宽 中心点横纵坐标(都归一化到0-1之间)以及confidence   2指的是两个候选框, 20 指的是类别数目

每个栅格还要预测C条件类别概率,即在一个栅格包含一个object前提下,它属于某个类的概率。

条件类别概率是针对每个栅格的,confidence是针对每个bbox的。

在测试阶段将每个栅格的条件类别概率与每个bbox的confidence相乘。

目标函数包括:坐标预测+含有object的bbox的congidence预测+不含object的bbox的confidence预测+类别预测

非极大值抑制:        (只针对bbox,不包括预测类别)

        首先从所有检测框中找到置信度最大的框;然后挨个计算其余剩余框的IOU,如果大于一定的阈值,则就将该框剔除;之后对剩余的检测框重复上述过程吗,直到处理完所有的检测框。

yolo的实际策略是先使用NMS,然后再确定各个box的类别。

优点:检测物体速度很快;假阳性率低;能够学到更加抽象的物体的特征。

不足:检测精度较低于其他astateof the art方法;容易产生物体定位错误;对小物体检测效果不好,尤其是密集的小物体,因为一个栅格只能预测两个物体。

YOLOv2:

七项改进:

        Batch Normalization 提高模型收敛速度 减少过拟合,所有卷积层都用

        High rESOLUTION Classifier  基于imageNet预先努力按模型,大部分分类器输入图像尺寸小于256*256,v2中首先采用448*448分辨率的ImageNet数据finetune使网络适应高分辨率输入;

        Convolutional With Anchor boxes :用 anchor boxes来预测 bbox

        Dimension Clusters :  使用K-means聚类方法类训练bboxes 可以自动找到更好的boxes宽高维度。5个bbox比较好;

        Direct location prediction: 将预测偏移量改变为YOLO的预测gridcell的位置匹配性,将预测值限定在0-1范围内,增强稳定性;(如果预测的框和groundtruth差的比较远就不做拟合了)

        Fine-Grained Features : 加入passtrough层增加特征,类似于ResNEt,将高分辨率特征和低分辨率特征结合;

Multi-ScaleTraining :模型只包含卷积层和pooling层,因此可以随时改变输入尺寸,每经过10次训练就会随机选择新的图片尺寸进行训练。

YOLOv3:

        Loss不同:将Softmax loss替换成了Logistic loss;

        Anchor bbox prior 不同: v3用了3*3个anchor 提高了IOU;5个改为3*3个(kmeans结果)

        Detection策略不同: v2只有一个detection v3有3个;

        backbone不同:Darknet19=>Darknet-53

 

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

yzy_1117

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

暂无评论

发表评论

相关推荐