《Look More Than Once(LOMO):An Accurate Detector for Text of Arbitrary Shapes》论文笔记

LOMO算法通过DR、IRM和SEM模块,解决了长文本和任意形状文本的检测问题。DR生成初步四边形框,IRM进行迭代优化,SEM学习中心线和边界偏移,提升检测准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码地址:暂无

1. 概述

导读:这篇文章提出的文本检测算法(LOMO)主要致力于去解决极端长文本与任意形状的文本检测问题,这篇文章处理文本区域表达的时候会处理多次(体现于IRM模块),也对应文章标题的Look More Than Once。这篇文章的检测算法主要由直接回归单元(direct regressor,DR)(源于EAST)、迭代优化模块(iterative refinement module,IRM)与任意形状表达模块(shape expression module,SEM)三部分组成。DR生成一个文本区域的四边形检测框;IRM模块通过先前会对四边形检测框提取的特征块进行迭代优化,从而逐渐感知到整个长文本;SEM模块结合文本区域的几何特征在IRM模块的基础上重建更加精准的文本区域表达,包括文本的区域、文本中心线以及边界的偏移量;

现有的文本检测方法存在CNN感受野不足(实际感受野小于理论值)与文本区域表达存在限制的问题,具体见图1所示
在这里插入图片描述
在图1(a)中每个虚线网络代表的是对应点出的感受野,可以看出对于那种横贯整个图像的文本CNN是很难一次性全部捕获的,对此文章是从局部到整体逐步优化实现的。在图1(b)中展示的是文本表达能力的限制,扭曲形状更适合扭曲文本表达的形式。

对于上面提到的两个问题,文章中的算法通过IRM与SEM模块进行解决。对于长文本的检测,IRM会在DR四边形检测结果的基础上多次回归与GT对应的坐标,依赖于位置的attention机制,IRM可以感受这些位置信息,从而优化整个输入区域。

对于任意形状的文本,这里借鉴了Mask RCNN与TextSnake的机制使用文本中心线与对应偏移量的形式来表示一个文本。

文章的主要贡献:

  • 1)提出了一个迭代优化模块IRM去优化长文本的检测;
  • 2)提出了SEM模块适应任意形状的文本检测;
  • 3)文章提出的检测算法是端到端的并且在现有的多个数据集上表现为state-of-the-art;

2. 方法设计

2.2 网络结构

文章的网络结构backbone选用的是ResNet-50,使用FPN将stage2~5的特征融合起来,得到分辨率为原始输入图尺寸 1 4 \frac{1}{4} 41的特征图,通道为128。
在这里插入图片描述
对于DR部分直接是参考EAST中的回归方法,由于感受野的关系得到的检测结果并不能很好包含文本区域,见图2(2)所示。之后IRM模块在DR输出的基础上进行迭代优化使得检测框与GT接近。之后SEM模块中去学习文本的中心线与边界的偏移,从而得到任意形状文本的检测结果。

文章的网络结构backbone选用的是ResNet-50,使用FPN将stage2~5的特征融合起来,得到分辨率为原始输入图尺寸 1 4 \frac{1}{4} 41的特征图,通道为128。

对于DR部分直接是参考EAST中的回归方法,由于感受野的关系得到的检测结果并不能很好包含文本区域,见图2(2)所示。之后IRM模块在DR输出的基础上进行迭代优化使得检测框与GT接近。之后SEM模块中去学习文本的中心线与边界的偏移,从而得到任意形状文本的检测结果。其网络结构见下图所示:
在这里插入图片描述

2.2 DR模块

在DR模块中将文本与非文本的二分类问题转换为了二值分割问题,并使用了尺度不变的dice-coefficient作为损失函数,其定义为:

### 高效且准确的场景文本检测方法 #### 1. EAST (Efficient and Accurate Scene Text Detector) EAST 是一种端到端的文字检测算法,能够直接预测文字边界框。该模型设计简单有效,在保持较高准确性的同时实现了较快的速度。 - **特点**: - 可以处理任意形状的文字实例。 - 使用全卷积网络结构,无需复杂的预处理或后处理操作。 ```python import cv2 import numpy as np def east_text_detection(image_path): net = cv2.dnn.readNet('frozen_east_text_detection.pb') image = cv2.imread(image_path) orig = image.copy() (H, W) = image.shape[:2] layerNames = [ "feature_fusion/Conv_7/Sigmoid", "feature_fusion/concat_3" ] blob = cv2.dnn.blobFromImage(image, 1.0, (W, H), (123.68, 116.78, 103.94), swapRB=True, crop=False) net.setInput(blob) (scores, geometry) = net.forward(layerNames) # 进一步处理 scores 和 geometry 来获取最终的结果... ``` [^1] #### 2. CRAFT (Character Region Awareness For Text Detection) CRAFT专注于字符级别的特征学习,可以更精确地捕捉不规则排列的文字区域。此方法特别适合于弯曲或者倾斜的文字行。 - **优势**: - 对抗变形能力强,适用于多种复杂背景下的文本识别任务。 - 提供了更加细致化的分割结果,有助于后续的文字识别工作。 ```python from craft import CRAFT import torch from PIL import Image model = CRAFT(pretrained=True).eval() image = Image.open('path_to_image.jpg').convert('RGB') with torch.no_grad(): y, feature = model(torch.unsqueeze(transform(image), dim=0)) # 后续可以根据y来绘制边框或者其他可视化操作 ``` [^2] #### 3. PSENet (Pixel Aggregation Segmentation Network for Arbitrary-Shaped Scene Text Detection) PSENet利用像素聚合的思想来进行任意形状文本检测。它通过多尺度融合的方式增强了对于细长物体的理解能力,并且能够在不同的比例尺下稳定表现。 - **亮点**: - 支持自由形态的文字轮廓提取。 - 结合了全局上下文信息和局部细节特性,提高了鲁棒性和泛化性。 ```python from pse import decode as pse_decode import torchvision.transforms.functional as F img_tensor = F.to_tensor(Image.open(img_file)).unsqueeze(0) preds = model(img_tensor)[-1].detach().cpu().numpy()[0] boxes = pse_decode(preds, min_area_threshold=500) ``` [^3]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值