算法
文章平均质量分 81
Treasureashes
总有一条非走不可的弯路。
展开
-
Script Identification of Multi-Script Documents: A Survey
这是一篇2017年来自新疆大学的Survey,写得不是很好,没有提出什么观点,没有很好将各种方法串连起来,各种分类阐述也很粗暴。而且由于是2017年的文章,其中对当前研究的工作的总结已经不太具有太多的价值。但是其它方面的整理分类工作还是有一定价值,适合对script identification(脚本识别)这个领域没有太多了解的人了解一下。...原创 2022-07-18 03:19:42 · 747 阅读 · 0 评论 -
Text Recognition in the Wild: A Survey
这是来自华南理工2020年的一篇survey,主要讨论的是场景文本识别(scene text recognition,STR)领域的现状与一些发展方向。原创 2022-07-18 03:12:03 · 547 阅读 · 0 评论 -
Hamming OCR: A Locality Sensitive Hashing Neural Network for Scene Text Recognition
当前的OCR模型太大,直接应用在中文等多字符语言系统的识别中,会导致过大的存储成本(主要是projection matrix的存储)和较大的计算量,如果直接缩减d(字符级特征向量的维度)会损害模型性能,直接缩减L(词汇表的长度)会限制应用场景。...原创 2022-07-18 03:08:56 · 290 阅读 · 0 评论 -
【量化】A Quantization-Friendly Separable Convolution for MobileNets
将深度卷积+BN+ReLU+点卷积+BN+ReLU替换成深度卷积+点卷积+BN+ReLU(+L2正则化)原创 2022-07-18 03:03:32 · 344 阅读 · 0 评论 -
【剪枝】ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression
剪枝的思想可以被总结为一句话:(以某一标准)评估每一个神经元的重要性,移除不重要的那些神经元,再finetune整个网络来恢复精度。所以,剪枝一般有三个阶段:filter selection,pruning,与fine-tuning。...原创 2022-07-18 02:58:38 · 431 阅读 · 0 评论 -
【量化】Post-Training Quantization for Vision Transformer
Ranking aware+Bias correction+Nuclear Norm Based Mixed-Precision Quantization原创 2022-07-18 02:48:55 · 1563 阅读 · 1 评论 -
【Backbone】MOBILEVIT: LIGHT-WEIGHT, GENERAL-PURPOSE,AND MOBILE-FRIENDLY VISION TRANSFORMER
文章的主要思想是用transformer来代替convolution去进行global processing,而convolution主要是来进行local processing。原创 2022-07-18 02:37:29 · 280 阅读 · 0 评论 -
【量化】PTQ4ViT: Post-Training Quantization Framework for Vision Transformers
作者的idea来源于对ViT中激活值的分布的观察,以及对不同评估量化误差的指标对比的观察。原创 2022-07-18 02:25:26 · 1143 阅读 · 0 评论 -
利用torch.fx进行后量化
torch.fx 量化支持——FX GRAPH MODE QUANTIZATIONtorch.fx目前支持的量化方式:Post Training QuantizationWeight Only QuantizationDynamic QuantizationStatic QuantizationQuantization Aware TrainingStatic Quantization其中,Post Training Quantization中的Static Quantiza原创 2021-10-30 11:19:52 · 2195 阅读 · 0 评论 -
2021-10-30 用torch.fx后量化的bug记录
报错:ValueError: input model must be a GraphModule, please run torch._fx.symbolic_trace on your model before using quantize_fx. Got type:<class ‘main.EVAL’>原因:模型中有不是graph module的部分解决方案:提供的torch._fx.symbolic_trace来看是哪个部分出问题了:st = symbolic_trace(net.原创 2021-10-30 11:18:33 · 1942 阅读 · 0 评论 -
【Leetcode】动态规划题思路总结(Medium)
根据难度分为了三篇,Medium中回文串相关的会单独介绍一篇。目录Medium62. 不同路径64. 最小路径和198. 打家劫舍213.打家劫舍 II740. 删除并获得点数1143. 最长公共子序列最长公共子串300. 最长递增子序列375. 摆动序列Medium62. 不同路径爬楼梯的二维版本,不同的是路只能一格一格走状态:dp[i][j]到达当前格子[i][j]的可能的路径数递推公式:dp[i][j] = dp[i-1][j] ...原创 2021-08-16 00:40:04 · 223 阅读 · 0 评论 -
【leetcode】动态规划题思路总结(Easy)
全部写下来发现太长了,就根据难度分为三篇了。Easy70. 爬楼梯 / 509. 斐波那契数这道题可以算是最经典的动态规划题了状态:dp[i] 到达第i台阶可能的跳法递推公式:dp[i] = dp[i-1] + dp[i-2]初始状态:dp[0] = 0,dp[1] = 1,dp[2] = 2(这个边界条件也可以设为dp[0] = 1,dp[1] = 1)class Solution(object): def climbStairs(self, n): .原创 2021-08-15 23:15:16 · 133 阅读 · 0 评论 -
多任务学习优化总结 Multi-task learning(附代码)
Multi-task Learning(Review)多任务学习概述多任务学习优化(Optimization in Multi-task learning)Multi-Task Learning as Multi-Objective Optimization 阅读笔记Multi-Task Learning Using Uncertainty to Weigh LossesGradNorm:Gradient Normalization for Adaptive Loss Balancing原创 2021-07-29 03:08:52 · 15907 阅读 · 7 评论 -
【leetcode】53. 最大子序和的贪心解法
题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。除了常用的动态规划分治方法以外,还有一种基于贪心的算法,看起来很简单,细细想来实则很精妙:class Solution(object): def maxSubArray(self, nums): """ :t...原创 2021-07-26 00:12:58 · 207 阅读 · 0 评论 -
Column-and-constraint generation
论文地址:Solving two-stage robust optimization problems using a column-and-constraint generation method之前介绍过一个column-and-row generation方法,这次介绍一个更加常用的Column-and-constraint generation(C&CG)。从论文题目就可以看出,这个方法主要用于two-stage robust optimization (RO) ,也就是robust原创 2021-07-06 02:59:44 · 3375 阅读 · 4 评论 -
ResNet & MobileNetV1 & MobileNetV2设计对比分析
MobileNetV1论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision ApplicationsMobileNetV2论文地址:MobileNetV2: Inverted Residuals and Linear BottlenecksResNet论文地址:Deep Residual Learning for Image Recognition关于这些网络结构的介绍已经有很多了:MobileN原创 2021-07-02 11:34:10 · 1958 阅读 · 0 评论 -
Column-and-row Generation 列和行生成算法(三)
论文地址:Linear Programs with Column-Dependent-Rowsthe dual of (MP) - MP的对偶问题Dual master problem:基于DMP中的DMP-y,我们可以写出yk的reduced cost:实际上,这个式子很难去真正地衡量yk的cost,因为像第一节中说的一样,Pricing model对新列的判定不一定仍然有效,因为PP中只有对对偶的部分描述(只有对列的部分)仍然可用。这种情况下,cost很有可能是正值,生成将会提前原创 2021-06-29 07:17:36 · 613 阅读 · 1 评论 -
Column-and-row Generation 列和行生成算法(二)
上一节大概介绍了一下这个算法可以解决的问题,这一节仔细讲一下当我们拿到一个formulation之后,怎么应用这个算法。CDR问题形式与三个假设的讨论上一节中给出了两个例子:quadratic set covering model (QSC) 二次集合覆盖问题和multi-stage cutting stock (MSCS) 多阶段木材下料问题。MSCS:先把木材按一定的cutting pattern切成intermediate rolls(第一阶段),再把中间roll按不同的cutting p原创 2021-06-29 03:58:11 · 562 阅读 · 1 评论 -
批标准化(Batch Normalization)
为什么要进行BN?简单一句话,就是为了训练参数更好更有效地向前传播。而为什么参数会出现不好传播的情况呢?主要原因是激活函数的使用。为了增加模型的非线性表达能力,在层与层之间常常加上一层激活函数。而这层激活函数的存在会使得数据分布产生变化,大部分激活函数都会有一个敏感区间,而非敏感区间的数据有可能就在多层的参数传递后丢失了。尤其是在层数特别深的情况下,未经过标准化的数据起到的作用相当有限。所以,BN层的作用是把一个mini-batch内的所有数据,从不规范的分布拉到正态分布。这样做的好处是使得数据原创 2021-06-25 19:18:22 · 350 阅读 · 2 评论 -
Column-and-row Generation 列和行生成算法(一)
行生成算法与列生成算法其实行生成算法(Row Generation/Constraint Generation)与列生成算法(Column Generation)单独的算法解释是有的:“行生成,列生成”学习笔记浅析constraint generation(约束生成,行生成)和column generation(列生成)然而当两个算法需要统一成一个算法(Column-and-row Generation,以下简称CRG)的时候,发现相关的中资料特别少,那我就来抛砖引玉吧。行生成算法简单来原创 2021-06-22 08:23:54 · 3128 阅读 · 0 评论 -
列生成(column generation)的应用问题
当我们讨论列生成算法,一定会要了解一个木材下料问题(The cutting stock problem),问题的形式为,相关的问题解析有很多:单纯形法和列生成算法解释线性规划技巧: 列生成(Column Generation)列生成算法求解矩形下料问题(Matlab代码)列生成和分支定价这篇文章主要想把重心放在,当应用列生成算法时会遇到的一些问题及可能的解决方案。抽象来说,列生成的思路是在子区域(只包含部分列)先生成一个最小可行性产品(MVP),再去寻找可能减少成本(reduced原创 2021-06-22 04:10:37 · 1304 阅读 · 0 评论 -
【算法综述】分层强化学习(HRL)
分层的优点时间上的抽象(Temporal abstraction):可以考虑持续一段时间的策略 迁移/重用性(Transfer/Reusability):把大问题分解为小问题后,小问题学习到的解决方法可以迁移到别的问题之上 有效性/有意义(powerful/meaningful)-状态上的抽象(state abstraction):当前的状态中与所解决问题无关的状态不会被关注不同的最优分层最优(Hierarchically optimal):遵循分层结构,但是每一个子部件不一定是局部最优 回原创 2021-06-21 18:49:20 · 8571 阅读 · 0 评论 -
【leetcode】54. 螺旋矩阵
思路观察螺旋规律从 matrix[0][-1] 为起点,开始向右出发,那么第一次会走 n 步,n = matrix[0].size()向下转,会走 m - 1 步,m = matrix.size()向左转,n - 1 步向上转,m - 2 步因此,控制好步数,和步数的变化,将所有元素依次填入数组,即可得到答案使用方向数组 vector<vector<int>> dd ,参考图解:【螺旋矩阵 II】【螺旋矩阵 II】螺旋行走,图解方向数组设计方向数组的四个方向,与螺原创 2021-06-16 22:53:09 · 322 阅读 · 0 评论