Selective Search for Object Recognition(理解)

0 - 背景

  在目标检测任务中,我们希望输入一副图像,输出目标所在的位置以及目标的类别。最常用的算法是滑动窗口方法,但滑动窗口其实相当于穷举图像中的所有子图像,其效率低且精度也受限。该论文提出一种新的生成目标检测框的方法selective search。

1 - 算法流程

        

  • step 0:生成区域集R
  • step 1:计算区域集R中每个相邻区域的相似度S
  • step 2:找出最相似的两个区域,将其合并成新区域添加到R中
  • step 3:从S中移除所有与step 2中相关的区域
  • step 4:计算新集与所有子集的相似度
  • step 5:跳转到step 2,直到S集为空

1.1 - 相似度计算

1.1.1 - 颜色相似度(colour similarity)

  将颜色空间转换成HSV,每个通道下以bins=25计算直方图,这样每个区域的颜色直方图有$25 \times 3=75$个区间。对直方图除以区域尺度做归一化后采用下式计算相似度:

$$s_{colour}(r_i,r_j)=\sum_{k=1}^{n}min(c_i^k,c_j^k)$$

  (注:我的理解是,对于波峰波谷出现在相同区间,也即是直方图有相似趋势的两个区域相似度高,否则低)

1.1.2 - 纹理相似度(texture similarity)

  采用方差为1的高斯分布在8个方向做梯度统计,然后将统计结果(尺寸与区域大小一致)以bins=10计算直方图,直方图区间数为$8 \times 3 \times 10=240$(使用RGB颜色区间):

$$s_{texture}(r_i,r_j)=\sum_{k=1}^{n}min(t_i^k,t_j^k)$$

1.1.3 - 尺度相似度(size similarity)

  保证合并操作较为均匀,避免一个大区域连续吞并其他小区域。举个例子,假设有区域a/b/c/d/e/f/g/h,理想的合并方式为ab/cd/ef/gh→abcd/efgh→abcdefgh,而不希望出现的合并方式为ab/c/d/e/f/g/h→abcd/e/f/g/h→abcdef/gh→abcdefgh。尺度相似度计算公式如下:

$$s_{size}(r_i,r_j)=1-\frac{size(r_i)+size(r_j)}{size(im)}$$

1.1.4 - 交叠相似度(shape compatibility measure)

$$s_{fill}(r_i,r_j)=1-\frac{size(BB_{ij})-size(r_i)-size(r_j)}{size(im)}$$

        

1.1.5 - 最终相似度

$$s(r_i,r_j)=a_1s_{colour}(r_i,r_j)+a_2s_{texture}(r_i,r_j)+a_3s_{size}(r_i,r_j)+a_4s_{fill}(r_i,r_j)$$

2 - 实现

  参照大神的代码自己复现一遍,代码在此

3 - 参考资料

https://blog.csdn.net/guoyunfei20/article/details/78723646

https://github.com/AlpacaDB/selectivesearch

https://github.com/CZiFan/SelectiveSearch

原文地址:https://www.cnblogs.com/CZiFan/p/9901729.html

时间: 2024-09-30 11:18:25

Selective Search for Object Recognition(理解)的相关文章

论文阅读笔记--Selective Search for Object Recognition

Selective Search for Object Recognition [email protected] 作者: J. R. R. Uijlings, K. E. A. van de Sande, T. Gevers, A. W. M. Smeulders. 引用: Uijlings, Jasper RR, et al. "Selective search for object recognition." International journal of computer v

Selective Search for Object Recognition

http://blog.csdn.net/charwing/article/details/27180421 Selective Search for Object Recognition 是J.R.R. Uijlings发表在2012 IJCV上的一篇文章.主要介绍了选择性搜索(Selective Search)的方法.选择性搜索综合了蛮力搜索(exhaustive search)和分割(segmentation)的方法.选择性搜索意在找出可能的目标位置来进行物体的识别.与传统的单一策略相比,

Selective Search for Object Recognition 论文笔记【图片目标分割】

这篇笔记,仅仅是对选择性算法介绍一下原理性知识,不对公式进行推倒. 前言: 这篇论文介绍的是,如果快速的找到的可能是物体目标的区域,不像使用传统的滑动窗口来暴力进行区域识别.这里是使用算法从多个维度对找到图片中,可能的区域目标,减少目标碎片,提升物体检测效率. 下面是这篇文章的笔记: 介绍及引言: 图片是分层次的,比如下图中a: 沙拉和匙在沙拉碗里,而碗又在桌子上,另外桌子和木头有关或者说桌子和桌子上的所有东西有关.所以图片中的目标是有层次的. 图片分割应该按层次来,也不存在使用单个策略这样通用

Selective Search for Object Recoginition

Selective Search for Object Recoginition [email protected] http://blog.csdn.net/surgewong 在前一段时间在看论文相关的工作,没有时间整理对这篇论文的理解.在前面的一篇博客[1]中有提到Selective Search[2],其前期工作利用图像分割的方法得到一些原始区域(具体内容请查看[1]),然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体. 博客[3]已经有对这

selectIve search for object recognize

在RCNN中使用到的selective search selectIve search 主要完成的任务有点像是在多目标的图中找到特定的目标的 首先 什么是一幅图中的目标,怎样来区分提取 对于图b,我们可以根据颜色来分开两只猫,但是不能根据纹理来分开. 对于图c,我们可以根据纹理来找到变色龙,但是不能根据颜色来找到. 对于图d,我们将车轮归类成车的一部分,既不是因为颜色相近,也不是因为纹理相近,而是因为车轮附加在车的上面(个人理解是因为车"包裹"这车轮) 所以,我们需要用多种策略结合,才

RCNN,Fast RCNN,Faster RCNN 的前生今世:(1) Selective Search

Selective Search for Object Recoginition 这篇论文是J.R.R. Uijlings发表在2012 IJCV上的一篇文章,主要介绍了选择性搜索(Selective Search)的方法.物体识别(Object Recognition),在图像中找到确定一个物体,并找出其为具体位置,经过长时间的发展已经有了不少成就.之前的做法主要是基于穷举搜索(Exhaustive Search),选择一个窗口(window)扫描整张图像(image),改变窗口的大小,继续扫

论文-Selective Search

Selective Search Selective Search for Object Recognition 本文的proposal是object detection领域中的unsupervised learning method中一种著名的方法. Selective Search: (1), Capture all scales,  保证对各种scale的object都可以capture到 (2), Diversification ,  组成object的regions可以是由颜色,曲线,

第十二弹:SS(Selective Search)

以下开始介绍基于区域选择的目标识别任务的模型.首先介绍一个选择搜索的方法,接着介绍一篇评述所有区域选择算法优劣的论文 一.论文笔记 一.摘要 本文主要介绍物体识别中的一种选择性搜索(Selective Search)方法. 物体识别,在之前的做法主要是基于穷举搜索(Exhaustive Search):选择一个窗口扫描整张图像(image),改变窗口的大小,继续扫描整张图像.这种做法是比较原始直观,改变窗口大小,扫描整张图像,非常耗时.若能过滤掉一些无用的box将会节省大量时间.这就是本文中Se

selective search生成.mat文件

https://github.com/sergeyk/selective_search_ijcv_with_python 里的selective_search.py是python接口 import tempfile import subprocess import shlex import os import numpy as np import scipy.io script_dirname = os.path.abspath(os.path.dirname(__file__)) def ge