Bag-of-colors for Improved Image Search
来源:互联网 发布:c语言调用void函数例子 编辑:程序博客网 时间:2024/06/05 17:43
1.论文介绍
这篇文章通过使用图像的颜色特征(全局和局部),并结合这SIFT特征,实现BoW,作者认为颜色特征可以作为SIFT特征的补充,达到超出传统方法的效果。
2.Bag of Color
Color特征的生成过程
颜色空间:作者基于前面人的工作,借用了CIE-Lab颜色特征。这个颜色空间更接近于欧式空间。
颜色字典
颜色字典是通过聚类来实现的,对于每一个图像的颜色特征分量,L,a,b分别进行量化,量化的bin分别为4,8所以得到的颜色词典大小为64=4*4*4 或者512=8*8*8。
作者具体的做法:
- 1000张图片,来自Flickr
- resize 256*256,转换为CIE-Lab形式,按16*16像素分块,得到256像素块
- 对于每一块,找到出现次数最多得Lab颜色,如果最多次数少于5,那么随机选择一个Lab颜色。
- 每张图256个Lab color,256*10000个颜色,使用k-means进行聚类得到k个聚类中心。得到颜色词典:
C={c1,⋯,ckc}
下图表示有16,32,64个词的颜色词典。
颜色签名的生成
得到了颜色词典之后:
- 首先把图片resize到一个固定的像素个数16384个像素。
- 对于每一个像素,求得距离(欧式距离)颜色词典 最近的那个颜色中心
- 统计关于颜色中心的直方图分布。得到图像关于颜色中心的直方图表示。
经过上述步骤之后,一幅图像就可以表示成颜色中心的直方图.
逆文档频率
逆文档频率作用是削弱那些经常出现,区分力度不是很强的词,增加那些很少出现,但区分力度强的
词。所以作者会在直方图的基础上乘以视觉中心的逆文档频率。
标准化
根据幂次定律,作者对于数据进行了幂次变换。
对于特征向量:
幂次定律的目标是降低经常在特征中出现的颜色中心。和idf不同的是它不考虑其他数据的统计特性。
然后对于幂次变换之后的数据进行归一化。得到最后的颜色签名,也就是颜色特征。
归一化方式:
距离的度量
距离的度量有很多种方式,这里作者使用了L1,L2,以及地球距离,卡方距离,SJD散度,以及直方图求交集。
3.部分实验结果
词典大小,归一化以及距离度量的影响如下表
从上述的表格结果来看有如下的几个结论:
- 在自己的数据集上进行学习得到的codebook,比直接拿别人训练好的数据效果要好。
- 幂次变换可以使得mAP提高大约8%,说明不用考虑其他特征的统计特性是很重要的。
- idf权重,对于mAP的提高,不是很大,大约在1%左右。
- 总的来说,L1距离效果最好,其次是卡方
X2 和SJD,HI和FastEMD表现不好。
颜色空间的影响:
- RGB颜色空间没有CIE-Lab空间好,
- RGB空间的结果是mAP=59.9%,但是CIE-Lab 空间为63.8%
颜色字典大小的影响
关于字典大小对于查询质量和查询速度的影响可以参看下面的表格:
实验的数据集是Holidays,查询时间的测试,是在一百万的特征向量中查找L1距离最近的100个向量。
可以看出来随着codebook 大小的增加,查询时间再增加。但是可以看出来,使用颜色签名的速度要快于暴力搜索。
和标准的BoW比较
标准的BoW使用图像像素,mAP=38.4%,当使用BoC的时候,颜色词典大小为64和512时,mAP分别为,38.0%,45.3%,参见Swain的BoC模型的实验1到4.
和传统方法在数据集上的比较
在数据集INRIA Holiday,UKB上的比较结果如下图:
可以看出来,
- BoC效果好于BoW,Holiday上的结果,mAP=54.9%
- UKB上面的评估标准时top4的平均准确率。
- UKB上,BoC的结果是,score=2.99
- 虽然BoC的结果并没有达到,几何校验和Hamming Embedding 报告的最好结果,mAP=81.3%,score=3.42
- 但是可以从上面的论述中看出来,作者的方法更为简单,所使用到的内存更少。
4.局部颜色特征
上述的方法主要是正对全局的特征,也就是对于一张图像来进行的提取特征,这就出现一个问题,如果是对于一些裁剪的图片,那么这个特征的效果可能就会不好,所以作者在考虑到SIFT特征的一些特性的时候,把颜色特征应用到SIFT点所在的区域。并和SIFT特征共同使用,结合Hamming Embedding达到更好地效果。
二进制签名
Hamming Embedding的作用是过滤到不匹配的图像点。二进制码的形成是通过SIFT进行比较获得的。所以可以把提取到的颜色特征,然后按着SIFT二进制码形成的过程得到关于颜色特征的二进制码,嵌入到特征点当中去。
颜色特征二进制码生成
首先作者会根据SIFT获得的候选点的位置,在这个区域内进行颜色特征的提取,生成一个
假设一个256维的BoC向量需要降维到一个特定长度
- 得到一个矩阵
Bkc×kc 使得每一行和每一列的元素之和为8.然后保存前bc 行,获得一个矩阵B′bc×kc - 对于一个局部颜色特征向量
x 经过B′ 的投影,得到x′=B′×x - 对于获得的向量
x′ 的每一维,和一个学习数据上的这一维度上的中值进行比较,(类似于Hamming code的生成),将会产生一位二进制码。
经过上述的过程就可以生成Hamming Code.对于生成的二进制码,可以作为Hamming Embedding 的二进制码,来过滤不匹配的点。
5.实验
在上述过程当中作者做了部分实验,为了进行和SIFT对比,作者特意调整了SIFT的阈值,使得提取颜色特征的个数和SIFT特征相近。这样可以进行更好地比较。具体的特征个数如下表:
颜色特征和SIFT的融合
从第二张图可以看出来,不同的数据集颜色特征起到的作用是不一样的。SIFT在Holidays上面的表现要好于局部的颜色特征,但是在UKB数据集上表现的结果却相反,从实验中作者得出来,SIFT对于实验起的作用在70-75%之间,其他的结果的提升是颜色特征起的作用。
和传统方法比较
可以从上面的表3,看出来Color SIFT在Holidays上的表现好于SIFT本身。
使用了SIFT和颜色特征二进制码的方法称为LBOC(Local Bag-Of-Color),这个方法相比于BOW+HE要有更好的表现。其中在mAP值上,分别高于SIFT+HE,Color+SIFT大约4.4,2.4个百分点。
大规模数据集的实验
作者在Holidays数据集上加入了从Flickr上大约100K的的图片,使用SIFT+LBOC,检索的mAP可以达到65.3%,而SIFT+HE得到的结果是61.2%.
可以看出来作者提出来的Color特征起到了不少的作用。
6.结论
作者在传统的BOW的框架下,使用了图像的颜色特征,提取图像的全局或者局部的特征,并配合这SIFT,以及Hamming Embedding 的思想,实验的结果表明,这种方法的性能要比单个的SIFT和Color SIFT要好。
- Bag-of-colors for Improved Image Search
- Bag-of-Words Based Deep Neural Network for Image Retrieval
- 基于BOW模型的图像分类Bag Of Visual Words model for image classification
- Evaluation of GIST descriptors for web-scale image search
- Improved Image Captioning via Policy Gradient optimization of SPIDEr
- Bag of Tricks for Efficient Text Classification
- PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION
- PROGRESSIVE GROWING OF GANs for IMPROVED QUALITY, STABILITY AND VARIATION
- Bag of systems (BoS) representation for music auto-tagging
- #Paper Reading# Bag of Tricks for Efficient Text Classification
- An API for Google Image Search
- Reading Note: Progressive Growing of GANs for Improved Quality, Stability, and Variation
- Bag of Words/Bag of Features
- Bag of words and Bag of features
- 基于Bow模型的图像检索 Image Retrieval with Bag of Visual Words
- 综述论文:图像标注中的BoW表示 Bag-of-Words Representation in Image Annotation: A Review
- 基于BoW模型的图像分类 Image Classification with Bag of Visual Words
- Iprobe for Hanic Improved documentation
- Spring Cloud构建微服务架构(七)消息总线
- 验证表单输入是否正确
- Linux Shell——初识
- filebeat - logstash 多行合并 解决数据丢失以及无法读取最后一行
- 第十周项目二回文数
- Bag-of-colors for Improved Image Search
- Java中List 去掉重复的值,并保持原先List顺序
- 第十一周:C语言:牛顿迭代求根
- Python基础10列表的生成
- Spring Cloud构建微服务架构(七)消息总线(续:Kafka)
- 替换空格
- 在CentOS安装PHP5.6
- Windows下C获取文件夹下所有文件名
- Android 之ViewFlipper(页面轮播控件)