物体检测学习笔记

  • 一些对各个领域都有促进作用的基础网络VGG, DenseNet, ResNet, NASNet, MobileNet, SqueezeNet, ShuffleNet
  • 物体检测注明的网络, Faster R-CNN, SSD, YOLO, RetinaNet,FCOS,deep_sort
  • 最新网络,cornerNet, centerNet, YOLOV5, YOLOF, CenterNet,CenterNet2
  • 基于Fast R-CNN的网络检测框的精度较高,但速度达不到实时,YOLO可以达到实时,但精度不够,对小物体不敏感,SSD加入了多尺度信息,解决小物体的检测问题
  • 加速方法:

压缩网络

tensorRT:有些层不支持,需要自己实现,当作工具来使用就可以,它输入是网络模型(eg:.pkl)输出也是加速后的网络模型(eg:.pkl)

  • 传统算法VJ, DPM, 深度学习中基于锚框(单阶段法:SSD,RetinaNet, 多阶段法:FRCNN, R-FCN,FPN),无需锚框(关键点法:CornerNet, CenterNet,中心域法:FSAF, FoveaBox)
  • 深度学习经典算法总结
  • R-CNN思路:1.使用selective search(SS)算法提取潜在的区域(约2000个proposal),warp到固定的大小,2.1然后送进一个分类网络(eg:AlexNet)判断是什么物体,2.2同时将其送进一个回归网络与bbox的真值进行回归调整proposal,其实2.1和2.2会共用提取出来的feature,只是最后几层的head不同罢了。

缺点:a.需要训练3个不同的模型,b.每个proposal都要进一遍分类网络,重复计算

贡献:验证了样本缺少时,可以在其他的数据上预训练,然后再自己的数据集上fine-tuning

正负样本的判断:交并比(IoU)大于0.5是正样本,小于0.1是负样本,0.1

  • Fast R-CNN思路:主要贡献解决R-CNN慢的问题,方法为不是将每个proposal都送进去extract feature网络,而是首先1.将整个图片送进extract feature网络一次,2.在原图的proposal按照比例和位置映射到网络提取出的feature,3.然后warp成固定大小,再像R-CNN中一样送进分类网络和回归网络,loss是这两个head的loss的结合。
  • Faster R-CNN思路:主要解决Fast R-CNN中存在selective search(ss)算法的问题,其使用RPN网络代替selective search算法生成proposal,它的输入是预先默认比例的的proposal正负样本,输出是proposal的4个坐标值和是否有物体的1个概率值,有了这些proposal再像Fast R-CNN输入到分类和回归网络就可以了
  • 基于Fast R-CNN的网络,优点是检测框的精度较高,但速度很慢
  • YOLO1:相对于R-CNN家族的主要区别是YOLO是单阶段的,端到端的网络YOLO博客解释1,YOLO博客解释2

a.网络结构是类似googLeNet的分类网络,24个卷积层+最后两个全连接层,最后的输出是7x7x30(7x7x(20+2x(4+1)))的tensor,7x7分别对应原图像的7x7的grid cell, 30分别对应 20个类别的概率(20)+2个候选bbox的置信度(2)+ 2个候选bbox的4个坐标值(2*4)

b.loss的设计?需要再看看

  • YOLO2: 在YOLO1的基础上进行3方面的改进

a.检测框更准确,加bn层,提高图像的分辨率,引入anchor(聚类出5种anchor),anchor bbox的预测变形,增加skip的高分辨率的feature,多尺度图像尺寸训练

b.检测更快,使用darknet-19网络16个卷积层+5个pooling层,比26层的卷基层少,最后一层全连接层变成avgpool,loss函数改的更复杂(再理解loss的设计)

c.更强壮,使用了合并的数据集,并将标签变成wordTree的标签,分类和检测一起训练

YOLOV2资料1,YOLOV2资料2

  • YOLO3:增加了利用之前的feature作为skip数量,聚类了9类anchor,网络变得更大了,是将darknet-19和YOLO2和一些其他的网络混合而成的网络,起名为darknet-53(总之YOLO3相对与YOLO2使用的方法没有太过明显的不同,比较说不清),输出的tensor为多个尺度的tensor,共3个尺度,每个尺度3个anchor,每个anchor85维度,所以共有 13*13*3 + 26*26*3 + 52*52*3 = 10647个anchor,10647*(4+1+80)数值(bbox的4个坐标+1个confience+80个类别概率)YOLO3博客1,YOLO3博客2,YOLO3博客3
  • YOLOv4,YOLOv4资料1,YOLOv4资料2

只增加训练成本的优化:各种数据增强方式,甚至包括不常用的方式比如:擦除,GAN风格变换等,foca-loss解决类别不均衡问题,label-smooth解决有关系类的间的one-hot问题,修改IOU loss

增加推理成本的优化:用ASPP增加感受野等,引入attention机制,使用skip  connection,改变激活函数,后处理nms

 网络结构选择CSPDarknet53+SPP-block+PANet+YOLO3的heads

优点:快,泛化能力好

缺点:bbox不精细,对小尺度物体和大物体的检测能力弱,召回率低

贡献:解决了全网络化(将selective search的功能也用网络实现)

  • SSD网络:相对于YOLO加入了多尺度信息,以提升对小物体的检测精度,更多不同比例的anchor box
  • 检测短期记忆
  • relationship of the degree of association between different categories
  • 物体检测评价指标
  • 检测综述1
  • 检测综述2
  • 检测综述3
  • 检测综述4
  • 检测综述5
  • 检测综述6
  • 检测分类
  • 物体检测代码1
  • 人脸物体检测代码2
  • 物体检测中的不平衡问题

前景背景不均衡:a.通过设置固定比例的前景和背景解决,同时加上难样本挖掘,不让简单样本占很大比例,b.还有通过focal loss进行解决,总的思想是加大困难样本的权重并加大平衡正负样本不平衡的权重,c.IOU平衡同样利用anchor和GT的IOU,保证大的IOU负样本可以被选中。

前景物体与前景物体不平衡:通过生成新的图像和类别进行解决,batch内类别不均衡问题可以通过给每个要抽样的bbox分配概率解决

尺度不均衡问题:融合backbone特征层和金字塔特征层的特征

优化目标的不均衡:不同的任务使用权重进行权衡

不均衡问题,不平衡问题2,不平衡问题3

你可能感兴趣的:(笔记)