检测

5、
方法选择:
========DPM=========
使用传统的slider window的方法 计算量非常大
========OverFeat====
改进了Alex-net,并用图像缩放和滑窗方法在test数据集上测试网络;提出了一种图像定位的方法;最后通过一个卷积网络来同时进行分类,定位和检测三个计算机视觉任务,并在ILSVRC2013中获得了很好的结果。
========SPPNet======
RCNN在全连接层输入需要归一化图像尺寸,这里不需要,在全连接层前加了一个spatial pyramid pooling空间金字塔pooling层。提取到的特征有更好的尺度不变性,降低过拟合的可能。
========DeepID-Net==
人脸识别用的多
========RCNN =======
使用聚类的方法,对图像进行分个分组,得到多个候选框的层次组。原始图片用Selective Search提取2k个候选框->候选框缩放成固定大小->经过CNN->经过两个全连接层,分类。RCNN系列都有Caffe的源码
========Fast RCNN===
去掉RCNN中的重复计算,并微调候选框位置。原图经过CNN提取特征->提取域候选框->把候选框投影到特征图上Pooling采样成固定大小->经过两个全连接后分类与微调候选框位置
========Faster RCNN=
使用CNN来预测候选框。CNN提取特征->经过核为3x3x256的卷积,每个点上预测k个anchor box是否是物体,并微调anchor box的位置->提取出候选框后,采用FastRCNN同样的方式进行分类->选框与分类共用一个CNN网络。
========R-FCN=======
效仿R-CNN,采用流行的物体检测策略,包括区域建议和区域分类两步。用Faster R-CNN中的区域建议网络(RPN)提取候选区域,该RPN为全卷积网络。效仿Faster R-CNN,同享RPN和R-FCN的特点。
========YOLO========
FasterRCNN要对20k个anchor box判断是否是物体,然后在进行物体识别,分成了两步。这里的物体框的选择和识别进行了结合,一步输出,You Only Look Once.把原图缩放成448x448大小->运行单个CNN->计算物体中心是否落入单元格、物体的位置、物体的类别。在7x7的框架下识别物体,遇到大量小物体时难以处理
========SSD=========
在不同层级的feature map下进行识别,能够覆盖更多的范围。结合了YOLO和Faster的anchor。

 


========NMS=========
非极大值抑制,用来去重
========xywh VS syxy
两种位置表示方法,误差不一样

 

目标检测的办法:
1\如果说待检测目标具有旋转不变性,那这里就可以对目标做上下翻转、左右反转、90°*3 旋转等操作;如果目标中存在模糊的情况,在扩充的时候也可以适当做一些高斯模糊什么的;对于颜色抖动、锐度变化、随机缩放等这些操作,我实验的过程中也很难界定他们的效果,而且跟队友做相同实验时,所起的作用也不一样,总结来说,有的时候真的是随机上分
车道线检测中可以用的方法:crop,
2、mixup:将两张图按照一定的比例混合在一起,Bag of Freebies for Training Object Detection Neural Networks

3\填鸭式
所谓填鸭式,就是将一些目标(也可以是误捡的)扣出来,放到没有目标的图上去
比如我们在钢筋识别的时候,有一些小石子和吊机容易被误判成钢筋,索性就选了一些图,把这些伪目标填充合理的位置上,效果就是没有再误判过了
4\数据处理完以后,基本上就是要冲击前排了,这里就是要考虑如何选用预训练模型了,一般的检测都是使用 ImageNet 预训练的 backbone,这是基本配置,高级一点的就是针对数据集做一次预训练,比如津南 2 的违禁物品检测,可以将所有目标裁剪出来,然后训练一个不错的分类模型,这样的初始化相比 ImageNet 就要好太多了。。。

再一点就是使用 coco 预训练的完整检测模型权重,这样的效果就是模型收敛速度贼快,而且效果一般都比较好,也是大家最常用的方法,这里给出 mmdetection 修改 coco 预训练权重类别数的脚本:
5\5.1warmup lr

lr_config = dict(
    policy='step',
    warmup='linear',
    warmup_iters=500,
    warmup_ratio=1.0 / 3,
    step=[8, 11])
    
 5.2   我们在检测任务中常用的计算方法是:lr = 0.02 / 8 x num_gpus x img_per_gpu / 2
    
5.3多尺度训练    
这是 CV 中根据实验结果调整损失函数最先考虑的一个,论文: Focal Loss for Dense Object Detection, 主要是针对模型拟合困难的样例或者样本不均衡的样例,在图像分类中常用作最终的损失函数,直接进行优化,而在目标检测中却有两个选择,一个是在 RPN 层使用 FocalLoss,这样可以缓解由于目标占比较少导致生成的 anchor 正负样本比例失衡;另一种就是类似图像分类一样,在 bbox_head 中使用,mmdetection 中的相应配


        Generalized Intersection over Union, 这里只提一下,这种损失函数对增加框的回归效果比较有效,如果你的任务要求 IOU > 0.8 或者更高,这个可以优先考虑
        
        针对分类的损失函数可以试试如 GHM-C Loss,针对回归的损失函数可以试试如 GHM-R Loss
        
        OHEM(online hard example mining)
        NMS 与 soft NMS
        
[1]:mmdetection
[2] : Cascade R-CNN: Delving into High Quality Object Detection
[3] : Deformable ConvNets v2: More Deformable, Better Results
[4] : Bag of Freebies for Training Object Detection Neural Networks
[5] : Gradual warmup

#################################################################

你可能感兴趣的:(计算机视觉)