BOW词袋模型
词典学习-用聚类学习Visual Word
1、特征提取
可以用 SIFT 作特征提取
2、学习可视化词典-K-means聚类
然后就可以用 K-means 方法提取的特征做聚类,具体步骤如下:
-
1、在数据中初始化各类的中心点
-
2、计算每个特征点离哪个中心点最近,将特征点的类别划分为其中心点的类
-
3、重新计算每个类中特征点的公共平均点,回到步骤2
-
4、重复步骤2直到没有变化,即为最终结果
编码-为每个图像建立BOW向量
1、将图像特征与Visual Word联系起来
2、直方图-统计Visual Word出现的次数
训练-用BOW训练和测试数据
1、KNN
简单说就是,在测试点周围选定一个距离,在这个距离内的K个其他点,哪个类的点多,测试点就是哪个类
其超参数有两个:K值 和 距离函数
-
K值:用Cross-validation来决定 K
-
常用 距离函数 如下:
2、Linear Classifier
简单说,就是用线性函数 f ( x i , W , b ) = W x i + b f(x_{i},W,b)=Wx_{i}+b f(xi,W,b)=Wxi+b 计算分数,哪个类分数大就是哪个类
接下来的问题是,如何知道 W W W 是好是坏?我们可以使用损失函数来评估其结果!然后用优化方法使损失最小化!
3、SVM
SVM作为损失函数:
L i = ∑ j ≠ y i { 0 if s y i ≥ s j + 1 s j − s y i + 1 othewise = ∑ j ≠ y i m a x ( 0 , s j − s y i + 1 ) L_{i}= \sum_{j \neq y_{i}} \Biggl\{ \begin{aligned} 0 & \; \; \text{ if } s_{y_{i}} \ge s_{j} + 1\\ s_{j}- s_{y_{i}} + 1 & \; \; \text{ othewise } \end{aligned} \Bigr. = \sum_{j \neq y_{i}} max(0 , s_{j}- s_{y_{i}} + 1 ) Li=j=yi∑{0sj−syi+1 if syi≥sj+1 othewise =j=yi∑max(0,sj−syi+1)
L = 1 N ∑ i = 1 N L i L = \frac{1}{N} \sum_{i=1}^{N} L_{i} L=N1i=1∑NLi