rotated rpn(RRPN)解决旋转不变性特征

成就

第一个基于RPN架构引入旋转候选框实现任意方向的场景文本检测。基于旋转的anchor得到旋转ROI,然后提取相应特征

为什么提出旋转的提议框呢?

因为水平提议框在检测倾斜文本的时候会带有一些冗余(非文本部分)。对比图如下,左:原图;中:水平提议框;右:旋转提议框
在这里插入图片描述

模型结构

整体框架是和faster rcnn一样的,只是我们的RRPN产生带角度的候选区域; 然后我们RRPN得到的候选区域是旋转矩形,而传统的RoI池化只能处理与坐标轴平行的候选区域,因此作者提出了RRoI Pooling用于RRPN中的旋转矩形的池化。
在这里插入图片描述

具体操作

RRPN ( Arbitrary-Oriented Scene Text Detection via Rotation Proposals ) 的基本思想是,在FasterRCNN 的基础上,对每个按照原先方法生成的框,都“原地”旋转6个角度(图c),即对每个位置每个尺度(Scale),每个长宽比(Ratio) 的框,都衍生成6个不同角度的框
在这里插入图片描述

为了实现这种策略,RRPN 当中创新的提出了两个关键的组件:

1、RROIPooling/RROIAlign , 在RPN完成之后,通过输入一个任意角度的旋转Proposal,能够返回一个标准的Pooling/Align 的结果,从而可以接入到一个类似于ROIHeads 的结构当中,进一步对目标旋转框的(x,y,w,h,θ) 五个信息进行预测
在这里插入图片描述
在这里插入图片描述
将RRPN得到的候选区域等分成 在这里插入图片描述个小区域,每个子区域的大小在这里插入图片描述这时每个区域仍然是带角度的,所以我们需要对有角度的roi区域仿射变换转换成平行于坐标轴的矩形,最后通过Max Pooling得到长度固定的特征向量。.

2、 pairwise_iou_rotated(倾斜iou):用于计算任意一个旋转矩形和另一个旋转矩形之间的IoU 的函数(计算各种旋转矩形交叠情况下的IOU)
在这里插入图片描述
将两个矩形的交点进行顺时针排序并连成多边形,然后分割成一个个小三角形计算总面积。以下图(b)举例子,多边形顺序AIJCKL,分割成三角形AIJ,AJC,ACK,AKL,计算这四个三角形的和。

知乎讲解

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是MATLAB中旋转不变LBP特征提取的代码: ```matlab function lbp_feat = rotation_invariant_lbp(img, radius, neighbors) % img: 输入的图像 % radius: LBP算子半径 % neighbors: LBP算子采样点数 % lbp_feat: LBP特征 if nargin < 3 neighbors = 8; end if nargin < 2 radius = 1; end % 获取图像尺寸 [rows, cols] = size(img); % 初始化LBP特征图 lbp_feat_map = zeros(rows, cols); % 计算LBP特征图 for i = 1 : rows for j = 1 : cols lbp_feat_map(i,j) = get_lbp_pixel(img, i, j, radius, neighbors); end end % 计算旋转不变LBP特征 lbp_feat = zeros(1, 2^neighbors); for i = 0 : neighbors-1 % 将特征图沿着采样点方向旋转 lbp_feat_map_rotated = imrotate(lbp_feat_map, i*360/neighbors, 'nearest', 'crop'); % 计算LBP直方图 lbp_hist = histcounts(lbp_feat_map_rotated(:), 0:2^neighbors); % 更新LBP特征 lbp_feat = lbp_feat + lbp_hist; end % 归一化LBP特征 lbp_feat = lbp_feat / sum(lbp_feat); end function lbp_pixel = get_lbp_pixel(img, row, col, radius, neighbors) % img: 输入的图像 % row, col: 中心像素坐标 % radius: LBP算子半径 % neighbors: LBP算子采样点数 % lbp_pixel: LBP像素值 % 获取图像尺寸 [rows, cols] = size(img); % 初始化采样点坐标 sample_points = zeros(neighbors, 2); % 计算采样点坐标 for i = 1 : neighbors theta = 2*pi*(i-1)/neighbors; sample_points(i,1) = row + radius*cos(theta); sample_points(i,2) = col - radius*sin(theta); end % 处理采样点坐标越界的情况 sample_points(sample_points(:,1)<1 | sample_points(:,1)>rows | sample_points(:,2)<1 | sample_points(:,2)>cols, :) = []; % 计算LBP像素值 lbp_pixel = 0; for i = 1 : size(sample_points, 1) if img(round(sample_points(i,1)), round(sample_points(i,2))) >= img(row, col) lbp_pixel = lbp_pixel + 2^(i-1); end end end ``` 使用方法: ```matlab % 读取图像 img = imread('lena.png'); % 计算旋转不变LBP特征 lbp_feat = rotation_invariant_lbp(img, 1, 8); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值