• 目标检测论文里遇到的常用概念


    迁移学习与fine-tune

    1.什么是迁移学习呢?

    迁移学习顾名思义就是把已经训练好的模型的参数迁移到新的模型来帮助新模型的训练。考虑到大部分的数据或任务是存在相关性的,所以通过迁移学习我们可以将已经学习到的模型参数,通过某种方式来分享给新的模型,从而加快优化模型的学习效率不用像大多数模型那样从零开始。

    2.什么是fine-tune?

    fine-tune是进行迁移学习的一种手段。一般我们本身的数据集量比较小,无法重头开始训练一个效果良好的模型。于是,我们只能通过迁移学习,将一个网络,比如(VGG)前面5大层保持模型参数不变(这里的模型参数是指已经通过Imagenet数据集训练好的模型参数)。因为前面几层主要是提取图片的特征。因此,我们也可以把这几层当作特征提取器,保持原有的权重不变,提取现有的图片的特征。微调就是将调整后面的全连接层,或者最后的几个卷积层加全连接层,来实现我们想要的结果,一般根据自己要分类的类别数等等进行调整。

    3.何时以及如何fine-tune?

    首先要注意的是:网络的前几层学到的是通用的特征,后面几层学到的是与类别相关的特征。使用的四个场景:

    a. 新数据集比较小且和原数据集相似,因为新数据集比较小,如果fine-tune可能会过拟合;又因为新旧数据集类似,我们期望他们高层特征类似,可以使用预训练网络当作特征提取器,用提取的特征训练线性分类器。

    b. 新数据集比较大且和原数据集类似,因为新数据集足够大,可以微调整个网络。

    c. 新数据集比较小且和原数据集不相似,新数据集比较小,最好不要fine-tune。和原数据集不类似,最好也不要使用高层特征。这时,可以使用前面的特征来训练分类器。

    d.新数据集大且和原数据集不相似。因为新数据集足够大,可以重新训练,但是在实践中fine-tune预训练的模型还是有益的,新数据集足够大,可以微调整个网络。

    4.一般训练思路?

    一般显示运用模型前面几层已有的参数,提取特征。然后用提取到的特征来训练我们最后的分类器。训练完毕后。最后可以根据网络来微调后面的几个卷积层以及最后的全连接层。

    转载:迁移学习与fine-tune

    hard negative mining
    对于目标检测中我们会事先标记处ground truth,然后再算法中会生成一系列proposal,这些proposal有跟标记的ground truth重合的也有没重合的,那么重合度(IOU)超过一定阈值(通常0.5)的则认定为是正样本,以下的则是负样本。然后扔进网络中训练。However,这也许会出现一个问题那就是正样本的数量远远小于负样本,这样训练出来的分类器的效果总是有限的,会出现许多false positive,把其中得分较高的这些false positive当做所谓的Hard negative,既然mining出了这些Hard negative,就把这些扔进网络再训练一次,从而加强分类器判别假阳性的能力。
    相关博客:https://blog.csdn.net/qq_36570733/article/details/83444245
     
    正样本与负样本
    先将这个问题分为分类问题与检测问题两个方面进行理解:
    (1)在分类问题中,这个问题相对好理解一点,比如人脸识别中的例子,正样本很好理解,就是人脸的图片,负样本的选取就与问题场景相关,具体而言,如果你要进行教室中学生的人脸识别,那么负样本就是教室的窗子、墙等等,也就是说,不能是与你要研究的问题毫不相关的乱七八糟的场景图片,这样的负样本并没有意义;
    (2)在检测的问题中,我理解着就不是那么简单了,因为检测问题需要做的事情是指出哪里有什么,也就是既要给出框,又要说明框中是什么,在这种情况下,我们所具备的数据就是一些人工标注的图片,这些图片上有框,并且会给出框中的物体类别,我们需要运用这些数据生成训练中的正负样本数据,参考了faster以及SSD两种检测框架中对于正负样本的选取准则,理解如下:
    首先,检测问题中的正负样本并非人工标注的那些框框,而是程序中(网络)生成出来的框框,也就是faster rcnn中的anchor boxes以及SSD中在不同分辨率的feature map中的默认框,这些框中的一部分被选为正样本,一部分被选为负样本,另外一部分被当作背景或者不参与运算。不同的框架有不同的策略,大致都是根据IOU的值,选取个阈值范围进行判定,在训练的过程中还需要注意均衡正负样本之间的比例。
    Ground Truth
    在看英文文献的时候,经常会看到Ground Truth这个词汇,翻译的意思是地面实况,放到机器学习里面,再抽象点可以把它理解为真值、真实的有效值或者是标准的答案。
    维基百科对Ground Truth在机器学习领域的解释是:
    在机器学习中,“ground truth”一词指的是训练集对监督学习技术的分类的准确性。这在统计模型中被用来证明或否定研究假设。“ground truth”这个术语指的是为这个测试收集适当的目标(可证明的)数据的过程。
     
    今天在看《Outlier Analysis》时,有句话: However, it is generally much harder to reduce bias in outlier ensembles because of the absence of ground truth.
    放到对异常点的检测方面来理解这个ground truth就好理解了。在对异常点进行检测的时候,通过一些ensemble methods可以在一定程度上提高准确性,从而减少bias,但是由于对于异常点的定义本身就是一个问题,所以在对这些数据进行label的过程中,保证labeled data是正确的异常点也是个问题。
    再举个例子,在图像识别中,一张图片是猫还是狗这个没有什么争议性,但是如果在时间序列中让你指出什么样的数据是 normal,什么样的数据是 abnormal,100个人可能会有100种回答,因为 normal 和 abnormal 之间没有什么明确的界限,所以在研究时间序列中的 outlier analysis 时,Ground Truth 也是一个不可避免的问题。
  • 相关阅读:
    回答提出的问题1-17章
    《构建之法》第13-17章读书笔记
    读《一个程序员的生命周期》有感
    构建之法的第十、十一、十二章读书笔记
    阅读《构建之法》第8,9,10章
    5.2-5.3
    作业5.1测试与封装
    读《构建之法》5.6.7 思考
    读《构建之法》的思考
    作业2 结对思则运算
  • 原文地址:https://www.cnblogs.com/henuliulei/p/12109594.html
Copyright © 2020-2023  润新知