桩识图
一种建筑图纸中桩的识别方法和装置 技术领域 人工智能、图像处理,建筑审图 技术背景 在结构工程审图领域,桩平面图的自动识别面临以下严峻挑战:1. 图纸上桩的画法多样,2. 单张图纸中桩结构高度密集,3. 受墙体和柱子等其他建筑元素的严重干扰,这使得传统的基于规则的检测方法显得力不从心,无法满足现代建筑审图的高精度与效率需求。 解决的技术问题 本项目通过创新性地结合基于规则和深度学习的算法,实现了高效、准确的桩检测。相较于基于规则的传统方法,本方法检测效率提高3倍,召回率提高了30%,准确率达到99%,显著优化了检测效果。通过自研自动化数据生成,自监督训练方案,替代完全依赖人工标注的传统方式,降低大量标注成本。总体来看,本项目实现了从无到有的技术突破,为结构检测带来了新的赋能。 技术方案 1. 总体流程 基于规则的桩检测 采用基于规则的方法检测桩,检测时不区分桩类别。确保绝对准确率(100%),保持较高召回率(>60%)。 生成桩检测数据集 利用规则检测的结果作为标注,生成桩检测数据集【pile_v0.1】。 模型训练 使用YOLO算法,在桩检测数据集上训练初...
Detecting Text in Natural Image with Connectionist Text Proposal Network
名称:Detecting Text in Natural Image with Connectionist Text Proposal Network 论文:https://arxiv.org/abs/1609.03605 会议:ECCV 2016 github: https://github.com/tianzhi0549/CTPN CTPN(Connectionist Text Proposal Network)是一种基于深度学习的文本检测算法,擅长在自然场景图像中定位文本行。其核心思想是将文本行分解为多个小文本段(text proposals),再通过序列连接形成完整文本行 。以下从算法流程、关键技术、优缺点及改进方向展开详解: 一、算法流程 特征提取 使用预训练的CNN(如VGG16)提取图像特征,得到高维特征图(如conv5层输出)。 双向LSTM序列建模 在特征图上滑动窗口(如3×3),每个窗口生成固定高度(如11px)的锚点(anchors),覆盖不同宽度(如16px、32px等)。通过双向LSTM捕捉水平方向的文本序列上下文信息,增强对长文本的建模能力。 文...
ABINet: Autonomous, Bidirectional and Iterative Language Modeling for Scene Text Recognition
[TOC] 名称:Read Like Humans: Autonomous, Bidirectional and Iterative Language Modeling for Scene Text Recognition 论文:https://arxiv.org/abs/2103.06495 会议:AAAI2020 Github: https://github.com/FangShancheng/ABINet ABINet(Attention-based Bidirectional Network)是一种用于场景文本识别(Scene Text Recognition, STR)的深度学习模型。它在处理复杂背景、噪声干扰以及弯曲或倾斜文本时表现出色。ABINet 的核心创新点是引入了 双向注意力机制 和 迭代优化策略 ,从而显著提升了文本识别的准确性和鲁棒性。 以下是 ABINet 的详细解析,包括其架构设计、工作原理、优势和实现细节。 1. ABINet 的背景 问题 自然场景中的文本通常具有复杂的形状(如弯曲、倾斜等),并且背景可能包含大量噪声。 传统的基于分类的方法...
DBNet: Real-time Scene Text Detection with Differentiable Binarization
[TOC] 名称:DBNet: Real-time Scene Text Detection with Differentiable Binarization 论文:https://arxiv.org/abs/1911.08947 会议:AAAI2020 V2:Real-Time Scene Text Detection with Differentiable Binarization and Adaptive Scale Fusion V2:https://arxiv.org/abs/2202.10304 顶刊:TPAMI 2022 DBNet(Differentiable Binarization Network)是一种用于文本检测的深度学习模型,特别适用于自然场景中的文本检测任务。它在处理弯曲、倾斜或复杂背景中的文本时表现出色。DBNet 的核心创新点是引入了 可微分二值化(Differentiable Binarization, DB) 模块,使得模型能够在训练过程中直接优化分割掩码的二值化效果。 以下是 DBNet 的详细解析,包括其架构设计、工作原理、优势和实现细节...
Android Studio配置Gradle
在IntelliJ IDEA 和Android Studio 中,可以通过以下步骤指定 Gradle 主目录(Gradle Home Directory)。这个设置允许你使用手动安装的 Gradle 版本,而不是依赖 IDE 自动下载的版本。 步骤 1:打开设置窗口 启动 IntelliJ IDEA 或 Android Studio。 打开 设置/首选项 窗口: Windows/Linux 作系统 :File > Settings。 macOS :IntelliJ IDEA > Preferences。 步骤 2:导航到 Gradle 设置 在设置窗口中,展开左侧的Build, Execution, Deployment 菜单 点击Build Tools > Gradle 。 步骤 3:指定 Gradle 主目录 在右侧的 Gradle 设置面板中,找到**“Gradle JVM”** 和**“Use Gradle from”** 部分 选项 1:使用 Gradle Wrapper 默认情况下,IDE 会选择**‘gradle-wrapp...
Python开发安卓应用
要在安卓设备上运行使用 PyQt 编写的程序,需要解决一个关键问题:PyQt 是为桌面环境设计的,而安卓是一个移动操作系统,直接在安卓上运行 PyQt 程序并不支持。不过,可以通过一些工具和框架将 PyQt 应用适配到安卓平台。以下是实现这一目标的主要方法和步骤: 1. 使用 Kivy 或其他移动开发框架 如果目标是开发跨平台的 Python 应用(包括安卓),可以考虑使用专门为移动设备设计的框架,例如 Kivy 或 BeeWare 。这些框架支持直接构建安卓应用,并且语法与 PyQt 类似。 原因: PyQt 的 GUI 依赖于 Qt,而 Qt 在安卓上的支持有限。 Kivy 和 BeeWare 提供了更轻量级的解决方案,更适合移动设备。 2. 通过 PySide/Qt for Android Qt 官方提供了对安卓的支持(称为 “Qt for Android”),因此理论上可以通过以下方式将 PyQt 应用移植到安卓: 步骤: 安装 Qt for Android 工具链 下载并安装 Qt 官方提供的 Android 开发工具链,包括 Qt Creator 和 An...
语义分割-游程编码(Run-Length Encoding, RLE)
游程编码(RLE,Run-Length Encoding)是一种简单而有效的数据压缩方法,特别适用于具有大量连续重复值的数据。它在图像处理、分割掩码表示和时间序列数据压缩等领域有着广泛的应用。 它通过记录每个值的“运行长度”(即连续出现的次数)来减少存储空间。RLE 在图像处理、文件压缩和机器学习中都有广泛应用,例如在 COCO 数据集中用于表示分割掩码。 1. RLE 的基本概念 定义: 游程 :一段连续的相同值。 编码 :将每个游程用一对值表示,通常是 (值, 长度) 或 (长度, 值)或(起点, 长度)。 对于二值mask编码有简化形式 交替存储连续的前景像素数和背景像素数。示例:11100111110 编码为 [3, 2, 5, 1] 存储前景像素的起点和长度。示例:11100111110 编码为 [0, 3, 5, 5] 示例: 假设有一个二值数组 [0, 0, 0, 1, 1, 1, 1, 0, 0]: 使用 RLE 编码后可以表示为 [(0, 3), (1, 4), (0, 2)],即: 0 出现了 3 次, 1 出现了 4 次, 0 又出现了...
CRNN: An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
CRNN详解 名称:An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition 论文:https://arxiv.org/abs/1507.05717 会议:ICDAR 2015 github: https://github.com/meijieru/crnn.pytorch 一、网络结构 CRNN整体架构包含三部分: CNN特征提取层 输入图像通过多层卷积和池化操作提取局部特征,生成特征图(Feature Map)。例如,采用类似VGG的卷积层结构,逐步缩小空间维度并增加通道数,最终输出特征序列12。 RNN序列建模层 将CNN输出的特征序列转化为时序相关的序列特征。通常采用双向LSTM(BLSTM),捕捉前后文信息,解决传统RNN的梯度消失问题35。 CTC转录层 将RNN输出的概率序列映射为最终字符序列。CTC通过动态规划合并重复字符和空白标签,解决输入输出序列长度不一致的问题 二...
损失函数-Label Smoothing Cross Entropy
Label Smoothing Cross Entropy介绍 Label Smoothing 是一种正则化技术,用于改进分类任务中的交叉熵损失函数。传统的交叉熵损失函数假设目标标签是硬性(hard)的,即每个样本只有一个正确的类别标签,并且该类别的概率为 1,其他类别的概率为 0。然而,这种硬性标签可能会导致模型过拟合训练数据,尤其是在训练数据有限或标签可能存在噪声的情况下。 Label Smoothing 的基本思想是对目标标签进行“平滑”处理,将原本硬性的标签分布替换为一个更柔和的分布。这样可以减少模型对单一类别的过度自信,从而提高模型的泛化能力。 提出论文: Rethinking the Inception Architecture for Computer Vision 会议: CVPR 2016 Label Smoothing(标签平滑)的工作原理 1. 传统交叉熵损失 在分类问题中,交叉熵损失函数定义如下: Cross Entropy Loss=−∑i=1Cyilog(pi)Cross\ Entropy\ Loss = -\sum_{i=1}^{C} y_i...
损失函数-CTCLoss
什么是CTCLoss? CTC (Connectionist Temporal Classification) 是一种用于序列到序列学习的损失函数,特别适用于输入和输出长度不固定的场景。它在语音识别、手写体识别等任务中应用广泛。CTC 的核心思想是通过引入一个“空白”符号(blank token),允许模型对不定长的输入序列生成不定长的输出序列,同时避免了对输入和输出进行显式的对齐操作。 传统的序列标注方法通常需要将输入和输出进行严格的对齐(例如,逐帧标注),而 CTC 允许模型自动学习输入和输出之间的对齐关系,从而大大简化了训练过程。 CTCLoss 的工作原理 1. 输入与输出的关系 输入是一个不定长的序列,比如语音信号或手写笔迹的时间序列。 输出是一个较短的目标序列,比如文本转录结果。 输入和输出的长度可能不同,且没有明确的对齐关系。 2. 引入空白符号 CTC 引入了一个特殊的“空白”符号(通常记作 - 或 blank),表示某个时间步没有对应的输出。空白符号在最终的输出中会被移除。 3. 路径的概念 CTC 将输入序列到输出序列的所有可能对齐方式称为“路径”。例...
