算法
文章平均质量分 69
papaofdoudou
我的藏经阁.
展开
-
春晚魔术和约瑟夫问题
春晚刘谦的魔术涉及到置换群和约瑟夫问题,最终的结果是魔术开始时确定的几个变量确定好的,扑克牌只是道具和障眼法。网上一查发现这个问题发现颇有历史渊源,群论是法国21岁天才数学家伽罗瓦的惊世之作。约瑟夫问题则是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲了这样一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。原创 2024-02-10 23:40:55 · 518 阅读 · 0 评论 -
什么是哥德尔不完备定理?
到底什么是哥德尔不完备性定理, 总结成一句话就是,任何包含了自然数论的形式体系中,自洽性和完备性必定无法同时满足, 也就是说,哥德尔用数学及逻辑学的方法证明出了完备性与一致性无法共存于一个数学系统里,可能有点绕,我们一个概念一个概念的解释一下。首先是自然数论,自然数论也叫皮亚诺算数,这个体系是基于五大基础公里之上建立起来的,它们分别是aa'皮亚诺公理还有一套稍微复杂一点的形式化表达:在总之,这五条公理就是连没上过小学的人也都能理解,而数学上的工作,就是基于这五条牢不可破的公理,继续往上构建数学大厦。原创 2021-01-31 09:52:21 · 7336 阅读 · 0 评论 -
Ubuntu22.04安装CUDA深度学习环境&&cuda principle
对于BLOCK和GRID的尺寸,也用相应的三维常向量来表示,BLOCK的尺寸保存在常向量blockDim中,GRID的尺寸保存在gridDim中,他们都是CUDA C的内建变量,可以直接在设备代码中使用,在计算中,用户常常要给每个线程一个唯一的标识符,即线程号,以便给每个线程分配不同的任务。blockdim/griddim设计为三维的应该没有特别的原则性的必须这样做的理由,从计算结构的角度,二维甚至一维的与三维是等价的,三维可以做的,一维二维都可以做到。最后一行加上: blacklist nouveau。原创 2022-09-10 01:15:44 · 6877 阅读 · 1 评论 -
Img2Col卷积转矩阵的硬件的计算方式
卷积转GEMM神经网络90%以上的计算单元都是由卷积和全链接构成的,所以说,一个具有tensor core矩阵乘法单元的加速卡,已经足以加速绝大部分CNN类型的网络了。原创 2022-09-04 23:13:54 · 395 阅读 · 0 评论 -
RTT对MALI GPU的支持思路
熊大的RTT-SMART是除了Linux内核之外,唯一一个覆盖从小型嵌入式平台到到中高端终端SOC品类的操作系统,其中对GPU,图形系统和OPENGL的支持可谓是比较典型,简单搜集了一些这方面的实现资料,纪录如下。RTT-SMART支持原生的ARM-MALI GPU DDK,MALI-GPU是业内首屈一指的图形IP,看看它的对手有多强就知道了,比如高通的Adreno GPU, IMG的PoverVR, 苹果GPU等,都是业内的顶级产品。原创 2022-09-04 10:39:15 · 999 阅读 · 0 评论 -
C-Model以及ASIC设计
Cmodel一般应用在芯片开发前期,在芯片还没有制造出来的时候,为了避免等待而设计的芯片模型,目的是使部分应用可以在模型上开发,验证。这样做使芯片设计和软件开发可以并行直行,提高开发效率。开发模型可以用下图表示:一个典型的cmodel模型实现,Verisilicon NPU中的CMODEL,可以看到,循环中不断的调用执行接口:在构造初始化的过程中创建CMODEL主线程以及中断线程:中断线程:模拟中断挂起:HW Kici off硬件中断线程,实现中断按照事件逻辑触发,而不是在循环中轮询执行。原创 2022-08-30 22:45:52 · 5098 阅读 · 0 评论 -
GPGPU&&渲染GPU的工作原理和认知总结
从系统架构来看,针对GPU的架构转型还在进行过程中,目前GPU依然还处于外设的地位,还没有摆脱其从属身份,因为这个根本特性,对GPU的编程并不像对CPU编程那样直接,而调试和优化GPU程序的难度就很大了,要比CPU程序复杂很多。原创 2022-08-29 23:41:09 · 1746 阅读 · 0 评论 -
Linux下的OpenGL 3D渲染接口是谁提供的?Mesa
2D情况下的渲染比较简单,无论软件渲染还是硬件加速,本质上都是生成图像的像素阵列,只不过一个是由CPU来计算的,而另一个是由GPU来计算的,当然,对于硬件加速的情况,也不是完全用不到CPU,在这种情况下,CPU主要充当一个翻译角色,将数学,几何模型按照GPU的要求翻译为其可以识别的指令和数据。原创 2022-08-06 11:15:28 · 812 阅读 · 0 评论 -
1000瓶水里有1瓶毒药,10只老鼠能试出来吗?
聪明的朋友是不是很快归纳出规律了?10只老鼠,最多可以试1024瓶,那1000瓶当然可以试出来了。推理到这一步,对大部分人来说,已经足够了。尤其对小学生而言,能进行这样的推理已是相当不错了,是佼佼者了三、深入探究我们继续探究,尝试用定理或公式来推导验证,使结论在逻辑上更加严谨。首先回顾前面的过程!回到3只老鼠的方法图根据公式如果再增加1瓶,这1瓶,给1只老鼠、2只老鼠、3只老鼠试药,都会出现和原来重复的组合,导致无法区分。因此不能再增加。因此8瓶是最大的。依照这个方法再计算10只老鼠:.........转载 2022-08-03 22:45:42 · 901 阅读 · 0 评论 -
计算一组Tensor的直方图C算法实现
本文介绍其程序实现首先构造一组TENSOR向量,维度为150528的列向量。观察其原始的直方图分布,其分布特点如下图所示运行3BINS。原创 2022-07-20 21:24:51 · 348 阅读 · 0 评论 -
Yolov5s模型在全志V853平台上的部署方法和应用
AI部署这个词儿大家肯定不陌生,可能有些人还不是很清楚这个是干嘛的,但总归是听过了。近些年来,在深度学习算法已经足够卷之后,深度学习的另一个偏向于工程的方向–部署应用落地,才开始被谈论的多了起来。当然这也是大势所趋,毕竟AI算法那么多,如果用不着,只在学术圈搞研究的话没有意义。因此很多AI部署相关行业和AI芯片相关行业也在迅速发展,现在虽然已经2022年了,但我认为AI部署相关的行业还未到头,AI也远远没有普及,还有很多的场景未能落地。随着人工智能逐渐普及,使用神经网络处理各种任务的需求越来越多,如何在生产原创 2022-07-02 14:09:08 · 3419 阅读 · 8 评论 -
为什么做生意可以让双方生活的更好?
经济学中有个著名的结论,贸易可以让贸易双方都获益,这里我们用一个例子来说明,为什么是这样的。分析如下:馒头对于甲的价值: 0.5瓶啤酒=1个馒头馒头对于乙的价值: 6瓶啤酒=1个馒头结论1:馒头对于乙的价值更大,1个馒头对甲只值半瓶啤酒啤酒对于甲的价值: 2个馒头=1瓶啤酒啤酒对于乙的价值: 0.16667个馒头=1瓶啤酒结论2:啤酒对于甲的价值更大,1瓶啤酒对乙只值0.16667个馒头所以,如果甲1个馒头换乙3瓶啤酒喝,对两个人都划算。乙怎么想?本来我一个馒头值6瓶啤酒,现在我只要出三瓶啤酒,就能换来一个原创 2022-06-24 23:18:27 · 924 阅读 · 0 评论 -
为何汽车从低档位启动,扭矩最大?
关于汽车的扭矩分析,我们可以从变速自行车的力矩分析入,先画出变速自行车受力分析原理:根据力矩平衡分析:得到:当路面最大静摩擦力和后轮半径不变的情况下:为定值。所以,踏板力F为:所以,根据公式可以看出,中轴越长,骑车越省力,链轮和飞轮半径比越大,越费力,这和直观的感受是相符的。另外,传递给后轮的扭矩为:所以,可以看到,当飞轮为大轮,链轮为小轮的时候,传递给后轮的扭矩越大,骑行越轻松,但这个时候档位其实对应的是比较低的档位的。 汽车变速箱原理其实和自行车变速器是类似的,对比自行车,我们可以理解了为何汽车以低档位原创 2022-06-12 21:47:00 · 1187 阅读 · 2 评论 -
深度学习量化原理之-Python程序说明
关于量化原理的博客已经写了几篇一文搞懂深度学习加速单元NPU的量化原理_papaofdoudou的博客-CSDN博客_npu原理模型量化原理及tflite示例_papaofdoudou的博客-CSDN博客_模型量化原理关于量化原理的思考_papaofdoudou的博客-CSDN博客量化的数学原理_papaofdoudou的博客-CSDN博客_量化原理本文则以一个程序来说明量化的具体计算过程:用python2执行上述程序:......原创 2022-06-12 12:09:15 · 535 阅读 · 0 评论 -
OPENCV图像直方图以及均值化
直方图是我们在照片中使用来查看图像中每个值有多少像素,照片中的每个像素的值都从0(黑色)到255(白色),图的左侧代表音阶的暗色调,右侧代表较亮的色调。在彩色摄影中,每个像素对于每种颜色都有其自己的值(0-255)。图片中的直方图显示了每种颜色(红色,蓝色和绿色)的像素值分布.图像直方图,也叫灰度直方图,反映了图像像素分布的统计特征,是图像处理中简单有效的工具,图像直方图广泛地应用于图像处理的各个领域,如:特征提取,图像匹配,灰度图像的阈值分割,基于颜色的图像检索以及图像分类。图像的直方图的形态很大原创 2022-05-29 10:15:11 · 1482 阅读 · 0 评论 -
百度PaddlePaddle OCR模型试玩儿
话不多说,咱们直入主题开发环境环境信息如下图所示:下载模型环境git clone https://github.com/nazarovsky/PaddleOCR-rec-ONNX-demo.git配置环境我用的anaconda python发行版,各个包的安装信息如下:之后运行测试python3 demo_razmetka_rec.py使用还是蛮简单的,至此,对OCR之类的应用有了感性的认识。后面有时间对里面的细节进行一些分析,由术入道,以道驭术。原创 2022-04-27 23:09:33 · 2902 阅读 · 0 评论 -
pytorch yolov5 推理和训练验证环境搭建
关于之前pytorch框架下yolov3推理和训练环境搭建可以参考,本文所使用的环境和这篇记录一致。pytorch yolov3 推理和训练环境搭建_papaofdoudou的博客-CSDN博客_yolov3环境搭建下载代码框架环境: git clone https://github.com/ultralytics/yolov5安装依赖:pip install -r requirements.txt下载YOLOV5模型文件:下载链接 :Releases · ultraly原创 2022-04-21 23:43:26 · 4258 阅读 · 3 评论 -
NCNN人脸检测和关键点检测
参考以下连接获取原始 retinaface模型:mirrors / wzj5133329 / retinaface_caffe · GitCodehttps://github.com/deepinsight/insightface/tree/master/RetinaFaceretinaface(mxnet)的CAFFE模型https://github.com/Charrin/RetinaFace-Cpp/tree/master/convert_models/mnet使用caffe.原创 2022-04-20 23:07:53 · 3160 阅读 · 1 评论 -
Dhrystone DMIPS跑分原理以及CPU&NPU等效算力分析
下载dhrystone,编译,排错,再编译,再排错,编译PASS,一顿操作之后,dhrystone成功被移植到某款Cortex-A7平台,主频跑1.2G HZ的情况下,在melis上测试,结果如下:msh />dhrystone Dhrystone Benchmark, Version 2.1 (Language: C) Program compiled without 'register' attribute Please give the number of runs throu原创 2022-04-16 19:43:40 · 4405 阅读 · 1 评论 -
全连接层的算力(矩阵乘法)计算方式
神经网络的全链接层计算过程可以看成两个矩阵相乘,如下图所示,一个MxN的矩阵乘以一个NxP的矩阵,得到一个MxP的矩阵,进行乘法的次数为:(N)*(M*P)加法次数为:(N-1)*M*P所以,矩阵乘法总的计算量为(N)*(M*P)+(N-1)*M*P = (2N-1)*M*P每计算出一个结果,需要对一个N维向量作内积,内积需要进行N次乘法和N-1次加法(第一次计算不需要作加法,或者看成+0,就不需要-1了),计算一个结果的计算次数为2N-1.比如,就拿3*3的矩阵乘法为例:计算如下:所以,它的计算量为:乘法原创 2022-04-09 08:56:55 · 5864 阅读 · 1 评论 -
TIM-VX编译体验
下载代码:github仓库地址:GitHub - VeriSilicon/TIM-VX: Verisilicon Tensor Interface Module实际代码量并不多,包含仓库在内共有87M。编译TIM-VX支持BAZEL和CMAKE两种构建系统,先用CMAKE尝试编译一下,编译顺序命令如下:mkdir host_buildcd host_buildcmake ..make -j8make install首先遇到了编译错误,是CMAKE版本太低导致升级原创 2022-04-09 05:02:51 · 3531 阅读 · 2 评论 -
proto-buf模型格式测试一例
深度学习神经网络的输出模型有多种格式,这其中有一种格式使用比较广泛,并且背景深厚,它就是protobuf格式,关于这个格式的介绍请参考这篇博客:ONNX格式解析之google protobuf解析_papaofdoudou的博客-CSDN博客_onnx protoONNX模型是按照google protobuf格式保存的,模型训练的目的就是为了得到变量的权值,只不过是纯数字罢了,但是我们也不能就这样把这些数字一个一个地写入文件,因为在要保存的模型文件里,不光要保存权值,也要告诉之后用这个模型的人,模型结原创 2022-04-05 21:52:55 · 2726 阅读 · 0 评论 -
高斯YOLOV3模型的验证环境搭建
下载权重Gaussian_yolov3_BDD.weightshttps://drive.google.com/open?id=1Eutnens-3z6o4LYe0PZXJ1VYNwcZ6-2Yhttps://drive.google.com/open?id=1Eutnens-3z6o4LYe0PZXJ1VYNwcZ6-2Y然后使用darknet的环境进行验证,关于darknet环境的搭建参考博客:Yolov3框架目标检测推理环境测试_papaofdoudou的博客-CSDN博客验证高斯YOLO原创 2022-04-03 22:03:58 · 3238 阅读 · 0 评论 -
判断点在矩形框内的逻辑
如下图所示,我们需要寻找一个充分必要条件,能够完备地表示点和矩形框的内外关系,首先我们用左上角和右下角两个坐标来表示矩形框。所以,P在矩形框内部,等价于下面的条件:所以:用C语言表示如下:或者,我们不考虑矩形的四个点,而是考虑矩形的中心点和点的位置关系:结束!...原创 2022-03-27 14:08:42 · 1440 阅读 · 0 评论 -
ONNX支持算子列表
ONNX算子列表 Abs-13 SequenceEmpty Abs-6 SequenceErase Abs-1 SequenceInsert Acos-7 SequenceLength Acosh-9 Shape Add-14 Shrink Add-13 Sigmoid Add-7 Sign Add-6 Sin Add-1 Sinh And-7 Slice And-1 ...原创 2022-03-26 23:02:11 · 4213 阅读 · 1 评论 -
darknet框架算子类型
整理了一份darknet网络的算子全图结束!原创 2022-03-26 17:29:30 · 558 阅读 · 0 评论 -
判断点和直线位置关系的算法实现
在线段上给定点P的所在方向意味着给定点P和线段(比如AB)的坐标,我们必须确定点P相对于线段的方向。也就是这个点是在线段的右边还是在线段的左边。这个点可能在线段的后面,在这种情况下,我们通过延伸线段来假设一条假想的线,并确定点的方向。点与直线的位置关系,只有三种情况存在,分别是点在直线左边,或在直线右边,或在就在线段本身上。这是一个非常基本的问题,在在线地图导航中经常遇到,例如:假设用户a在下图中必须到达C点,用户首先到达B点,但之后用户a如何知道他需要右转还是左转?原创 2022-03-26 16:17:28 · 2191 阅读 · 1 评论 -
产生任意进制乘法表的程序代码
现在的小学生从二年级上学期开始学习九九乘法口诀表,不知道你想过这个问题没有,就是为什么乘法口诀表是十进制的呢?当然是因为我们从小学习算术是从十进制记数开始的,但是为什么人们选择了十进制来记数呢?实际上,以十为基底的十进制数字可以变成任何其它基底的数字,一般规则是,假如目标数基底为S,用S连续除以十为基底的整数Z,所的的与数将是在以S为基底的系统中的数码。既然选择任何一个基底都可以,那么究竟选择那个基底最合适呢?太小的基底有它的不方便之处,而大的基底要求记住更多的数字符号,并且乘法表更大。最终人们原创 2022-03-17 12:03:43 · 603 阅读 · 0 评论 -
激活函数:Sigmod&tanh&Softplus&Relu详解
什么是激活函数?激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。其主要目的是将A-NN模型中一个节点的输入信号转换成一个输出信号。该输出信号现在被用作堆叠中下一个层的输入。如果我们不运用激活函数的话,则输出信号将仅仅是一个简单的线性函数。线性函数一个一级多项式。现如今,线性方程是很容易解决的,但是它们的复杂性有限,并且从数据中学习复杂函数映射的能力更小。一个没有激活函数的..转载 2022-03-16 18:40:11 · 1285 阅读 · 0 评论 -
Darknet卷积层算力评估
darknet是用C语言开发的一款非常精简高效的推理框架,它的开发者也是YOLO的作者,关于darknet推理环境的介绍网上有很多,不再过多介绍,这里只是尝试解读darknet推理过程中的一些细节知识点,就从推理输出的算力来源开始。一张经典的输出:推理过程中的LOG显示中,BF是BFOPS的缩写,它表示什么意思呢?BFLOPS 有两个不同场景下的解释。 第一种是描述硬件运算性能的单位,这时其全称是Billion Float Operations Per Second,即每秒能进行多少个十亿次原创 2022-03-15 23:44:37 · 4488 阅读 · 1 评论 -
Makefile规则日积月累
1."="和":="的区别"=" makefile会将整个makefile展开后,再决定变量的值,也就是说,变量的值将会是整个makefile中最后被指定的值.x = fooy=$(x)barx=xyzy的值是xyzbar,而不是foobar":="表示的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。x:=fooy:=$(x)barx:=xyz以上定义只对变量的赋值会有影响,但命令中的定义不会受影响,而是全局展开的原创 2022-03-14 11:13:50 · 149 阅读 · 0 评论 -
Pytorch框架训练MNIST数据集
代码:import torchfrom torchvision import datasets, transformsimport torch.nn as nnimport torch.optim as optimfrom torch.autograd import Variablefrom datetime import datetimeclass Config: batch_size = 64 epoch = 10 alpha = 1e-3 pri原创 2022-02-26 22:57:10 · 994 阅读 · 0 评论 -
几个问题的绝美几何证明
相信如果有人让你举个例子说明几何之美,我想就是它了:结束~!原创 2022-02-26 16:43:38 · 204 阅读 · 0 评论 -
高跟鞋,五角星与黄金分割比
黄金分割的历史及黄金分割的标准定义黄金分割这一概念何时、由何人率先提出在数学界一直没有定论。据记载黄金分割在文艺复兴前后经阿拉伯人传入欧洲;也有一个观点认为由于公元前6世纪古希腊的毕达哥拉斯学派研究过正五边形及其他正多边形的作图,因此我们可推断当时毕达哥拉斯学派已经掌握了黄金分割技术;主流观点认为古希腊雅典学派的著名数学家欧道克萨斯是提出该概念的第一人!在讲如何找黄金分割点之前我想重提一下毕达哥拉斯的经典言论:凡是美的东西,都有共同的特征,这就是部分与部分及部分与整体之间的协调一致性!以下是原创 2022-02-25 20:03:48 · 1717 阅读 · 0 评论 -
商汤 | 离线量化算法研究,从经典到原创
北京时间 8月23日(周一)19:00,商汤学术和智东西公开课共同举办的模型量化算法与工具系列课程第一期,商汤科技高级研究员龚睿昊为大家带来了离线量化算法研究的专题课程。模型量化作为一种硬件支持的压缩方式,被广泛地应用在工业界中。离线量化是生产量化模型中的低成本、可以解耦和模型训练解耦的方式,被广泛的使用。硬件厂商大部分都会在自己的工具里支持基本的理想化算法,但是由于缺乏实际场景的打磨,对掉点问题的严峻性缺乏预判,因此需要引入一些更先进的离线量化算法和比较成体系的落地经验。本次课程总结了重要的难...原创 2022-03-16 18:19:39 · 958 阅读 · 0 评论 -
模型量化原理及tflite示例
什么是量化模型的weights数据一般是float32的,量化即将他们转换为int8的。当然其实量化有很多种,主流是int8/fp16量化,其他的还有比如二进制神经网络:在运行时具有二进制权重和激活的神经网络,以及在训练时计算参数的梯度。 三元权重网络:权重约束为+1,0和-1的神经网络 XNOR网络:过滤器和卷积层的输入是二进制的。 XNOR 网络主要使用二进制运算来近似卷积。现在很多框架或者工具比如nvidia的TensorRT,xilinx的DNNDK,TensorFlow,PyTorch转载 2022-02-23 19:47:34 · 1122 阅读 · 0 评论 -
基于pytorch框架的lenet模型并导出ONNX格式
import torch.nn as nnimport torch.nn.functional as Fimport torch device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d.原创 2022-02-22 22:55:25 · 656 阅读 · 0 评论 -
yolact模型推理导出ONNX环境搭建
下载地址:git clone https://github.com/dbolya/yolact.git安装环境:cd yolact,执行conda env create -f environment.yml下载模型权重:运行测试用例:python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --images=/hom原创 2022-02-20 17:09:26 · 4059 阅读 · 2 评论 -
RVLink仓库~
RVLink,貌似是一个基于RV开发板的ICE仿真器项目,先捂着,有空研究研究~RV-LINK: 用RISC-V开发板实现的RISC-V仿真器。https://gitee.com/zoomdy/RV-LINK结束!原创 2022-02-19 16:14:48 · 269 阅读 · 0 评论 -
改变网络输入图像分辨率需要不需要重新训练?
以yolov3为例,我们做实验验证这个问题,yolov3有三种格式的分辨率输入,分别是320*320, 416*416, 608*608,验证思路是分别将这三种尺寸的图像输入网络,看推理效果有没有受到影响,另外,为了便于对照,我们再设置一些额外的网络不支持的分辨率,看现象如何。关于图像前处理操作的流程参考下面博客:Darknet框架解读_tugouxp的专栏-CSDN博客320*320:执行./image_yolov3.sh,结果如下所示,效果非常不错:推理时间为4036ms.原创 2022-02-18 23:18:09 · 1340 阅读 · 0 评论