EAST: An Efficient and Accurate Scene Text Detector中遇到的问题

本文记录了解决EAST项目中遇到的编译错误的过程,包括安装必要的依赖包、调整编译选项以及更改脚本以适应不同版本的Python环境。

https://github.com/argman/EAST

1.Error 127 和

fatal error: Python.h: No such file or directory

这两个是编译环境没准备好, apt-get安装g++和python-dev解决

2.还是/lanms下文件的问题

"undefined symbol: _Py_ZeroStruct"

运行run_demo_server.py的时候出现。查到不同python环境下编译选项的问题。尝试修改了makefile,还是报错。

最后我的解决方法是把run_demo_server.py修改为在python2下运行。修改时候注意下functools在python3.2中才出现,在2.7中可以用functools32代替。否则出现

AttributeError: 'module' object has no attribute 'lru_cache'


### 高效且准确的场景文本检测方法 #### 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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值