
人工智能
文章平均质量分 71
papaofdoudou
我的藏经阁,用数学解释问题,用编程解决问题
展开
-
证明:指数函数和阶乘谁增长的更快?
在编程实践中,工程师将多项式时间作为算法可行性的分界线,也就是可以用来表示的复杂度,这里k是常数。指数时间,阶乘时间是垂直的悬崖峭壁,普通人很难征服,而多项式时间虽需攀登,但终可抵达。所以,实践中通常选择一个能够在多项式时间内解决问题的算法。但是否是所有的问题都能找到多项式的复杂度呢?这个问题涉及到数学难题P=NP了,目前尚无结论。原创 2024-03-24 21:35:02 · 6868 阅读 · 0 评论 -
搭建Synopsys 数字IC IDE开发化境
6)这先点击 自定义硬件,内存我修改为4GB,处理器数量为2,核心为2。然后记得添加centos镜像,设置好点击关闭,回到上个页面,点击完成。5)磁盘空间我设置为50G,空间没有具体的要求,最好多留一些,方便后面安装更多的软件;4)我这里虚拟机取名为zlcao-eda,将安装路径修改到D盘,这里空间大,下一步;之后使用VMTOOLS完善系统,点击安装TOOLS,前面图中有显示,桌面刷出虚拟盘;8)我这里选择中文,默认选择英文也可以,看个人吧,然后点击继续;1)点击 创建新的虚拟机,默认勾选典型,下一步;原创 2023-08-12 23:56:48 · 565 阅读 · 0 评论 -
GPU推理和端侧NPU推理的一处不同
端侧AI推理主要使用NPU完成,为了在性能,功耗和面积和通用性之间取得平衡,主流NPU采用了加速器架构,将算子固化在硬件中,并辅以可编程单元执行一些自定义算子/长尾算子兼顾灵活性。原创 2023-06-03 12:53:03 · 2539 阅读 · 0 评论 -
图论之毕克定理证明
毕克定理是指一个计算点阵中顶点在格点上的多边形面积公式,该公式可以表示为S=N+L÷2-1,其中N表示多边形内部的点数,L表示多边形落在格点边界上的点数,S表示多边形的面积。公式默认一个小正方形边长为1,即面积为1,若一个格点正方形边长为2(面积为4)时,需要在原有公式的基础上乘4.1.定理大概描述:给定一个网格,每个格子由边长为1的单位正方形组成。原创 2023-04-02 23:44:36 · 12409 阅读 · 0 评论 -
Google gtest单元测试框架环境搭建
Gtest是一个跨平台的(Linux、Mac OS X、Windows、Cygwin、Windows CE and Symbian)C++单元测试框架,由google公司发布。gtest是为在不同平台上为编写C++测试而生成的。它提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”等等。简而言之:Gtest测试框架可以在不同平台上为编写C++测试.原创 2022-11-01 17:42:29 · 652 阅读 · 0 评论 -
基于ubuntu18.04.6的gstreamer-plugin开发环境搭建
开发环境下载压缩包,我们使用1.21.1版本的插件和gstearmer核心软件包。安装依赖GSL和GMP库需要从源码开始编译安装,按照./configure && make && make install 三部操作即可安装。原创 2022-10-23 00:28:06 · 1963 阅读 · 1 评论 -
Img2Col卷积转矩阵的硬件的计算方式
卷积转GEMM神经网络90%以上的计算单元都是由卷积和全链接构成的,所以说,一个具有tensor core矩阵乘法单元的加速卡,已经足以加速绝大部分CNN类型的网络了。原创 2022-09-04 23:13:54 · 454 阅读 · 0 评论 -
计算机体系结构-helloworld背后发生了什么?
一个简单的a.out程序,其实足够覆盖计算机体系结构中的大部分内容,图中,CPU,总线,外设,存储器在操作系统的统一支配下联动,完成了输出helloworld的功能,还是非常复杂的。原创 2022-08-22 18:09:49 · 186 阅读 · 0 评论 -
NPU运行过程中,读带宽高还是写带宽高?
先说答案,肯定是读带宽大于写带宽,主要的原因在于权重是只读不写的,而feature map是既读又写的。举例为证,所以,绘制欧拉图,写带宽是是读带宽的一部分。原创 2022-08-22 08:54:47 · 538 阅读 · 0 评论 -
什么是物理不可克隆(PUF)?为何是解决芯片安全的绝佳方法?
一个标准的DRAM单元的工作原理是用一个单一的电容来保持作为二进制状态的存储电荷,以及一个控制电荷进出电容的通断晶体管。对于一个给定的PUF,一个特定的输入,被称为 "质询",将产生一个输出响应,(质询应答认证challenge-response)该响应对特定的PUF是唯一的,因此是不可克隆的。相反,PUF根本不存储密钥。首先,PUF的一个最好的特点是,它是一种固有的非易失性技术,但它并不实际存储任何密钥。重要的是,虽然这些变化在不同的集成电路之间可能是随机的,但一旦知道,它们是确定的和可重复的。...转载 2022-08-10 08:30:23 · 1933 阅读 · 0 评论 -
Linux下的OpenGL 3D渲染接口是谁提供的?Mesa
2D情况下的渲染比较简单,无论软件渲染还是硬件加速,本质上都是生成图像的像素阵列,只不过一个是由CPU来计算的,而另一个是由GPU来计算的,当然,对于硬件加速的情况,也不是完全用不到CPU,在这种情况下,CPU主要充当一个翻译角色,将数学,几何模型按照GPU的要求翻译为其可以识别的指令和数据。原创 2022-08-06 11:15:28 · 1002 阅读 · 0 评论 -
计算一组Tensor的直方图C算法实现
本文介绍其程序实现首先构造一组TENSOR向量,维度为150528的列向量。观察其原始的直方图分布,其分布特点如下图所示运行3BINS。原创 2022-07-20 21:24:51 · 388 阅读 · 0 评论 -
汽车换挡是怎么回事
有人说自动挡停车熄火需要先换挡到N档,打开手刹,在继续换到P档,也就是必须要经过N档停顿一下,这样才不伤车,并且说明了原因,因为从D到P要经过R档。从下面这篇文章分析来看,这种说法纯属无稽之谈。...原创 2022-07-13 07:54:17 · 290 阅读 · 0 评论 -
CPU,GPU,NPU的架构差异对比
有价值的脑力劳动永远比单调枯燥乏味的体力劳动更能产生价值,所以,或许有一天,算力的最终形态的载体可能不是NPU,GPU甚至是CPU,但是,那个烙印在算力载体上的最深刻的基因,一定是来自于CPU的。从设计角度,传统处理器为减少每个核心上顺序代码的执行时间而优化,从而增加每个内核的复杂性是以提供功更少的核心为代价的,传统的处理器通常使用复杂的控制逻辑和大的缓存处理器,目的为了有效的处理条件分支,流水线STALL,数据局部性差的问题。支持顺序,循环,分支选择三种执行流,所以图灵完备,NPU显然不是。原创 2022-07-11 13:07:21 · 12527 阅读 · 0 评论 -
RK3566 AI开发 Docker 环境搭建
开发主机环境: 安装docker环境参考以下链接安装DOCKER:测试验证:docker环境自此安装结束。从百度网盘下载:百度企业网盘-企业云盘-企业云存储解决方案-同步云盘密码:rknn运行DOCKER镜像执行如下命令加载DOCKER镜像加载成功后 ,执行docker images查看状态:如上状态表示加载成功。下载用例,在如上的百度网盘中下载用例:将下载后的用例放置在HOST的一个目录中,本例中放在之后,执行如下命令运行docker,运行后将进入DOCKER的BASH环境:原创 2022-07-05 13:30:17 · 1046 阅读 · 0 评论 -
一种基于五官坐标的人脸姿态评价方法
照相机的发明满足了人们记录生活的需求,为了用光影记录下最美丽的事物,越来越多的消费电子产品集成了拍照功能,例如手机。对于某些产品来讲,拍照是核心的功能,这类产品包括安防IPC, 数码相机等等。在使用这些产品时,最好的拍摄角度是面对镜头抓拍正面人脸。但是对于实际应用场景中快速运动的人体场景来说,高质量的人脸抓拍依赖于人脸检测和人脸打分评价两项技术。随着当前AI技术的快速发展,人脸检测的准确率已经达到了非常高的精度,并且可以基于人脸检测算法同时得到人脸位置和五官坐标信息。这里介绍一种低成本的正面人脸评价算法,基原创 2022-07-03 19:03:44 · 803 阅读 · 0 评论 -
为何汽车从低档位启动,扭矩最大?
关于汽车的扭矩分析,我们可以从变速自行车的力矩分析入,先画出变速自行车受力分析原理:根据力矩平衡分析:得到:当路面最大静摩擦力和后轮半径不变的情况下:为定值。所以,踏板力F为:所以,根据公式可以看出,中轴越长,骑车越省力,链轮和飞轮半径比越大,越费力,这和直观的感受是相符的。另外,传递给后轮的扭矩为:所以,可以看到,当飞轮为大轮,链轮为小轮的时候,传递给后轮的扭矩越大,骑行越轻松,但这个时候档位其实对应的是比较低的档位的。 汽车变速箱原理其实和自行车变速器是类似的,对比自行车,我们可以理解了为何汽车以低档位原创 2022-06-12 21:47:00 · 1370 阅读 · 2 评论 -
深度学习量化原理之-Python程序说明
关于量化原理的博客已经写了几篇一文搞懂深度学习加速单元NPU的量化原理_papaofdoudou的博客-优快云博客_npu原理模型量化原理及tflite示例_papaofdoudou的博客-优快云博客_模型量化原理关于量化原理的思考_papaofdoudou的博客-优快云博客量化的数学原理_papaofdoudou的博客-优快云博客_量化原理本文则以一个程序来说明量化的具体计算过程:用python2执行上述程序:......原创 2022-06-12 12:09:15 · 582 阅读 · 0 评论 -
curl编译安装以及断点续传下载原理
根据百度百科的解释:CURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。cURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Go原创 2022-05-31 23:30:13 · 1237 阅读 · 0 评论 -
OPENCV图像直方图以及均值化
直方图是我们在照片中使用来查看图像中每个值有多少像素,照片中的每个像素的值都从0(黑色)到255(白色),图的左侧代表音阶的暗色调,右侧代表较亮的色调。在彩色摄影中,每个像素对于每种颜色都有其自己的值(0-255)。图片中的直方图显示了每种颜色(红色,蓝色和绿色)的像素值分布.图像直方图,也叫灰度直方图,反映了图像像素分布的统计特征,是图像处理中简单有效的工具,图像直方图广泛地应用于图像处理的各个领域,如:特征提取,图像匹配,灰度图像的阈值分割,基于颜色的图像检索以及图像分类。图像的直方图的形态很大原创 2022-05-29 10:15:11 · 1580 阅读 · 0 评论 -
ubuntu18.04安装并测试gem5模拟器
开发环境安装依赖:sudo apt install build-essential git m4 scons zlib1g zlib1g-dev libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev python-dev python依赖简单介绍如下:SCons:gem5使用SCons作为它的构建环境。SCons类似于make,它将Python脚本用于构建过程的所有方面。这使得构建系统非常灵活(原创 2022-05-27 06:45:20 · 1610 阅读 · 0 评论 -
opencv二值化代码实现
基于OPENCV的图像二值化代码:#include <opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include"opencv2/imgproc/imgproc.hpp" #include <iostream> using namespace cv;Mat SrcImage;Mat GrayImage;Mat BinaryImage; void on_tra原创 2022-05-22 22:55:21 · 1034 阅读 · 0 评论 -
RSA密钥生成原理以及工具rsaeuro的移植和编译
RSA加密算法是一种非对称加密算法,也就是说,RSA的使用者拥有两个协同使用的密钥,公钥e和私钥d.重要的是,给定公钥e,用户可以先秘密选取两个足够大的素数p和q,然后根据公式迅速计算出与公钥e对应的私钥d. 为了让其他人能够向自己发送加密信息,用户应同时披露这两个素数的乘积N=pq,这样的话,如果攻击者能能够将N分解为两个素数p和q乘积的话,他就可以按照用户执行过的步骤,根据公钥e迅速计算出私钥d,这样他就破译了RSA加密算法。实际上这个概率可以根据素数定理得到,并不是很低,完全可以做到。原创 2022-05-20 21:37:24 · 1976 阅读 · 0 评论 -
汽车/车载/自动驾驶/辅助驾驶相关认知记录
汽车扭矩指的是汽车的扭矩力,也是发动机从曲轴端输出的力矩。在发动机功率固定的条件下,扭矩与发动机的转速成反比关系,转速越快发动机的扭矩就越小,转速越慢发动机的扭矩就会越大,同时也反映出了汽车在一定范围内的负载能力。发动机的扭矩和功率是一样的,这是发动机主要的参数之一,通过发动机的功率能够反映出汽车的性能,包括汽车的加速度、爬坡能力以及悬挂等,扭矩越高汽车运行的反应便越好,扭矩越大说明汽车的承载力就越大,加速性能就会越好,发动机换挡的次数就会变少,这样可以减少发动机的磨损。原创 2022-05-19 09:07:02 · 656 阅读 · 0 评论 -
Baidu NLP词法分析工具LAC使用体验
LAC全称Lexical Analysis of Chinese,是百度自然语言处理部研发的一款联合的词法分析工具,实现中文分词、词性标注、专名识别等功能。该工具具有以下特点与优势:效果好:通过深度学习模型联合学习分词、词性标注、专名识别任务,词语重要性,整体效果F1值超过0.91,词性标注F1值超过0.94,专名识别F1值超过0.85,效果业内领先。 效率高:精简模型参数,结合Paddle预测库的性能优化,CPU单线程性能达800QPS,效率业内领先。 可定制:实现简单可控的干预机制,精准匹配用户原创 2022-05-08 13:50:10 · 2869 阅读 · 1 评论 -
Insightface人脸特征识别模型环境搭建和试玩儿
得到输出推理结果t1_output.jpg,图中位于框左上角的字符分别表示性别和年龄,F(emal).age, M(ale).age.这说明,性别和年龄也作为独立的维度参与到模型训练的过程。简单探讨一下原理,从上面的图形可以看出,几位美女的脸部轮廓已经抓取到了,接下来就可以用这些轮廓数据构成一个tensor,和标准的人脸TENSOR 做一些相似度比较,从而得到是否是脸的概率。执行python py.py。原创 2022-05-03 01:25:45 · 4170 阅读 · 3 评论 -
MIPS Linux内核编译构建环境的搭建
AI的端侧应用离不开各种算力平台,目前形成了CPU+NPU,CPU+FPGA以及CPU+GPU的几类算力搭配,他们各有优势,也各有弱点。先看它们的共同点,从组合名字可以看出,那就是他们都依赖CPU,这是因为无论NPU,FPGA还是GPU,它们的架构特点决定了在流水线pipeline,逻辑控制方面要弱于CPU,它们要么作为专用算力加速器,没有完备的指令集系统,比如GPU有简单的流水线,可以完成取指,解码执行的操作,但是它的流水线适合做大量的SIMD并行数据计算,无法完成复杂的执行流以及逻辑控制。另外还有一些没原创 2022-04-17 21:34:45 · 3616 阅读 · 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 · 4817 阅读 · 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 · 6697 阅读 · 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 · 3658 阅读 · 2 评论 -
proto-buf模型格式测试一例
深度学习神经网络的输出模型有多种格式,这其中有一种格式使用比较广泛,并且背景深厚,它就是protobuf格式,关于这个格式的介绍请参考这篇博客:ONNX格式解析之google protobuf解析_papaofdoudou的博客-优快云博客_onnx protoONNX模型是按照google protobuf格式保存的,模型训练的目的就是为了得到变量的权值,只不过是纯数字罢了,但是我们也不能就这样把这些数字一个一个地写入文件,因为在要保存的模型文件里,不光要保存权值,也要告诉之后用这个模型的人,模型结原创 2022-04-05 21:52:55 · 2785 阅读 · 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 · 4461 阅读 · 1 评论 -
darknet框架算子类型
整理了一份darknet网络的算子全图结束!原创 2022-03-26 17:29:30 · 582 阅读 · 0 评论 -
判断点和直线位置关系的算法实现
在线段上给定点P的所在方向意味着给定点P和线段(比如AB)的坐标,我们必须确定点P相对于线段的方向。也就是这个点是在线段的右边还是在线段的左边。这个点可能在线段的后面,在这种情况下,我们通过延伸线段来假设一条假想的线,并确定点的方向。点与直线的位置关系,只有三种情况存在,分别是点在直线左边,或在直线右边,或在就在线段本身上。这是一个非常基本的问题,在在线地图导航中经常遇到,例如:假设用户a在下图中必须到达C点,用户首先到达B点,但之后用户a如何知道他需要右转还是左转?原创 2022-03-26 16:17:28 · 2543 阅读 · 1 评论 -
YOLOV3输出tensor的解读
用过YOLOV3模型的人都知道,YOLOV3网络有3个输出tensor,他分别是对输入RGB三通道图像的32倍,16倍以及8倍的下采样,YOLOV3支持三种尺寸的图像输入,分别是320x320,416x416以及608x608,我们以416X416为例,输入和输出示意图如下:对于如上的tensor输出,它的维度顺序是怎样的呢?在百思不得其解的情况下,就需要看代码来解惑了。我们找到darknet的代码后处理实现部分,关键流程在函数forward_yolo_layer中:我们关注entry_in原创 2022-03-18 15:25:20 · 4027 阅读 · 1 评论 -
Busybox版insmod的一个坑
我们都知道可以通过insmod给内核模块传递参数,例子可以参考这篇博文:Linux内核module_param的实现原理_tugouxp的专栏-优快云博客Busybox使能insmod传递参数,需要打开选项:CONFIG_BUSYBOX_CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS选项特别长,我们来解释一下这个选项是做什么用的:我们随便下载一份busybox代码, 看一下这个选项是如何控制insmod传递参数的。在busybox代码..原创 2022-03-14 21:27:05 · 944 阅读 · 0 评论 -
Makefile规则日积月累
上面的例子中,指明了我们的目标从$object 中获取,“%.o”表明要所有以“.o”结尾的目标,也就是“foo.o bar.o”,也就是变量$object 集合的模式,而依赖模式“%.c”则取模式“%.o”的“%”,也就是“foo bar”,并为其加下“.c”的后缀,于是,我们的依赖目标就是“foo.c bar.c”。而命令中的“$原创 2022-03-14 11:13:50 · 179 阅读 · 0 评论 -
什么是Dropout结构
一个全全链接形态:经过dropout后:总结:Dropout很简单,一句话就可以说的清:随机删除减少神经元的数量,使网络变得更简单。结束!原创 2022-03-13 22:25:40 · 496 阅读 · 0 评论 -
imagenet数据集的归一化参数
mobilenet的归一化参数如下:这是imagenet数据集的标准的均值和方差,Imagenet数据集的均值和方差为:mean=(0.485, 0.456, 0.406),std=(0.229, 0.224, 0.225),因为这是在百万张图像上计算而得的,所以我们通常见到在训练过程中使用它们做标准化,这是0-1图片的均值方差,对于0-255的输入,你用mean=(0.485, 0.456, 0.406)*255 就可以得到推荐的RGB的mean。(0.485, 0.456, 0.406)..原创 2022-03-01 19:29:20 · 5705 阅读 · 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 · 1037 阅读 · 0 评论