这段时间我主要完成了:
一、《Selective Search for Object Recognition》(重点学习):
1、对代码每一步,甚至每一个变量含义都看懂。
2、修改源代码,使其能够在自己建立的环境下运行。
3、对代码进行单步调试,对照论文中介绍的算法再次加深理解。
4、获得实验结果。
二、bag of visual words视觉词袋模型:
1、了解Bovw模型含义,和使用过程。
2、通过C语言简单实现bovw模型。
三、《Beyond sliding windows-Object Localizationby Efficient Subwindow Search》英文论文原文阅读(重点学习):
1、阅读英文原文。
2、将英文原文简单翻译,加深理解论文内容。
四、《Efficient Subwindow Search》C++实现(重点学习):
1、对代码每一步,甚至每一个变量含义着重理解,看懂为止。
2、对每一步进行注释,使其能够在自己搭建的环境下(OpenCV3.2+VS2015)运行。
3、对程序进行单步调试,理解程序运行的每一步,加深理解论文中介绍的算法。
4、获得实验结果。
这段时间里,先是拿出大量的时间阅读英文论文,第一次看有关专业方面的英文文献,所以我非常认真,把文章中每一个单词都查了一遍,看不懂的句子反复阅读,结合上下午直到看懂。《Beyond sliding windows-Object Localizationby Efficient Subwindow Search》这篇论文中的第二部分Efficient Subwindow Search(ESS)和第三部分Application Ⅰ:Localization of non-rigid objects using a bag ofvisual words kernel至少看了六七遍才逐渐摸清思路。之后我感觉但看论文理解其中的算法还是不足够的。并进行简单修改后适应自己电脑上的开发环境,可以运行之后单步调试,在此期间继续阅读论文中介绍的原理部分。通过单步调试理论和代码实践结合理解,这最终才算是看懂了一些。
对于这两篇论文《Selective Search for Object Recognition》和《Beyond sliding windows-Object Localizationby Efficient Subwindow Search》都介绍的是物体识别,定位算法:
Selective Search算法我理解的是将图像分割(使用Graph-Based Image Segmentation图像分割)成很多小区域,通过区域之间的相似度进行合并,获得最可能的候选区域。然后每个区域进行判别,也就是判别每个区域到底是"牛"还是"非牛"。
Efficient Subwindow Search算法我的理解是将问题的解空间用[T,B,L,R](对应矩形的上下左右4条轴)4 个区间来表示(初始为整个图像),每次选取最长的一个区间分割,并计算解空间的上边界quality bounding function(空间内最大矩形的正值和 + 空间内最小矩形的负值和),并以此进行优先搜索,在这个算法中利用到上边界优先队列,上边界值最大的矩形集合即为最有前景的区域。
这两个算法的差别我认为是Selective Search是先分割后逐渐合并找到目标定位,Efficient Subwindow Search是主键分割最有前景的的矩形集合[T,B,L,R]直到不可分割为止找到目标定位。
至此暑假任务基本完成,剩余的暑假中我准备利用暑期所学的知识(特征检测和匹配,目标识别定位)再次回顾,试着使用opencv自己做一些小程序。
Efficient Subwindow Search算法结果
Efficient Subwindow Search算法
Efficient Graph-Based Image Segmentation算法
Selective Search算法
附加代码连接和论文翻译