自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(642)
  • 资源 (3)
  • 收藏
  • 关注

原创 Darknet卷积层算力评估

darknet是用C语言开发的一款非常精简高效的推理框架,它的开发者也是YOLO的作者,关于darknet推理环境的介绍网上有很多,不再过多介绍,这里只是尝试解读darknet推理过程中的一些细节知识点,就从推理输出的算力来源开始。一张经典的输出:推理过程中的LOG显示中,BF是BFOPS的缩写,它表示什么意思呢?BFLOPS 有两个不同场景下的解释。 第一种是描述硬件运算性能的单位,这时其全称是Billion Float Operations Per Second,即每秒能进行多少个十亿次

2022-03-15 23:44:37 4412 1

原创 点在多边形内算法——判断一个点是否在一个复杂多边形的内部

上图显示了一个具有14条边的凹多边形。我们要判断红色点是否在多边形内。解决方案是将测试点的Y坐标与多边形的每一个点进行比较,我们会得到一个测试点所在的行与多边形边的交点的列表。在这个例子中有8条边与测试点所在的行相交,而有6条边没有相交。如果测试点的两边点的个数都是奇数个则该测试点在多边形内,否则在多边形外。在这个例子中测试点的左边有5个交点,右边有三个交点,它们都是奇数,所以点在多边形内。(注意:这个算法适用于顺时针和逆时针绘制的多边形。)上图显示了多边形自交的情况。在这个例子中多边形的1..

2022-03-07 13:15:34 519

原创 用布雷森汉姆(Bresenham)算法直接在YUV图上绘制图形

Bresenham的线算法以Jack Elton Bresenham命名,他于1962年在IBM开发。是计算机图形学中的经典算法,恰好最近公司项目中需要实现类似的功能,于是就实践了一把,为了以后爬坑方便,记录在此。

2022-03-05 01:54:02 2217 1

原创 cuda-z/gpu-z/cpu-z工具分析GPU显卡和CPU算力信息

类似于Windows下使用CPU-Z工具查看CPU信息,Linux下也可以使用CUDA-Z工具来查看显卡资源/支持信息。

2022-02-06 12:18:45 8458

原创 C++多态性分析和与Linux内核中的多态性实现的共性和差异比较

其实,在Inside The C++ Object Model(中文版名称是深度探索C++对象模型)的4.2节,已经明确给出:“在C++中,virtual funcdtions(可经由其class object被调用)可以在编译时期获得,此外,这一组地址是固定不变的,执行期不可能新增或替换之,由于程序执行时,表格的大小和内容不会改变,所以其建构和存取皆可以由编译器完全掌握,不需要执行期的任何介入”拜编译器所赐,CPP实现多态机制几乎是透明的,程序员几乎不用做什么。

2022-02-05 12:05:12 2281 1

原创 手搓积分验证大数定律和中心极限定理

关于大数定律的一种程序验证方式,请参考博客辛钦大数定律的Python实践_tugouxp的专栏-CSDN博客本文通过计算,来实际验证一把独立同分布的符合均匀分布的多个变量的加和的分布情况。假设符合均匀分布,记为概率密度函数为此概率密度函数图形即如下图所示:的概率密度分布函数当z<=0的时候,f(x)和f(z-x)如下所示:所以,f(x)f(z-x)乘积为0,积分也为0。当z>0&&z<1的时候,图形为:

2022-02-04 21:56:09 1151

原创 dmesg&printk的工作原理

内核调试者对DMESG应该不会感到陌生,DMESG可以将内核打印信息输出到控制台,从而让我们知道内核发生了什么。一句话不足以概括其中的工作细节,那么,DMESG是如何发挥作用的呢,这里我们就探究一下。

2022-02-02 10:22:20 1685

原创 Linux内核地址空间随机化ASLR的几种实现方法

ASLR(Address Space Layout Randomization)在2005年被引入到Linux内核kernel 2.6.12中。地址空间随机化在内核中有多种实现和表现方式,下面分别介绍。

2022-02-01 23:28:57 3922

转载 AI芯片的历史和现状

人的思维活动是否能用计算机来替代,从图灵的论文《计算机器与智能》和图灵测试,到最初级的神经元模拟单元——感知机,到现在多达上百层的深度神经网络,对人工智能的探索就没有停止过。在八十年代,多层神经网络和反向传播算法的出现给人工智能行业点燃了新的火花。反向传播的主要创新在于能将信息输出和目标输出之间的误差通过多层网络往前一级迭代反馈,主要目的是通过逐层的反馈调节系统参数来将最终的输出收敛到某一个目标范围内。1989年贝尔实验室成功利用反向传播算法应用在多层神经网络开发了一个手写邮编识别器。1998年Ya..

2022-01-31 17:37:23 703

原创 Darknet CUDA/CUDANN环境的快速安装

在具备GPU显卡且主持CUDA的纯净的UBUNTU18.04系统上,按照如下指导文档安装 Nvidia 显卡驱动。Ubuntu18.04安装CUDA深度学习环境_tugouxp的专栏-CSDN博客之后,下载darknetgit clone https://github.com/AlexeyAB/darknet.git进入darknet/scripts,执行命令:sudo ./scripts/setup.sh --InstallCUDA最后输出pwsh的错误貌似没有太大影响。.

2022-01-31 10:42:14 4070 1

原创 开源深度学习加速器(NPU)NVDLA介绍

看来NPU的做法和思路和CPU不同,CPU设计上无论冯诺伊曼还是哈弗架构,都有统一而且标准的设计规范,并且ISA和微架构之间可以分开设计。NPU则不同,它的ISA和微架构没有分开,绑的比较紧,个人认为这种状态并非出于技术上的原因,而且因为为了符合各个vendor的设计思想和优化策略,NPU的ISA设计和微架构设计通常都是私有,并由一家独立完成,这样做虽然给厂商以性能优化的名义逐代提升性能提供了很好的理由,但是带来的生态隔离,模型不兼容也是产业界的一大痛点。NPU也是一个处理器,但是没有统一的设计标准的。

2022-01-25 14:43:50 8703

转载 Batch Normalization 以及其如何解决梯度消失问题

前言Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性。目前几乎已经成为DL的标配了,任何有志于学习DL的同学们朋友们雷迪斯俺的詹特曼们都应该好好学一学BN。BN倒过来看就是NB,因为这个技术确实很NB,虽然有些细节处理还解释不清其理论原因,但是实践证明好用才是真的好,别忘了DL从Hinton对深层网络做Pre-Train开始就是一个经验领先于理论分析的偏经验的一门学问。如何理解BatchNorm?请参考论文:Batch Normalization:

2022-01-25 09:08:21 841

原创 从一个NPU失效问题看Linux PM Domain Framework的实现逻辑

用最新SDK测试NPU AI Demo用例的时候,发现对NPU的寄存器操作直接导致内核show callstack,打印堆栈显示在调用NPU的初始化CMD (CMD号:KERNEL_CMD_INIT)的时候就失败了。

2022-01-20 17:32:24 1707 1

原创 模型量化中的KL散度扫盲

我是万万没想到,最后还是入了算法的坑,虽然和正经数学,信息学相关专业的同学没法比,充其量算是半个爱好者,但是逐渐愿意投入时间思考这方面的问题,对于一个年近不惑的中年人来说,不知道是幸还是不幸。今天扫盲的是KL散度算法,在神经网络前向传递的过程中,KL三度算法用来评估各层量化前后的信息损失。下面一段文字来自于网文摘抄,觉得不错,至少感觉假以时日,自己可以理解,权且贴在这里:K-L散度,全称是Kullback-Leibler Divergence,是一种量化两种概率分布P和Q之间差异的方式,又叫相对

2022-01-18 20:50:09 2167

原创 一文搞懂深度学习加速单元NPU的量化原理

量化带来的好处有很多,首先,由于神经网络对数据精度的不敏感,通过量化将 参数从4byte float转换位1byte,减少了数据量,可以使用容量更小的存储设备,节省了成本;其次,量化带来计算效率的提升,单位时间,单位能效内的计算成果多了,或者说,同样的算力需求的模型,所消费的时间和能量少了,结果就是又快又省电,现在的移动终端都是用电池供电的,也就意味着更久的续航和更好的体验,量化的好处很多很多,但是在那时只能想到这么多,后面有时间再补充。量化虽好,也有一个问题,就是比较难以理解,尤其是结合复杂的网络拓扑

2022-01-05 20:34:39 3514 3

原创 根据欧式距离和余弦相似度来计算tensor之间的相似度的代码实现

通常情况下,在端侧的模型推理过程中,使用的是量化后的数据来参与各层计算的,而并非原始的float数据类型,通常的量化数据类型有UINT8/INT8/INT16等等,由于数据表示范围的差异,在量化过程中,必然涉及到精度损失,这种同一个模型相同层之间使用量化推理计算得到的数据经过反量化之后和原始goden版的float数据的差异,我们用相似度表示,用图形化描述如下:..................

2022-01-01 14:33:02 1821

原创 Google系统fuchsia技术总结

fushia基于内核zicron,而zicron又是基于高通的LK(little kernel)项目,LK项目地址在:GitHub - littlekernel/lk: LK embedded kernelfushia(zicron)项目文档,代码地址:https://fuchsia.dev/fuchsia-src/concepts/kernel/zx_and_lkhttps://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/zir

2021-12-23 09:56:17 2508

原创 平头哥(T-Head )开源RISCV处理器OpenC906 RTL仿真

C906默认使用了开源综合工具进行逻辑综合,算是好处理的。另外一个开源RISCV实现芯来的蜂鸟E200就没有那么容易了,需要Xilinx的Vivado将其综合编译为MCS bitstream文件才能运行在FPGA平台上,对于做软件的人来说,就没那么容易了,尤其是大厂的工具都很高级,授权方式尤其高级,别的不说,可能安装Vivado就会被搞得头破血流,能力所限,就不尝试了。

2021-12-21 18:52:58 8539 20

原创 数学女孩-伽罗瓦理论读书笔记尺规作图

和干巴巴的数学课本给人的印象不同,真实的数学史远远比金庸的武侠小说来的精彩,这本书的主角伽罗瓦,就是这样一位站在天赋领域顶点的悲情数学家,论天赋,伽罗瓦应该是罕有敌手了,人类思维纬度的提升带来的后果有多么可怕,其他人都是硬啃难题,伽罗瓦在16岁就开启了上帝视角,16岁到21岁单枪匹马创建群论,仅仅是利用该理论的推论,就足以KO古希腊三大作图难题中的两道,群论的入门定理也可以证明五次方程没有求根公式。这还没完,对群论的研究还顺手开创了近世代数,数学研究进入了全新领域。21岁为情赋死。一个悲情到让人心疼的数学家

2021-12-18 19:15:50 1427

原创 YOLOV3非极大抑制(NMS)和Threshold实践

关于NMS的理论分析介绍请参考文章:非极大值抑制(Non-Maximum Suppression,NMS)_tugouxp的专栏-CSDN博客结束https://blog.csdn.net/tugouxp/article/details/121725807这里主要针对YOLOV3后处理的实践,结合一份白嫖来的YOLOV3后处理代码,来感性的了解NMS是做什么的,怎么用。首先看一下这份代码,在后处理参数的初始化过程中,可以看到有对NMS参数的初始化,NMS一般设置在0.3-0.5之间,他是对IOU的.

2021-12-09 09:32:24 4789

转载 非极大值抑制(Non-Maximum Suppression,NMS)

结束

2021-12-05 10:06:56 270

原创 Linux&Tina&Melis内存布局分析以及linux reserved memory机制

memoryblock.memory, memoryblock.reserved(without no-map)和 memoryblock.reserved with no-map 的关系如下:为了测试memory reserved机制,我们修改devicetree,新增加两个属性分别为without no-map和 with no-map的reserved区域。

2021-11-20 18:45:27 520 1

原创 适用于异构芯片(CPU,ASIC,DSP,FPGA,GPU/GPGPU)的软件并行技术

最后,这么多的并行计算方式,各有千秋,犹如八仙过海,各显神通,在哪里可以一睹他们的风采?无疑机器学习领域是其主战场。

2021-11-14 15:44:55 5863 1

原创 NVIDIA-CUDA HPC 编程模型与内存管理初探

主存和现存在PCIE框架下可以做到互相访问,路径归纳如下:三种角色,两种存储,六种路径。1.HBM通过BAR透给了HOST,使HOST可以通过MMU给CPU访问,或者通过IOMMU给设备访问。2.相反,Host Memory并没有类似的BAR机制透给 PCIE设备端,PCIE设备端想要访问 HOST MEMORY必须经过 HOST IOMMU的映射一遍,加上PCIE端的SMMU映射,对于PCIE设备端(GPU)来说,要经过两层IOMMU翻译。所以从HOST端和GPU端看起来不太对称。

2021-11-12 19:37:56 3001

原创 Cuda环境搭建并部署多目标跟踪模型FairMOT推理验证

环境准备1.PC Host Ubuntu 18.04.6,Linux Kernel 5.4,内核版本关系不大,记录下来备查。2.安装基础工具,比如GCC,CMAKE,VIM,GIT等等,工具尽量完备, 如果做不到,遇到问题临时下载也可。3.安装python3发行版,我用的是anaconda发行版,具体版本是 Anaconda3-2020.11-Linux-x86_64.sh下载地址在如下链接,选择对应的版本即可。https://repo.anaco......

2021-11-10 19:42:36 4318 2

原创 使用开源工具scancode-toolkit扫描代码license

被扫描的代码不能包含任何形式的压缩包,库文件等等,如果有的化,需要删除,或者用自带的extractcode工具执行递归解压。各类开源协议权责总结。

2021-11-08 13:30:46 1897 1

原创 OCTAVE演示矩阵量化前后的不变性

>> A=rand(3,3)A = 0.6775266 0.7483415 0.4066659 0.2826693 0.1728607 0.5242794 0.1570250 0.0015287 0.7337540>> B=rand(3,3)B = 0.64924 0.28227 0.67906 0.82063 0.72221 0.65143 0.63930 0.61994 0.82828...

2021-11-01 15:34:09 88

原创 代码里的世界观之数据和代码的关系

每个程序的运行过程,都可以比喻成弹珠穿越迷宫的游戏.有一个竖直方向的复杂迷宫,上面有若干入口,底下有若干出口,里面的路径连接很复杂.我们让众多大小不一,形状各异的弹珠从迷宫上面的入口顺着迷宫管道往下落,直到出口。弹珠从入口跑到出口的过程,就相当于程序运行的过程。实际上,真实模型会更复杂一些。入口并不是弹珠的唯一来源,有的管道自己会产生弹珠往下落,此外,在运行过程中,有的弹珠会消失在管道里,永远不在出来。如果要对应多线程,迷宫模型也要相应的扩展,在前后叠加多个迷宫,由平面变成立体,迷宫相互之间还有桥梁

2021-10-24 18:11:07 2389 1

原创 为什么CNN中可以用卷积核提取相似度?

卷积神经网络的特征映射的值以图像和过滤器(卷积核)的相似度作为输入信息,卷积的过程表示如下:假设由3x3像素构成的两幅图A,F,从矩阵向量相似的角度看,他们的相似度可以像下面这样求出:这个定理可以利用向量的性质来说明,根据线性空间理论,当两个向量相似时,他们的内积较大,我们可以认为内积大小表示两个向量的相似性。图形化表示就是:为了利用这个性质,可以将两幅图像堪称是向量:这样一来,通过内积,卷积便和相似性联系起来,也就是说,我们可以把CNN中卷积的额计算过程理解....

2021-10-21 10:13:49 1848

原创 为什么神经网络需要激活函数层?

这个问题的原因,很多书上讲,是为了引入非线性,也就是说,只有引入激活函数,网络才能具有非线性特征,那疑问就来了,没有激活函数层,就没有非线性了吗?是否有方式证明?以为下面的网络为例,它的每一层都是全连接层,并且没有激活函数层,我们列出各层之间的数据关系公式:第一层输出:第二层输出:...最后一层:逐层代入得到:由于Wn,Bn都为常阐述,所以,根据上式可以看出,输出是输入的线性函数,所以网络一定是线性的,不具备非线性特征。从而我们证明了,为什么一定要引入激活

2021-10-15 09:47:49 1317

原创 斐波那契数列和矩阵的特征值于特征向量的关系&尾递归

理论推导的关键一步,是将初始向量表示为特征向量的线性组合,突破这一步,推导过程豁然开朗,通项公式也就水到渠成了。特征值是反映变化速度的量,反映了在多个变化因素里,谁占主导地位,谁决定了变化的速度,特征向量是反映稳定性的量,决定了变化的宿命,即决定了它最终向谁收敛,所以我们看到了程序运行结果逐渐向着极限值逼近。当编写递归程序的使用,必须满足以下几个条件基准情形,必须有某些基准情形,在基准情形下,不用递归就能求解,如果忘记了基准情形,递归就会失控。

2021-10-08 23:17:59 2834 1

原创 统计学中的真阳性(TP),假阴性(FN),假阳性(FP),真阴性(TN)怎么理解?

举个例子,假如要在一个地区进行1000人的核酸检测,我们站在上帝视角,知道这1000人中,有10人是新冠感染者,占比%1。但实际的检测结果可能存在误差,误差包括两种情况新冠感染者,被错误诊断为健康 身体健康,但却被错误诊断为感染者检测结果如下:9名感染者得到了正确的阳性结果(TP,true positive),1人出现假阴性(FN,false negative). 其余990位健康的人中,检测除了89为假阳性(FP,false positive).901人得到了正确的阴性结果(TN,t

2021-10-06 21:15:13 10693 2

原创 贝叶斯公式的理解

贝叶斯公式的形式化表达为:公式中,事件Bi的概率为P(Bi),事件Bi已发生条件下事件A的概率为P(A│Bi),事件A发生条件下事件Bi的概率为P(Bi│A)。下面通过一个例子,以通俗易懂的形式说明,贝叶斯公式到底说了什么,反映的是现实生活中怎样的道理。想象这样一个样本,它由从事农民和教师两种职业的人构成,样本总数210人,其中,农民200人,老师10人。根据每个人的特点, 两个职业的人群中,分为好脾气的人和脾气差的人,其中好脾气的农民有20人,好脾气的老师有4人,之所以这样设定是由于,按照

2021-10-06 16:21:25 2371

原创 关于设置Linux线程调度策略的实践

可是经过实际的测试,发现被创建任务的优先级并没有出现预期的结果可以看到,根据sched节点获取到的信息,并未出现被修改线程的优先级成为实时优先级的情况,这是为何呢?出现设置子线程调度策略不成功的原因是我们没有调用默认的情况下,设置的是PTHREAD_INHERIT_SCHED,也就是说,被创建线程完全按照父线程的调度策略创建,即便程序创建线程时,指定了不同的调度策略,这会导致设置失效,这就是我们上面遇到的情况。那该怎么处理呢?

2021-10-03 20:19:32 1741

原创 Linux&Tina动态调压调频配置与实现

结束!

2021-09-28 13:23:33 1209

原创 一个神经网络的梯度反向传播的计算过程

当代领域内专家普遍认为,如果神经网络脉络可以做到模拟人脑的全部结构,轴突,树突,皮层结构等等,建立在数学上的强人工智能就会自动出现,可是真的是这样么?把DNA 拆到元素,拆到分子层面上,科学家看的头头是道,我们的基因组分析甚至都可以做到复制生命,乃至白垩纪时期的恐龙都可以在这个技术层面下复活。

2021-09-27 22:52:10 1047

原创 softmax与交叉墒层的实现原理以及梯度计算

softmax,看名字就知道,就是如果判断输入属于某个雷的概率大于属于其它类的概率,那么这个类对应的值就逼近于1,其它类的值就逼近于0,该算法的主要应用就是多分类,而且是互斥的,即只能属于其中一个类,和sigmoid类的激活函数不同的是,一般的激活函数只能分两类,所以可以理解成softmax是sigmoid类的激活函数的扩展。它的算法如下:也就是把所有的值用e的指数函数表示出来,求和后算每个值占的比率,保证总和为1,一般就可以认为softmax得出的就是概率.抽象层面的原理如下所示:在网

2021-09-21 12:49:37 513

原创 基于Melis4.0的爱键智能视频门铃体验

近年来,家庭视频监控产品已经成为智能家居领域炙手可热的突破口,智能摄像头不仅让用户可以随时知道并查看家里的异常情况,还极大的丰富了人们的视觉交互。门铃是一件大家每天都要使用熟悉到不能再熟悉的产品了,也正是因为我们对它太过于熟悉了,所以往往才忽略了它的存在。而IOT为门铃引入了新的功能元素,门铃武装上摄像头,并经过线上化之后,变得生动活泼起来,好像成为了一款更像是具有独立生命体的个体。这篇文章试图对爱健的一款智能视频门铃的使用进行详细拆解,介绍其安装,使用的方法。值得一提的是爱键的这款摄像头使用了全志

2021-09-18 19:25:37 940

原创 如何统计V4L2吐帧的帧率?

项目中遇到一个问题,需要得到V4L2 Sensor前端吐帧的帧率,有同学说直接看sensor配置参数不久可以了吗?可是作为一个严谨的工程师怎么可以做这么不靠谱的事情呢?耳听为虚,眼见为实,只有看到实实在在的统计信息,才能相信数据是正确的。那么该怎么做到呢? V4L2框架的架构如下图所示,从图中我们可以看到,视频设备在抓取到视频图像后,会调用vb2_buffer_done回调函数将帧上报给v4l2 核心层函数,其中vb2_buffer_done是核心层实现的回调函数。如果在这里实现信息统计,无疑得

2021-09-18 15:36:35 1627

原创 V833/V831目标检测demo方案开发

项目需要在V833平台上开发一个人形检测的功能用例, 大概框架如下:一路sensor图像经过四路VIPP缩放操作后,送给四个不同应用,分别是H265编码存盘,LCD预览以及以及NPU人形检测,还有一路照片抓拍。NPU人形检测原理如下:NPU线程抓取352*198(VIPP支持的输出大小)像素,格式为NV21的YUV原始帧数据,喂给人形检测算法网络,得到类别和坐标数据后,反馈给VIPP1 预览通道画框。这样的设计方案包含一个问题,NPU这边获得帧并进行网络推理得到坐标结果并反馈给VI.

2021-09-16 15:38:00 3034 1

东南大学自动控制系课程件

东南大学自动控制系课程件,包含重要课程的重要内容,是您居家生活的好助手。

2010-02-08

RFID数据采集系统设计

这个资源不错哦,大家快来下吧,非常好的真的很不错哦噢噢哦哦

2009-06-20

inside the c++ object

C++经典书籍,书中详细叙述了C++内部对象模型的实现,虚函数的实现,看完此书你会有豁然开朗的感觉

2009-05-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除