本文转自:http://www.cnblogs.com/rainsoul/p/6247779.html
在机器学习中经常会遇到正负样本的问题,花了一点时间查找资料,基本上弄明白了一点到底是怎么回事,记录在这里以便以后查看,也希望能够帮助到有疑惑的人,当然也希望理解的比较透彻的人看到之后对于理解的不对的地方能够予以指点。
首先我将这个问题分为分类问题与检测问题两个方面进行理解。在分类问题中,这个问题相对好理解一点,比如人脸识别中的例子,查到的资料中介绍的比较清楚的网址如下(http://stackoverflow.com/questions/25598335/collect-negative-samples-of-adaboost-algorithm-for-face-detection),其中的截图如下,正样本很好理解,就是人脸的图片,负样本的选取就与问题场景相关,具体而言,如果你要进行教室中学生的人脸识别,那么负样本就是教室的窗子、墙等等,也就是说,不能是与你要研究的问题毫不相关的乱七八糟的场景图片,这样的负样本并没有意义,还有一个比较好的网址是(http://www.doc.ic.ac.uk/~sgc/teaching/pre2012/v231/lecture10.html)
在检测的问题中,我理解着就不是那么简单了,因为检测问题需要做的事情是指出哪里有什么,也就是既要给出框,又要说明框中是什么,在这种情况下,我们所具备的数据就是一些人工标注的图片,这些图片上有框,并且会给出框中的物体类别,我们需要运用这些数据生成训练中的正负样本数据,参考了faster以及SSD两种检测框架中对于正负样本的选取准则,我的理解如下:
首先,检测问题中的正负样本并非人工标注的那些框框,而是程序中(网络)生成出来的框框,也就是faster rcnn中的anchor boxes以及SSD中在不同分辨率的feature map中的默认框,这些框中的一部分被选为正样本,一部分被选为负样本,另外一部分被当作背景或者不参与运算。不同的框架有不同的策略,大致都是根据IOU的值,选取个阈值范围进行判定,在训练的过程中还需要注意均衡正负样本之间的比例。
我理解着,在fast的框架中,也是需要多SS算法生成的框框与GT框进行IOU的判断,进而选取正负样本,总之,正负样本都是针对于程序生成的框框而言,而非GT数据。