工作的成长一刻
文章平均质量分 81
记录工作中那些有成长或者有成就感的任务
Briwisdom
这个作者很懒,什么都没留下…
展开
-
Vis-transformer的模型结构及数据流图梳理
vision_transformer顾名思义,是将自然语言处理中的Transformer的思想应用在图像分类中,将一张图像切成不同的patch之后作为sequence,使用Transformer来实现图像分类。本文主要是梳理vis-transformer的模型结构,以及图像数据在各种算子operator下的shape变化。方便理解和进一步开发。...原创 2022-05-04 23:23:18 · 2026 阅读 · 0 评论 -
双目立体匹配算法SGM步骤拆解
前面的视差计算步骤中,我们选择最小代价值对应的视差值,它是一个整数值(整数值我们才能有离散化的视差空间W H D WHDWHD),即整像素级精度,而实际应用中整像素精度基本无法满足需求,必须优化到子像素精度才有意义。census变换是指,窗口所有数据依次和其中心点数据相比,大于为1,小于等于为0,窗口按照左右,上下的顺序,组成一个5*5=25长度的二进制序列,即为该窗口的census变换数。如果是4路径聚合的话,就是左右,右左,上下,下上的四个路径的代价矩阵对应坐标位置值相加,就是最终聚合的代价矩阵。...原创 2022-08-07 21:22:38 · 6417 阅读 · 0 评论 -
关于仿射变换矩阵的一点理解
仿射变换,是一种二维坐标到二维坐标之间的线性变换;它保持了二维图形的“平直性”(直线经过变换后依然是直线)和“平行性”(二维图形之间相对位置保持不变,平行线依然是平行线,且直线上点的位置关系不变)。仿射变换可以写为如下形式。变换形式如下,a0, a1, a2, b0, b1,b2是对应2*3变换矩阵的几个值。针对图像而言,变换矩阵和图像之间关系为:dst_img=M*src_img仿射变换有如下几种变换形式:平移、旋转、放缩、剪切、翻转。为了涵盖平移,将变换矩...原创 2022-04-08 12:19:59 · 7311 阅读 · 0 评论 -
opencv源码之中值滤波medianBlur_SortNet解读
中值滤波,顾名思义,指的是对窗口内的数取中值,作为滤波处理的结果。如果不考虑优化的实现思路,就是把窗口内所有元素进行排序,然后取中间的值,排序算法的时间复杂度最小的是nlog(n),也就是需要进行n*log(n)次比较,当n=9时候,对全部数据进行排序需要进行至少27次比较。这里,你肯定好奇,为什么B1,B2,B3是这样取A1,A2,A3的比较结果,C这样取B1,B2,B3的比较结果呢?B1汇聚了A1,A2,A3的最大值,B2汇聚了A1,A2,A3的中间值,B3汇聚了A1,A2,A3的最小值。原创 2023-01-07 00:26:43 · 1786 阅读 · 0 评论 -
integral函数Opencv源码理解-leetcode动态规划的使用场景
本文将带你彻底理解integral的代码实现思路。Opencv有一个integral()函数,也就是积分图算法。有三种积分图类型,求和(sum),求平方和(sqsum),求旋转45°和(titled)。根据名字可知道,前两个是统计输出每个坐标的左上方像素和、左上方像素平方和,旋转45°的积分图则是统计每个像素点左上方45°到右上方45°区域的像素和。作为一名合格的算法工程师,肯定都有leetcode的刷题经验,leetcode上的经典动态规划类型题目,可以完美的在integral函数的代码中体现。原创 2022-11-23 01:01:32 · 986 阅读 · 0 评论 -
从Opencv之图像直方图源码,探讨高性能计算设计思想
纸上得来终觉浅,绝知此事要躬行。学会算法的理论很重要,但是把理论高效的实现也是需要一点点练习的。图像直方图的理论很简单,就是把一个图像的像素区间划分为几个子区间,然后统计图像中的像素包含在子区间内的个数。这里,我们可以很容易想到,图像每个像素之间对结果的影响是独立的,所以,代码实现时候可以考虑并行化设计。原创 2022-11-28 23:51:58 · 827 阅读 · 0 评论 -
基于pytorch简单实现稀疏3d卷积(SECOND)
卷积计算是深度学习模型的常见算子,在3D项目中,比如点云分割,由于点云数据是稀疏的,使用常规的卷积计算,将会加大卷积计算时间,不利于模型推理加速。由此SECOND网络提出了稀疏卷积的概念。稀疏卷积的主要理念就是由正常的全部数据进行卷积运算,优化了为只计算有效的输入点的卷积结果。稀疏卷积的思路网上已经有很多简明扼要的文章,比如知乎的这一篇就很清晰,本文就是根据这一篇的思路实现的一个简单的稀疏卷积流程。建议先看一下先了解。稀疏卷积的输入是有效输入点的索引坐标(哈希表)和对应的features值,大概流程原创 2021-11-27 21:59:02 · 3909 阅读 · 2 评论 -
优化版-基于pytorch简单实现稀疏3d卷积(SECOND)
上篇博文中,建立输入和输出的坐标关系是遍历输出点的方式,并不能节省时间,最优的方案是根据公式直接从输入点坐标计算得到对应的输出点坐标,根据这个思路,进行了代码优化。对于如下配置下,两种rulebook建立思路的使用时间对比如下图:shapes=(512,1024) # conv2d:(15,22)bs=1 #batch_sizeks=3 #kernel_size, when stride=2, just support kernel=3, when stride=1, kernel can原创 2021-11-30 00:13:00 · 2485 阅读 · 2 评论 -
简单讲讲RISC-V跳转指令基于具体场景的实现
结合具体场景的例子,简单讲讲risc-v中指令跳转的实现原创 2023-11-07 22:08:50 · 797 阅读 · 1 评论