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 开...
语义分割-游程编码(Run-Length Encoding, RLE)
游程编码(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 编码后可以表示...
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
的基本思想是对目标标签进行“平滑”处理,将原本硬性的标签分布替换为一个更柔和的分布。这样可以减少模型对单一类别的过度自信,从而提高模型的泛化能力。
Label Smoothing 的工作原理
1. 传统交叉熵损失
在分类问题中,交叉熵损失函数定义如下: $$
Cross\ Entropy\ Loss = -\sum_{i=1}^{C} y_i log(p_i)
$$ 其中:
C 是类别总数。
$y_i $是目标标签的 one-hot 编码(硬性标签),即正确类别的值为
1,其他类别的值为 0。
pi
是模型预测的第 i 类...
损失函数-CTCLoss
什么是CTCLoss?
CTC (Connectionist Temporal Classification)
是一种用于序列到序列学习的损失函数,特别适用于输入和输出长度不固定的场景。它在语音识别、手写体识别等任务中应用广泛。CTC
的核心思想是通过引入一个“空白”符号(blank
token),允许模型对不定长的输入序列生成不定长的输出序列,同时避免了对输入和输出进行显式的对齐操作。
传统的序列标注方法通常需要将输入和输出进行严格的对齐(例如,逐帧标注),而
CTC
允许模型自动学习输入和输出之间的对齐关系,从而大大简化了训练过程。
### CTCLoss 的工作原理
#### 1. 输入与输出的关系
- 输入是一个不定长的序列,比如语音信号或手写笔迹的时间序列。 -
输出是一个较短的目标序列,比如文本转录结果。 -
输入和输出的长度可能不同,且没有明确的对齐关系。
#### 2. 引入空白符号
CTC 引入了一个特殊的“空白”符号(通常记作 - 或
blank),表示某个时间步...
Mask2Former: Masked-attention Mask Transformer for Universal Image Segmentation
摘要
图像分割将具有不同语义(如类别或实例成员关系)的像素分组,每种语义选择定义了一项任务。虽然各项任务仅在语义上有所不同,但当前研究主要集中于为每个任务设计专门的架构。我们提出了掩码注意力掩码变换器(Mask2Former),这是一种能够处理任何图像分割任务(全景、实例或语义)的新架构。其关键组件包括掩码注意力,它通过将交叉注意力约束在预测掩码区域内来提取局部特征。除了将研究工作量至少减少三倍外,它在四个流行数据集上显著优于最佳专用架构。最值得注意的是,Mask2Former
在全景分割(COCO 上的 57.8 PQ)、实例分割(COCO 上的 50.1
AP)和语义分割(ADE20K 上的 57.7 mIoU)方面设定了新的最先进水平。
1. 引言
图像分割研究像素分组问题。像素分组的不同语义,例如类别或实例成员关系,导致了不同类型的分割任务,如全景、实例或语义分割。虽然这些任务仅在语义上有所不同,但当前方法为每个任务开发专门的架构。基于全卷积网络(FCN)的逐像素分类架构用于语义分割,而预测一组与单个类别相关联的二进制掩码的掩码分类架构在实例级分割中占主导地...
Graph SAGE: Inductive Representation Learning on Large Graphs
Inductive
Representation Learning on Large Graphs
Rethinking Table Recognitionusing Graph Neural Networks
Rethinking
Table Recognitionusing Graph Neural Networks
会议: ICDAR 2019
论文地址:https://arxiv.org/abs/1905.13391
github: https://github.com/shahrukhqasim/TIES-2.0
[TOC]
摘要
文档结构分析,例如区域分割和表格识别,是文档处理中的复杂问题,并且是一个活跃的研究领域。深度学习在解决各种计算机视觉和机器学习问题方面的近期成功尚未反映在文档结构分析中,因为传统的神经网络不适合该问题的输入结构。本文提出了一种基于图网络的架构作为标准神经网络更好的替代方案来识别表格。我们主张图网络对于这些问题是一种更自然的选择,并探索了两种基于梯度的图神经网络。我们的提出的架构结合了卷积神经网络用于视觉特征提取以及图网络用于处理问题结构的好处。我们在实验上证明,与基线相比,我们的方法具有显著的优势。此外,我们还指出大规模数据集缺乏是结构分析领域深度学习研究的主要障碍,并提出了一个针对表格识别的新大规模合成数据集。最后,我们开源了我们的数...
Graph Attention Networks
图形注意力网络
会议: ICLR 2018
论文地址:https://paperswithcode.com/paper/graph-attention-networks
github: https://github.com/PetarV-/GAT
开源库:PyG
[TOC]
摘要
本文提出一种新的神经网络架构——图注意力网络(GAT),该网络可以处理具有图形结构的数据,并利用掩码自注意层来解决基于图卷积或其近似方法的先前方法的不足之处。通过将节点能够关注邻居特征的层堆叠起来,我们可以隐式地为邻居中的不同节点指定不同的权重,而无需进行任何昂贵的矩阵操作(如求逆)或依赖于事先知道图结构。这样,我们同时解决了谱基图神经网络模型的一些关键挑战,并使我们的模型适用于归纳和推断问题。实验结果表明,在四个已建立的归纳和推断图基准数据集上,GAT模型已经达到了或匹配了最先进的结果:Cora、Citeseer和Pubmed引用网络数据集以及一个蛋白质相互作用数据集(其中测试图在训练期间未被看到)。
1 简介
卷积神经网络(CNN)已成功应用于诸如图像分类,语义分割或机器翻...
Semi-Supervised Classification with Graph Convolutional Networks
基于图卷积网络的半监督分类(GCN)
会议: ICLR 2017
论文地址:https://arxiv.org/abs/1609.02907
github: https://github.com/tkipf/pygcn
[TOC]
摘要
本文提出了一种可扩展的方法来处理图结构数据上的半监督学习,该方法基于一种高效的卷积神经网络变体,它直接在图上操作。本文通过局部一阶近似谱图卷积,优化我们的卷积架构的选择。我们的模型与图中边的数量线性相关,并且可以学习编码了图的局部结构和节点特征的隐藏层表示。我们在引用网络和知识图数据库上的一系列实验中展示了我们的方法相比其他相关方法具有显著优势。
1 简介
我们考虑在图(如文献引用网络)中对节点(如文档)进行分类的问题,其中仅有一小部分节点有标签。这个问题可以被看作基于图的半监督学习,通过某种显式的基于图的正则化形式来平滑(迁移)标签信息到图中,例如,在损失函数中使用图拉普拉斯正则化项:
image-20240828110529296
式中,$L_0 表示与图中带标签部分相关的监督损失。f(·)可以是类似于...
