1、end-to-end 

优点:通过缩减扔预处理和后续处理,尽可能使模型从原始输入到最终输出,给模型更多可以根据数据自动调节的空间,增加模型的整体契合度。



简单来说就是深度神经网络处理问题不需要像传统模型那样,如同生产线般一步步去处理输入数据直至输出最后的结果(其中每一步处理过程都是经过人为考量设定好的 (“hand-crafted” function))。

与之相反,只需给出输入数据以及输出,神经网络就可以通过训练自动“学得”之前那些一步接一步的 “hand-crafted” functions。




举个例子(目标检测):


非end-to-end方法:
RCNN:先在图像中提取可能含有目标的region proposal,然后将这些候选框输入到CNN模型,让CNN判断候选框中是否真的有目标,以及目标的类别是什么。在我们看到的结果中,往往是类似与下图这种,在整幅图中用矩形框标记目标的位置和大小,并且告诉我们框中的物体是什么。

这种标记的过程,其实是有两部分组成,一是目标所在位置及大小,二是目标的类别。在整个算法中,目标位置和大小其实是包含在region proposal的过程里,而类别的判定则是在CNN中来判定的。


end-to-end方法

yolo:前面的方法中,CNN本质的作用是用来分类,定位的功能其并没有做到。而yolo只通过CNN网络,就能够实现目标的定位和识别。

end-to-end就是一端输入原始图像,一端输出想得到的结果。只关心输入和输出,中间的步骤全部都不管。



end-to-end learning:


课件:http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/Why%20deep%20(v2).pdf

视频:https://www.youtube.com/watch?v=XsC9byQkUH8


2、hard negative mining




目标检测中我们会事先标记出ground truth,然后算法会生成一系列proposal,这些proposal有跟标记的ground truth重合的也有没重合的,那么重合度(IOU)超过一定阈值(通常0.5)的则认定为是正样本,其余的则是负样本。然后扔进网络中训练。然而,也许会出现正样本的数量远远小于负样本,这样训练出来的分类器的效果总是有限的,会出现许多false positive,我们把其中得分较高的这些false positive当做所谓的Hard negative,既然mining出了这些Hard negative,就把这些扔进网络再训练一次,从而加强分类器判别假阳性的能力。



举个例子(行人检测):



如果给你一张包含一个或者多人的图片以及每个人的bounding box(事先标记出ground truth),一般来说训练一个SVM分类器,需要正负两个样本,正样本(含人)、负样本(不含人)。



正样本:查看bounding box里面是否含人;



负样本:随机生成许多bounding boxes,这些bounding boxes和正的训练样例没有太多的overlap;



然后训练一个 classifier, 并且惊进行test,但是结果显示分类器不够好(负样本过多)。

训练集图片中一幅图片中作为正样本的人物样本很少,但是随机产生用于训练的负样本(非人物样本)可能远远大于正样本,这样训练出来的SVM效果并不好,所以利用Hard negative mining方法,从负样本中选取出一些有代表性的负样本,使得分类器的训练结果更好。

A hard negative is when you take that falsely detected patch, and explicitly create a negative example out of that patch, and add that negative to your training set. When you retrain your classifier, it should perform better with this extra knowledge, and not make as many false positives.

a) 正样本:用给出的bounding box运用在已经存在任意positions和scales的重叠率为50%的detection中,然后选择得分最高的placement. 
b) 负样本:hard negative, 通过寻找不包含目标物体图像中得分高的detections来选出负样本;



3、Jaccard overlap


给定两个集合A,B,Jaccard 系数定义为A与B交集的大小与A与B并集的大小的比值,定义如下:

SSD相关基础_多分类

 

当集合A,B都为空时,J(A,B)定义为1。

与Jaccard 系数相关的指标叫做Jaccard 距离,用于描述集合之间的不相似度。Jaccard 距离越大,样本相似度越低。公式定义如下:

SSD相关基础_数据_02

  

其中对参差(symmetric difference):

 

SSD相关基础_数据_03

 


4、感受野计算


5、Data augutaion 

http://210.28.132.67/weixs/project/CNNTricks/CNNTricks.html6、atrous algorithm (hole filling algorithm)


http://liangchiehchen.com/projects/DeepLab.html



7、Softmax函数

 首先逻辑斯谛函数也就是经常说的sigmoid函数,它的几何形状也就是一条sigmoid曲线。

 

SSD相关基础_数据_04

  那么看名字就知道了,就是如果某一个zj大过其他z,那这个映射的分量就逼近于1,其他就逼近于0,主要应用就是多分类,sigmoid函数只能分两类,而softmax能分多类,softmax是sigmoid的扩展。

SSD相关基础_多分类_05

 

  而softmax本质就是将一个K 维的任意实数向量压缩(映射)成另一个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间。

  Softmax把一个k维的real value向量(a1,a2,a3,a4….)映射成一个(b1,b2,b3,b4….)其中bi是一个0-1的常数,然后可以根据bi的大小来进行多分类的任务,如取权重最大的一维。

softmax函数形式如下:

SSD相关基础_数据_06