目标检测
区域卷积神经网络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
暂无评论