RCNN----选择性搜索(selective search)

SelectiveSearch通过Felzenswalb图像分割算法生成候选区域,结合颜色、纹理和尺度信息减少计算量。它使用LBP计算局部梯度,HSV空间计算颜色直方图,然后根据相似性合并重叠区域,生成用于RCNN等目标检测模型的候选框。

参考路径:目标检测RCNN系列的候选区选择算法——selective search(原理+Python实现)_macan_dct的博客-优快云博客

作用:实际上就是在原图尽可能快,尽可能好的生成框选目标的候选框,避免使用穷举法导致的计算量过大的问题

策略: 遍历所有的尺度,但不同于暴力穷举,首先得到小尺度的候选区域,然后一次次合并得到大的候选区域

方案: 解决纹理问题使用,使用颜色特征;解决颜色特征不行的问题,使用纹理特征;解决尺度问题,使用候选区域的面积和互补性

具体操作思想大致如下:

(1)selective search首先使用 Felzenswalb图像分割算法将图像分割成多个不同的块,每一个块代表分割算法得到的一个类,根据每个块的横纵坐标的最大值和最小值来初步产生一个候选区

import cv2
import numpy as np
from skimage import io as sio
from skimage.segmentation import felzenszwalb
import matplotlib.pyplot as plt

if __name__ == '__main__':
    sigma = 0.9
    kernel = 3
    K, min_size = 500, 10
    image = sio.imread(r"D:\personal\model_and_code\dataset\VOCdevkit\VOC2012\JPEGImages\2007_000129.jpg")
    # skimage自带的felzenszwalb算法
    seg1 = felzenszwalb(image, scale=K, sigma=sigma, min_size=min_size)

    fig = plt.figure()
    a = fig.add_subplot(121)
    plt.imshow(image)
    a.set_title("image")

    a = fig.add_subplot(122)
    plt.imshow(seg1)
    a.set_title("seg1")
    plt.show()

在这里插入图片描述

分割得到的每一类分割结果都会有像素位置的横坐标的左侧最小值min_x、纵坐标的左侧最小值min_y、横坐标的右侧最大值max_x、纵坐标的右侧最大值max_y,即[min_x, min_y, max_x, max_y]作为当前分割结果的候选区(框)

# pass 1: 根据分割类别,找到分割结果的每个类别像素位置的左上坐标和右下坐标
    for y, i in enumerate(img):
        for x, (r, g, b, l) in enumerate(i):
            # initialize a new region
            if l not in R:
                R[l] = {
   
   
                    "min_x": 0xffff, "min_y": 0xffff,
                    "max_x": 0,      "max_y": 0, "labels": [l]}
            # bounding box
            if R[l]["min_x"] > x:
                R[l]["min_x"] = x
            if R[l]["min_y"] > y:
                R[l]["min_y"] = y
            if R[l]["max_x"] < x:
                R[l]["max_x"] = x
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小花猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值