prach定点化处理】的更多相关文章

clc; %全屏清零 clear all; %变量清零 N=^; %设置ROM深度(字变量)的变量参数, s_p=:; %正弦波一个周期的采样点数 sin_data=sin(*pi*s_p/N); %离散正弦波数据,这里的N决定了由ROM的深度决定,如果要更多的采样点,需要把N增大 %打印我们的波形 %plot(sin_data,'r*'); %红色r*打印 %hold on; %保持 %plot(sin_data); %打印原来的波形 %定点化 fix_p_sin_data=fix(sin_d…
因为在普通的fpga芯片里面,寄存器只可以表示无符号型,不可以表示小数,所以在计算比较精确的数值时,就需要做一些处理,不过在altera在Arria 10 中增加了硬核浮点DSP模块,这样更加适合硬件加速和做一些比较精确的计算. 浮点数和定点数的区别:定点数的小数点是固定的,而浮点数的小数点的位置不确定,举个例子,定点数 1.1*1.1 = 1.2(定点一位小数),浮点数1.1*1.1 =1.21,浮点数的小数点发生了移动,而定点数舍弃了一位,小数点的位置没有变. 在verilog里面,如果用用…
上面是一段关于CORDIC_IP测试文件,用于计算给定角度的sin值和cos值,关于数值表示规则在此不再重复,仅仅说明以下3点: 1  数采用原码,反码,补码,本身并没有正确与否之分(这一点很重要,我们不能认为只有补码的表示是正确的),有的只是适用场合,采用补码的方式能够使得使得加法和减法变得统一,而采用原码自然也有它的好处. 2  在编写Verilog文件时,不管是源文件,还是测试文件,出现小数是一种错误的做法(准确的说直接将小数作为输入输出信号或者中间变量,或者作为测试信号)都是不正确的.永…
很久没有写文章了,主要是最近一段时间没有以前那么多空暇空间,内存和CPU占用率一致都很高,应前几日群里网友的要求,今天发个表面模糊的小程序来找回之前写博客的热情吧. 国内我认为,破解表面模糊的原理的最早作者是我一直很崇拜的一位女士,她不会编程,英文也不怎么好,仅凭计算器和Excel两个工具破解了PS了很多  算法,真是个巾帼英雄. 详见地址:http://www.missyuan.com/thread-428384-1-1.htm 网上的有关该算法的matlab实现参考:http://www.c…
http://www.matlabsky.com/thread-38774-1-1.html 本文转载于MathWorks中国高级工程师董淑成的帖子内容.为了方便阅读,对原文进行了重新整理编辑. 之前有网友引发了一些讨论,为了方便大家进一步讨论,专门开贴,讨论基于模型的设计.题目有点大,以我的个人经历,我只能说说基于模型的嵌入式软件设计,我先抛砖引玉吧. 先胡乱问几个大问题: 什么叫基于模型的设计? 为什么要基于模型的设计? 基于模型的设计过程中,需要做什么事情? 再问几个小问题: 模型验证是否…
虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处理的函数,而且图形显示功能也很强大,所以在做数字信号处理算法的FPGA验证的时候借助Matlab会大大加快算法验证的速度. 关于Matlab和Modelsim联合仿真,我从网上看到两种方法,一种是通过Link for Modelsim建立Matlab和Modelsim的联合仿真接口:另一种就是通过文…
在颜色空间系列1: RGB和CIEXYZ颜色空间的转换及相关优化和颜色空间系列3: RGB和YUV颜色空间的转换及优化算法两篇文章中我们给出了两种不同的颜色空间的相互转换之间的快速算法的实现代码,但是那个是C#版本的,为了比较方便,我们这里提供C版本的代码,以RGB转到YUV空间的代码为例: void RGBToYUV(unsigned char *RGB, unsigned char *Y, unsigned char *U, unsigned char *V, int Width, int…
WebRTC提供一套音频处理引擎, 包含以下算法: AGC自动增益控制(Automatic Gain Control) ANS噪音抑制(Automatic Noise Suppression) AEC是声学回声消除(Acoustic Echo Canceller for Mobile) VAD是静音检测(Voice Activity Detection) 这是一套非常经典,以及值得细细品阅学习的音频算法资源. 在前面分享的博文,也有提及音频相关知识点. 一些算法优化的知识点,由于历史的原因, W…
最近在做DNN定点化相关的工作,DNN定点化就是把float表示的模型压缩成char表示,虽然会损失精度,但是由于DNN训练的模型值比较接近且范围较小,实际上带来的性能损失非常小.DNN定点化的好处是可以以4倍的效率压缩模型,这个在移动端会具有比较大的优势. 做完定点化之后,在x86服务器上验证没有问题,但是利用NDK移植到arm移动端却一直得不到正确结果,真是一时头大.通过仔细调试,最终发现问题所在-所有值为负的float值定点化成char之后都变为0!在网上搜了很久终于知道这个居然是arm平…
本文是在学习https://blog.csdn.net/housisong/article/details/1452249一文的基础上对算法的理解和重新整理,再次非常感谢原文作者的深入分析以及分享. 三次卷积插值的基础原理也是对取样点附近的领域像素按照某种权重分布计算加权的结果值,比起双线性的4个领域像素计算,三次卷积涉及到了16个领域像素,这也决定了其取样点位置不是对称的,同时耗时比双线性也大为增加.     如左图所示,P00为向下取整后的取样点的坐标,其领域16个像素的位置整体靠取样点的右…
一.前言 FPGA以擅长高速并行数据处理而闻名,从有线/无线通信到图像处理中各种DSP算法,再到现今火爆的AI应用,都离不开卷积.滤波.变换等基本的数学运算.但由于FPGA的硬件结构和开发特性使得其对很多算法不友好,之前本人零散地总结和转载了些基本的数学运算在FPGA中的实现方式,今天做一个系统的总结归纳. 二.FPGA中的加减乘除 1.硬件资源 Xilinx 7系列的FPGA中有DSP Slice ,叫做“DSP48E1”这一专用硬件资源,这是一个功能强大的计算单元,单就用于基本运算的部分有加…
以前的博文大部分都写的非常详细,有很多分析过程,不过写起来确实很累人,一般一篇好的文章要整理个三四天,但是,时间越来越紧张,后续的一些算法可能就以随记的方式,把实现过程的一些比较容易出错和有价值的细节部分加以描述,并且可能需要对算法本身有一定了解的朋友才能明白我所描述的一些过程了. 那这个系列的开篇,我们以Canny边缘检测算法为头吧. 相关参考资料: 1.Canny边缘检测算法的实现. 2.OpenCV(五)——超细节的Canny原理及算法实现 3.OpenCV 之 边缘检测 4.Opencv…
四年前第一次看到<100+ Times FasterWeighted Median Filter (WMF)>一文时,因为他附带了源代码,而且还是CVPR论文,因此,当时也对代码进行了一定的整理和解读,但是当时觉得这个算法虽然对原始速度有不少的提高,但是还是比较慢.因此,没有怎么在意,这几天有几位朋友又提到这篇文章,于是把当时的代码和论文又仔细的研读了一番,对论文的思想和其中的实现也有了一些新的新的,再次做个总结和分享. 这篇文章的官网地址是:http://www.cse.cuhk.edu.h…
我在前面的文章(Android智能手机上的音频浅析)中说过Android手机上有一块专门用于音频处理的DSP,它的特点是频率低(一般几百MHZ).内部memory小(通常不超过100k word).要想让Audio DSP上放下更多的内容以及能流畅的运行,要有一些应对措施.今天就聊聊这些措施. 1,频率低的应对措施 由于DSP的频率低,要想软件能流畅的运行,就得把运行时的load降下来.主要的措施有两种,定点化和load优化.先看定点化. DSP有定点DSP和浮点DSP之分.一般来说,定点DSP…
一个同事在github上淘到一个基于SIMD的RGB转Y(彩色转灰度或者转明度)的代码,我抽了点时间看了下,顺便学习了一些SIMD指令,这里把学习过程中的一些理解和认识共享给大家. github上相关代码见链接:https://github.com/komrad36/RGB2Y,这哥们还有其他一些SIMD的代码,也是相当不错的可以借鉴的. 我们首先说说普通的RGB2Y的代码: void RGB2Y(unsigned char *Src, unsigned char *Dest, int Widt…
1 YUV域介绍 根据三基色原理,任意一种色光F都可以用不同分量的R.G.B三色相加混合而成,即F = r [ R ] + g [ G ] + b [ B ],其中r.g.b分别为三基色参与混合的系数.当三基色分量都为0(最弱)时混合为黑色光:而当三基色分量都为k(最强)时混合为白色光.调整r.g.b三个系数的值,可以混合出介于黑色光和白色光之间的各种各样的色光.       在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD摄像机进行摄像,然后把摄得的彩色图像信号经分色.分别放大校正后得…
最近在一次排查问题的过程中发现色彩空间及色彩空间转换也有很多技术细节,而理清这些细节能帮助我们更准确的定位视频方面的问题. 1. 色彩空间 色彩空间一词源于英文的“Color Space”,色彩学中,人们建立了多种色彩模型,以一维.二维.三维甚至四维空间坐标来表示某一色彩,这种用坐标系统来定义的色彩范围即色彩空间. 例如计算机监视器上显示颜色的时候,通常使用 RGB(红色.绿色.蓝色)色彩空间定义,红色.绿色.蓝色被当作 X.Y 和 Z坐标轴.另外一个生成同样颜色的方法是使用色相(X 轴).饱和…
pi方法就是比例积分方法,关于pi方法介绍参考http://www.elecfans.com/dianzichangshi/20120909287851.html 锁相环pi方法原理参考http://wenku.baidu.com/view/86b9586fa76e58fafab003b7.html 关于系数的确定方法参考http://wenku.baidu.com/view/029d23425a8102d277a22f69.html 这次设计遇到了点麻烦,原因就在于从double型往定点型数据…
今天摸索了一下hdl coder的使用方法,各个步骤主要是照猫画虎,有些地方还是不理解,先总结一下: 1.要想调用quartus或者Xilinx综合布局布线需要先设置,设置的方法有两种,命令窗口输入 hdlsetuptoolpath('ToolName', 'Altera Quartus II', ... 'ToolPath', 'D:\altera\10.1\quartus\bin\quartus.exe');或者在matlab安装目录下找到toolbox\local新建一个startup.m…
速度优化的方向: 1.减少输入图片的尺寸, 但是相应的准确率可能会有所下降2.优化darknet工程源代码(去掉一些不必要的运算量或者优化运算过程)3.剪枝和量化yolov3网络(压缩模型---> 减枝可以参考tiny-yolo的过程 , 量化可能想到的就是定点化可能也需要牺牲精度)4.darknet -----> caffe/tensorflow + tensorrt(主要是针对GPU这块的计算优化) 精度优化的方向: 1.增加数据量和数据种类(coco + voc + kitti数据集训练…
在pc上调试好的图像处理算法想要在android手机上跑一下看看速度需要一下几个步骤 1.建立一个android application,通过ndk调用你写好的图像算法的c/c++ code 2. 然后将你的code放到jni文件中,编写android.mk,之后利cgywin编译生成.so供android调用 3.之后把你的java code编译成apk,然后pull到手机中就可以看到结果了. 总的来说,如果没有做优化的话,直接在手机跑pc上的code,结果一般都是惨不忍睹,一般需要针对算法做…
本文均属自己阅读源代码的点滴总结.转账请注明出处谢谢. 欢迎和大家交流.qq:1037701636 email:gzzaigcn2009@163.com 写在前面的闲话: 自我感觉自己应该不是一个非常擅长学习算法的人.过去的一个月时间里由于须要去接触了BP神经网络.在此之前一直都觉得算法界的神经网络.蚁群算法.鲁棒控制什么的都是特别高大上的东西,自己也就听听好了,未曾去触碰与了解过.这次和BP神经网络的邂逅.让我初步掌握到.理解透彻算法的基本原理与公式,转为计算机所能识别的代码流,这应该就是所谓…
深度学习飞速发展过程中,人们发现原有的处理器无法满足神经网络这种特定的大量计算,大量的开始针对这一应用进行专用的硬件设计.谷歌的张量处理单元(Tensor Processing Unit,后文简称TPU)是完成较早,具有代表性的一类设计,基于脉动阵列设计的矩阵计算加速单元,可以很好的加速神经网络的计算.本系列文章将利用公开的TPU V1相关资料,对其进行一定的简化.推测和修改,来实际编写一个简单版本的谷歌TPU,以更确切的了解TPU的优势和局限性. 动手写一个简单版的谷歌TPU系列目录 谷歌TP…
随着深度学习的飞速发展,对处理器的性能要求也变得越来越高,随之涌现出了很多针对神经网络加速设计的AI芯片.卷积计算是神经网络中最重要的一类计算,本文分析了高性能卷积计算中的数据复用,这是AI芯片设计中需要优化的重点之一,具体思路如下 数据复用的动机 存储-计算分离框架下,针对卷积计算的优化思路 针对卷积计算的硬件架构设计分析 已经面临的挑战和解决方向 神经网络中数据复用的未来 1. 高性能卷积计算中数据复用的动机 深度学习的发展过程中,较高的计算量是制约其应用的因素之一.卷积神经网络中,主要计算…
神经网络模型量化方法简介 https://chenrudan.github.io/blog/2018/10/02/networkquantization.html 2018-10-02 本文主要梳理了模型量化算法的一些文章,阐述了每篇文章主要的内核思想和量化过程,整理了一些对这些文章的分析和看法. [转载请注明出处]chenrudan.github.io 随着神经网络算法的发展,网络性能虽然越来越强大,但是也耗费了太多的计算资源和内存,为了得到更有效率的网络以及能部署在移动端,近几年神经网络的压…
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本:4.14 ARM64处理器,Contex-A53,双核 使用工具:Source Insight 3.5, Visio 1. 概述 CPU负载(cpu load)指的是某个时间点进程对系统产生的压力. 来张图来类比下(参考Understanding Linux CPU Load) CPU的运行能力,就…
http://blog.chinaaet.com/justlxy/p/5100053166大佬博客,讲的非常有条理的 1,基础知识 (1)定点数的基础认知: 首先例如一个16位的数表示的定点数的范围是:(MAX:16‘d32767 MIN: -32767#2^15-1#’)最高位符号位,三位整数位,其余的12位是小数位的话,那么 它的精度有小数部分决定:1/4096=0.0244140625 可表示数的范围为:(0.0244140625*4095)=0.999755859375,然后加上整数的最…
采用线性逼近法结合32段线性查找表的方式来实现1/z的计算. 首先将1/32-1/64的定点化数据存放到ROM中,ROM中存放的是扩大了2^20 次方的数字四舍五入后的整数部分.n值越大,精度越大,误差越小.这里取n=20: ROM中存储的数据是1/(32+i)*2^20的四舍五入的整数部分. 32-64间的数据可以通过查表来实现,其他的数据则采用的是线性逼近的方法. 线性逼近的步骤为: 1.确定最高非零比特位的位置 2.对z进行左移或者右移,得到zp 3.zp查找ROM,得到1/zp,以及1/…
MobileNet v2 论文链接:https://arxiv.org/abs/1801.04381 MobileNet v2是对MobileNet v1的改进,也是一个轻量化模型. 关于MobileNet v1的介绍,请看这篇:对MobileNet网络结构的解读 MobileNet v1遗留下的问题 1)结构问题 MobileNet v1的结构非常简单,是一个直筒结构,这种结构的性价比其实不高,后续一系列的ResNet,DenseNet等结构已经证明通过复用图像特征,使用Concat/Eltw…