Bag-of-words model, 将文档表示成特征矢量。它的基本思想是假定对于一个文本,忽略其词序和语法、句法,仅仅将其看做是一些词汇的集合,而文本的每个词汇都是独立的。
简单说就是将每个文档看成一个袋子,然后看每个袋子里装的都是些什么词汇,将其分类。通过统计文档中各个此出现的次数判断该文档在描述什么。例如,一个中如果猪、牛、马、羊、山谷、土地、拖拉机这样的词汇多,而银行、大厦、汽车、公园这样的词汇少,就可以断定该文档描述的乡村的场景,而不是城镇。
对于这样两句话:
John likes to watch movies. Mary likes too. John also likes to watch football games.
构建出如下的字典:
{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also": 6, "football": 7, "games": 8, "Mary": 9, "too": 10}
根据字典,可以由上述字典表示这两句话:
[1, 2, 1, 1, 1, 0, 0, 0, 1, 1] [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]
BOW也可以应用在视觉领域的图像分类中,其基本思想就是将图像的特征看成一个特征集合,通过统计图像中特征出现的次数来对图像进行分类。这里以SIFT特征为例来理解如何利用BOW对图像进行分类。
Bow模型(解释的很好) – Hanson-jun
BOW模型理解
Bag-of-words model From Wikipedia
更普遍的微调方法是:固定其他参数不变,a网络最后几层的参数重新训练,之后再用较小的学习率将网络整体训练。
caffe的fine-tuning是什么意思? - 知乎
深度学习之模型finetuning - CSDN博客
Caffe fine-tuning 微调网络 - 楼燚(yì)航的blog
利用第一次训练的分类器在负样本原图(肯定没有人体)上进行行人检测时所有检测到的矩形框,这些矩形框区域很明显都是误报,把这些误报的矩形框保存为图片,加入到初始的负样本集合中,重新进行SVM的训练,可显著减少误报。
用初次训练的SVM+HOG分类器在负样本原图上检测HardExample
1、视角和图片缩放的变化
2、光照的变化
3、severe occlusions严重的遮挡
4、视觉上相似但不同的物体
用BoW和CNN解决上述问题。
问题1: BoW:affine co-variant local features, invariant descriptors
问题2:BoW:color-normalized feature descriptors
问题3:BoW:locality of the features, geometric verification
问题4:BoW:discriminability of the features, geometric verification
对这几个问题,CNN都可以用更多的training set来解决(废话),但因为很贵,所以才找别的办法。
目标是classification,用ImagNet上的图做数据集,结构模型用 AlexNet & VGG
CNN学习时,利用SfM information,同时学习Hard Negative Examples(与目标完全不匹配的样本)和Hard Postive Examples(与目标匹配的很好的样本),
文章重点关注用于classification的CNN,如AlexNet和VGG。使用Fully convolutional的网络架构,Fully Connected Layer 被舍弃,input为一张图片,output为一个3Dtensor X,为W*H*K维(K为上一层的feature map数)。Xk为feature map k的所有W*H 的所有激活集合。网络的output由K个这样的激活集合组成。预先训练好的网络构成用于卷积层的初始化。MAC层由每个feature map的所有维度的max-pooling构成,特征向量有每个feature map的最大激活组成,维度数为K 。feature vector由每个feature map的最大激活 组成,它的维度数为K。对于大多数网络为256或512d。 随后将MAC向量做l2-normalized ,并用inner product来评估图像的相似性。通过相应的mac分量的乘积来评测feature map对图像相似度的贡献。
卷积层的最后一层直接跟上来进行MAC计算的MAC层。MAC层的input是一个激活的3D的tensor,output是一个非负向量。然后通过l2-normalized处理输出结果。
采用siamese 网络结构,训练两个网络,共享同样的参数
Siamese Network理解(附代码)
利用3D投影提供的标记数据,用上linear discriminant projections。它分为whitening和rotation两部分。
给定一个带的带label的图片集合,图像会被聚类,每个集群建立一个3D模型。对于每张图片,估计的相机位置和在3D模型中注册好的局部特征都已知,放弃可能有不同种子构建的冗余(重叠)的3D模型。重建同一个地标的不同且视点不相交的模型认为是不重叠的。
1个3D模型被描述为1个二分可见图,通过相机和点的可见性关系定义了图的边缘。如果在图像i中点p为可见的,那就存在一条(i, p),的边。创建一个数据集的tuples,包括查询图片q,positive的图片集合m(q),和negative的图片集合N(q),这些tuples用来生成训练图片对,每个tuple对应 |N(q)|+ 1 个对。定义一个候选postive image的pool m(q) ,他根据q的相机位置集合构建而来。由于摄像机方向的范围很广,因此它不一定描述相同的对象。
因此我们提出三个方向来对positive sample进行取样。在所有三种策略的整个培训过程中,positive sample都是固定的。
MAC distance:有最小MAC distance的图片选为positive
maximum inliers:和查询图片有最多共同观察的3D点的选为positive
relaxed inliers:从与查询图片有足够多共同观察点的,但并不展现出过于极端的缩放的一组图像中随机选positive,通过提高匹配难度保证匹配正确性。
Negative images:由于群集不重叠,因此从不同于查询图像的群集的群集中选择Negative images,选择hard negative(具有最相似descriptor的不匹配图)。
我们针对图像检索中的cnn进行了调整。训练数据从应用于大型无序照片集的自动化3D重建系统中选择。所提出的方法不需要任何手动注释,且在descriptor维度的很宽的一个范围里(16至512)的许多标准基准上优于现有技术的状态。
Training data, ne-tuned networks and evaluation code