前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selective Search算法与演示

Selective Search算法与演示

作者头像
小小詹同学
发布2019-11-12 16:55:34
1K0
发布2019-11-12 16:55:34
举报
文章被收录于专栏:小詹同学小詹同学

算法详解

在对象检测RCNN模型中使用了SS(Selective Search)进行区域推荐,改进了传统图像检测进行全局开窗检测的高计算消耗,典型的对象检测网络RCNN的结构如下:

其中SS作为一种区域推荐算法作为检测框,它是一种基于图像层次纹理、大小、形状进行分割与合并的算法。SS算法对输入图像的过度分割以后作为算法输入,图示如下:

SS算法进行区域推荐ROI生成会执行如下步骤

  1. 对每个分割区域计算外接矩形框,作为区域推荐窗口
  2. 对每组相邻的分割区域根据相似性进行合并
  3. 不断重复1~2

上述步骤中产生大的ROI区域不断被添加到,图像也从最初的过度分割到完全分割、到最终的完全合并。这种基于不同层次的合并被称为自底向上的分割方法。如下图所示:

相似性计算

颜色相似性 根据两个分割区域的颜色直方图的相似度来进行比较,颜色相似计算直方图方法是把0~255总计256个维度分为25个BIN、对RGB三通道得到25x3=75个维度数值,比较两个分割区域的这两组75个数值,采用直方图交叉来计算直方图相似程度,公式如下:

纹理相似性 纹理本质上是图像的梯度、所以计算图像高斯梯度(基于高斯核)、分为8个方向、每个方向上计算颜色直方图、颜色直方图分为10个BIN这样就得到10x8=80个向量,对于彩色RGB图像得到80x3=240个描述子向量作为纹理特征,比较纹理特征相似度的方法与颜色相似性相同。

大小与形状相似性

根据外界矩形框的面积大小,排序得到前2000个ROI区域作为RCNN的区域推荐框。

OpenCV代码演示

OpenCV在扩展模块图像处理中已经包含了SS算法,可以通过API直接创建SS模型对象,调用其方法实现区域推荐功能,代码演示如下:

import cv2

if __name__ == '__main__':
    cv2.setUseOptimized(True);
    cv2.setNumThreads(4);

    # read image
    im = cv2.imread("D:/images/dog.jpg")
    # resize image
    newHeight = 200
    newWidth = int(im.shape[1] * 200 / im.shape[0])
    im = cv2.resize(im, (newWidth, newHeight))
    cv2.imshow("input", im)

    # 创建算法+设置输入图像
    ss = cv2.ximgproc.segmentation.createSelectiveSearchSegmentation()
    ss.setBaseImage(im)

    # 使用SS快速版本
    ss.switchToSelectiveSearchFast()

    # 执行SS
    rects = ss.process()
    print('Total Number of Region Proposals: {}'.format(len(rects)))

    # 推荐100个ROI
    numShowRects = 100
    imOut = im.copy()

    # 显示前100个区域外接矩形框
    for i, rect in enumerate(rects):
        if i < numShowRects:
            x, y, w, h = rect
            cv2.rectangle(imOut, (x, y), (x + w, y + h), (0, 255, 0), 1, cv2.LINE_AA)
        else:
            break

    # show output
    cv2.imshow("SS-Demo", imOut)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小詹学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相似性计算
    • OpenCV代码演示
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档