自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 【嵌入式AI】pytorch量化训练,TensorRT, Ascend量化部署

量化感知训练(Quantization Aware Training )是在模型中插入伪量化模块(fake_quant module)模拟量化模型在推理过程中进行的舍入(rounding)和钳位(clamping)操作,从而在训练过程中提高模型对量化效应的适应能力,获得更高的量化模型精度。Pytorch 官方从 1.3 版本开始提供量化感知训练 API,只需修改少量代码即可实现量化感知训练。目前 torch.quantization 仍处于 beta 阶段,不保证 API 前向、后向兼容性。

2023-06-30 15:56:15 896

原创 【嵌入式AI】深度学习推理优化原理

在一些特定的硬件上,IR中计算节点没有直接对应的硬件算子,只能通过子图的变换来达到子图中所有算子在对应的硬件上的存在。例如在MindSpore中,昇腾芯片上的Concat算子,只支持有限的输入个数(63个),因此当前端IR上的输入个数大于限制输入的时候,需要将该计算节点拆分成等价的多个Concat节点, 当Concat有100个输入时,单个算子只支持最多63个输入,此时会将该计算节点拆分成两个Concat节点,分别为63个输入和37个输入的两个算子。

2023-06-24 21:22:28 469

原创 【嵌入式AI】卷积网络压缩方法总结

模型压缩分为和前端压缩,是指在不改变原网络结构的压缩技术,主要包括知识蒸馏、轻量级网络(紧凑的模型结构设计)以非结构化剪枝;后端压缩,是指包括低秩近似、结构化剪枝、参数量化以及二值网络等,目标在于尽可能减少模型大小,会对原始网络结构造成极大程度的改造。

2023-06-24 21:20:04 171

原创 【嵌入式AI】轻量级网络论文解析

轻量级网络的核心是在尽量保持精度的前提下,从体积和速度两方面对网络进行轻量化改造。

2023-06-24 21:18:29 306

转载 【嵌入式AI】机器学习基本概念

深度学习是机器学习的一个特定分支,要想充分理解深度学习,就必须对机器学习的基本原理有深刻的理解。机器学习的本质属于应用统计学,其更多地关注如何用计算机统计地估计复杂函数,而不太关注为这些函数提供置信区间,大部分机器学习算法可以分成监督学习和无监督学习两类;通过组合不同的算法部分,例如优化算法、代价函数、模型和数据集可以建立一个完整的机器学习算法。

2023-06-24 21:18:21 412

转载 【嵌入式AI】深度学习基础

在前向传播的时候,让某个神经元的激活值以一定的概率 p 停止工作,这样可以使模型的泛化性更强,因为它不会依赖某些局部的特征。dropout效果跟bagging效果类似(bagging是减少方差variance,而boosting是减少偏差bias)

2023-06-24 21:16:55 492

原创 【嵌入式AI】嵌入式知识总结----操作系统

僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。僵尸进程无法用kill清除,但可以杀死他的父进程,然后用孤儿进程管理对其清理孤儿进程:父进程异常结束了,然后被1号进程init收养。守护进程:有意把父进程结束,然后被1号进程init收养。

2023-06-23 16:01:01 143

原创 【嵌入式AI】嵌入式知识总结----linux

echo是输出,本身与创建文件无关,注意>,>>的用法。

2023-06-22 17:18:12 126

转载 【嵌入式AI】嵌入式知识总结----c/c++

按值返回,则要产生拷贝;按常量引用返回,则如果调用方使用常量引用接受返回值则不产生拷贝;按引用返回,则既不产生拷贝,并且还能对其值进行修改(这种情况虽然少见,但是也有存在)

2023-06-21 16:45:03 446

原创 DFQ量化论文阅读

Data-Free Quantization Through Weight Equalization and Bias Correction高通的训练后量化,提高性能量化的不同水平水平1:无需数据和反向传播水平2:需要数据但不需要反向传播,例如IAO的校准水平3:需要数据也需要反向传播,即模型量化之后需要微调,而且量化方法可以适用于所有模型水平4:需要数据和反向传播,但是针对特殊的模型,其会先寻找模型的量化友好结构,比如针对mobilenet的量化,通过去除每个通道的BN和非线性激活函数减少

2022-04-07 20:26:42 525 2

原创 Makefile知识点

Makefile知识点优点1、简化手动输入gcc编译指令2、多线程并发编译,缩短编译时间规则包括依赖的关系和执行的命令结构:targets:prerequisites commandtargets:规则的目标,可以是 Object File(一般称它为中间文件),也可以是可执行文件,还可以是一个标签;prerequisites:是我们的依赖文件,要生成 targets 需要的文件或者是目标。可以是多个,也可以是没有;command:make 需要执行的命令(任意的 shell 命令

2021-08-12 20:00:11 516

转载 嵌入式C语言优化

1、选择合适的算法和数据结构选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。在许多种情况下,可以用指针运算代替数组索引,这样做常常能产生又快又短的代码。与数组索引相比,指针一般能使代码速度更快,占用空间更少。使用多维数组时差异更明显。下面的代码作用是相同的,但是效率不一样。数组索引:for(

2021-06-13 15:38:34 290

转载 linux FHS结构

目录目录中的内容、用途/bin系统放置的可执行文件/boot开机启动时要用到的文件/dev设备文件/etc系统的主要配置文件,如账号密码文件、 各种服务的启始档等。FHS建议几个重要的目录最好要存在 /etc/ 目录下,/etc/opt(必要):这个目录在放置第三方协力软件 /opt 的相关配置文件, /etc/X11/(建议):与 X Window 有关的各种配置文件都在这里,/etc/sgml/(建议):与 SGML 格式有关的各项配置文件,/etc/xml...

2021-06-03 22:31:07 148

原创 SSD算法学习

R-CNN系列目标检测精度高但是检测速度较慢,YOLO检测速度快但是精度不够,SSD对YOLO检测速度方面做了一些改进。

2021-06-03 16:47:12 98

原创 特征金字塔FPN学习

FPN通过利用常规CNN模型内部从底至上各个层对同一scale图片不同维度的特征表达结构,提出了一种可有效在单一图片视图下生成对其的多维度特征表达的方法。通过图像金字塔来构建不同尺度的特征金字塔。能够产生多尺度的特征表示,但是推理时间会大幅度增加,内存消耗会增加。利用某个高层特征进行预测特征金字塔,即使每一层不同尺度的特征图都具有较强的语义信息。FPN是在以特征金字塔为基础结构上,对每一层级的特征图分别进行预测。C5层先经过1 x 1卷积,改变特征图的通道数得到M5,M5上采样再加上C4经

2021-06-02 11:37:16 318

原创 Mask R-CNN学习

Mask R-CNN是以Faster R-CNN为原型,增加了一个分支用于分割任务与Faster R-CNN的不同之处:对于每个Proposal Box使用FCN进行语义分割。引入ROI Align代替ROI Poling。引入语义分割分支FCN(Fully Convolutional Networks)CNN进行语义分割只能提取一下局部特征,无法确定像素区域,而且计算量较大。用全卷积层代替全连接层以保持维数,用于语义分割。ROI Align因为ROI Poling对于mask来说很影

2021-06-02 10:47:35 110

原创 YOLO学习

参考https://zhuanlan.zhihu.com/p/25236464/YOLO训练和检测均是在一个单独网络中进行,没有显示地求取region proposal的过程。整体框架共24个卷积层和2个全连接层,卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率值。YOLO输出定义YOLO将输入图像分成SxS个格子,若某个物体的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这个物体。每个格子输出B个bounding box(包含物体的矩形区域x,y,w,h,和confidenc

2021-06-01 21:24:51 308

原创 Faster RCNN解读

首先需要了解RCNN和Fast RCNNR-CNN的主要思路:给定一张输入图片,从图片中提取 2000 个类别独立的候选区域,用Selective Search算法,这是一种遍历搜索的方式。对于每个区域利用 CNN 抽取一个固定长度的特征向量,无视候选框大小不一样,统一变换。再对每个区域利用 SVM 进行目标分类。R-CNN存在以下几个问题:1、训练分多步。R-CNN的训练先要fine tuning一个预训练的网络,然后针对每个类别都训练一个SVM分类器,最后还要用regressors对bo

2021-06-01 19:25:52 1153 1

原创 ROI Polling学习

ROI Polling是Faster RCNN公共Feature Map层的另一个输出。ROI Polling是对RPN获取的大小不一的anchors进行池化,池化成大小相同的feature map

2021-05-31 22:53:50 357

原创 区域生成网络(RPN)学习

参考https://blog.csdn.net/qq_36269513/article/details/80421990anchors锚如下图,对于该图像每个位置,考虑9个候选窗口,这些候选窗口成为anchors。表示预先在可能出现的位置画框,后续方便筛选。每个anhcor要分foreground和backgroundRPN运行机制在Faster RCNN中,RPN的作用如下图:一个特征图经过sliding window处理(即3*3卷积),得到256维特征,然后通过两次全连接得到结果2k

2021-05-31 19:20:31 493

原创 ShuffleNet--轻量级神经网络

ShuffleNet采用channel shuffle、pointwise group convolutions和depthwise separable convolution修改原来的ResNet单元。channel shuffle:

2021-05-31 14:46:07 159

原创 MobileNet--轻量级神经网络

MobileNet的基本单元为深度级可分离卷积(depthwise separable convolution),可分解成depthwise convolution和pointwise convolution。depthwise convolution在每个输入通道采用不同的卷积核。pointwise convolution是采用1x1的卷积核。普通卷积的计算量:Dk×Dk×M×N×Df×Dfdepthwise convolution的计算量:Dk×Dk×M×Df×Dfpointwise c

2021-05-31 11:12:29 232

原创 SqueezeNet-轻量级神经网络

SqueezeNet是一种超轻量级的网络,它的分类精度接近AlexNet,但是模型却比其小50倍。SqueezeNet的基础模块叫fire,如下图

2021-05-31 10:23:26 469

原创 DenseNet--轻量级神经网络

DenseNet主要提出了dense block模块,在任意两层间都有连接,残差比ResNet更密集。轻量级神经网络采用了更复杂的连接,但是获得了更少的参数,因此计算量和数据量都适用于嵌入式设备中。减轻了梯度消失问题我理解的是层数越多多项式级数越大,相同的输出情况下级数多的系数会小,当级数达到一定程度导数会几乎消失,而将前面的层加到后面会建立一些级数较小的多项式,这样可以较少梯度消失问题。参数更少解决了梯度问题可以加入更多的层,网络可以更窄,在dense block中每个卷积层的输出fea

2021-05-30 17:01:06 736

原创 ResNet网络分析--深度学习入门

残差学习是学习输入输出之间的差与输入的映射,而CNN是学习输入与输出的映射。即X->(H(x)-x)+x由于X和F(x)的通道数不同,残差神经网络使用了梁红identity mapping 的方式,一种是补零,另一种是用1X1卷积变换维度。...

2021-05-30 11:21:07 73

原创 VGGNet网络分析--深度学习入门

VGG网络结构如下图在VGGNet中降低了卷积核尺寸,用多个较小的卷积核代替一个较大的卷积核,增加了卷积的层数。一方面可以减少参数,另一方面进行了更多的非线性映射,增强了拟合能力。比如三个3×3的堆叠卷基层的感受野是7×7,三个3×3的卷积层参数个数为:3×((3×3×C)×C)=27×C×C;一个(7×7×C)×C的卷积层参数为49×C×C。VGGNet中对输入图片进行了去均值化去均值化可以把数据移到原点附近,可以保证数据不会太大导致梯度出现问题。VGGNet使用了Multi-Sal

2021-05-29 15:08:11 137

原创 GoogLeNet分析Incepetion V1--深度学习入门

解决增加网络深度和宽度时容易产生过拟合且大大增加计算量。将全连接和一般的卷积转化为稀疏连接。稀疏连接的概念如图:GooLeNet使用了将稀疏矩阵聚类成秘籍子矩阵的方式提高性能基本结构如下图:使用不同大小的卷积核和池化,最后拼接进行融合。网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。但是55卷积仍然计算量大,采用11卷积核降维11卷积核降维是减少了输入通道数,对m通道的输入进行n个11卷积核卷积,将会降维成n通道。

2021-05-29 11:18:15 190

原创 AlexNet网络分析--深度学习入门

第一层卷积层,使用两个GPU分别计算48个核,然后进行ReLU激活函数,对其结果进行Local Response Normalized。使用ReLU比tanh和sigmoid等饱和函数要快。Local Response Normalized(局部相应归一化)由于ReLU的值域没有区间,所以要对其结果进行归一化,公式为就是对ReLu求出来的数据(x,y)周围进行归一化进行LRN后进行最大池化,这里用的是Overlapping Pooling(覆盖的池化操作)就是池化核重叠,用重叠池化可.

2021-05-29 09:08:47 171

原创 LeNet-5网络分析--深度学习入门

LeNet-5网络共有六层,如下图C1-卷积层相关参数:卷积核大小卷积核个数输出featuremap大小5*5628*28卷积层通过卷积的方式对输入图片进行特征提取,原理是利用多个卷积核提取图片中多个特征,不同的卷积核对应一张图片中的一个特征,可如图所示可以发现:越接近为1表示对应位置和卷积核代表的特征越接近,越是接近-1,表示对应位置和卷积核代表的反向特征越匹配,而值接近0的表示对应位置没有任何匹配或者说没有什么关联。同理,识别一张图片用多个卷积核就可以完场特

2021-05-28 19:43:48 149

原创 如何在QT4上配置qwtplot3D绘制空间曲线

1、qwtplot3d简介qwtplot3d是一个用来绘制三维曲面的库用来绘制空间曲线需要对库函数进行修改,由于本人的项目只需要绘制三维曲线,故对库函数的修改可能导致曲面绘制功能的缺失。及供参考。2、库函数修改参考该博主的例程QWT3D 之 三维动态曲线的实现修改1:在qwt3d_enrichment_std新增3D曲线绘制类qwt3d_enrichment_std.hclass QWT3D_EXPORT Line3D: public VertexEnrichment{public:

2021-04-15 10:56:16 2729 11

原创 opencv4.5.1自学(11)——角点检测

1、角点检测概述分类:基于灰度图像:梯度、模板、模板梯度基于二值图像基于轮廓曲线角点即某一点在任意方向的一个微小变动都会引起灰度很大的变化,角点的描述有:一阶导数(即灰度的梯度)的局部最大所对应的像素点两条及两条以上边缘的交点;图像中梯度值和梯度方向的变化速率都很高的点;角点处的一阶导数最大,二阶导数为零,指示物体边缘变化不连续的方向。2、cornerHarris函数Harris角点检测,对于每一个像素(x,y)在邻域内,计算2x2梯度的协方差矩阵M(x,y),进而求出角

2021-04-09 14:58:26 185

原创 opencv4.5.1自学(10)——霍夫变换

1、图像金字塔图像金字塔主要用于图像的分割,金字塔层级越高,图像越小,分辨率越低。高斯金字塔:向下采样。拉普拉斯金字塔:

2021-04-09 11:24:03 279

原创 如何用QT4.7.1安装qwtplot3D

1、从网上下载qwtplot3D的最新版本:http://qwtplot3d.sourceforge.net/2、解压qwtplot3d-0.2.7.zip到C盘根目录下(注意:路径中不能带有中文汉字)。3、打开C:\qwtplot3d-0.2.7\qwtplot3d,将会看到qwtplot3d.pro文件。4、打开pro文件,编译,会报错如下和网上的解决方法一样,修改qwtplot3d.pro文件中的win32:TEMPLATE= vclib,将其改为win32:TEMPLATE= lib。5

2021-04-08 19:19:10 714 1

原创 opencv4.5.1自学(9)——边缘检测

1、边缘检测的一般步骤滤波增强:增强边缘检测:阈值化2、canny算子canny边缘检测步骤:消除噪声:高斯平滑滤波计算梯度幅值和方向:Sobel算子非极大值抑制滞后阈值:推荐2:1-3:1Ⅰ.如果某一像素位置的幅值超过高阈值, 该像素被保留为边缘像素。Ⅱ.如果某一像素位置的幅值小于低阈值, 该像素被排除。Ⅲ.如果某一像素位置的幅值在两个阈值之间,该像素仅仅在连接到一个高于 高 阈值的像素时被保留。opencv中canny函数原型:CV_EXPORTS_W void Ca

2021-04-08 10:58:31 120

原创 opencv4.5.1自学(8)——开运算、闭运算、形态学梯度、顶帽、黑帽

1、开运算先腐蚀后膨胀,可以用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。2、闭运算先膨胀后腐蚀,能够排除小型黑洞。3、梯度膨胀图与腐蚀图之差,可以将团块的边缘突出出来。4、顶帽原图像与开运算图之差,可以放大裂缝或者局部低亮度的区域。5、黑帽闭运算图与原图像之差,突出比原图轮廓周围的区域更暗的区域。6、morphologyEx函数void morphologyEx(InputArray src,OutputArray dst,int op,In

2021-04-07 23:26:39 171

原创 opencv4.5.1自学(7)——膨胀与腐蚀

1、形态学概述

2021-04-07 23:06:33 198

原创 opencv4.5.1自学(6)——非线性滤波

1、中值滤波中值滤波能在去除脉冲噪声、椒盐噪声的同时又能保留图像边缘细节,不过花费的时间较长。opencv中函数原型:void medianBlur(InputArray src,OutputArray dst, int ksize)第一个参数为输入图像,第二个参数为输出图像,第三个参数为孔径的尺寸,即像素领域。使用实例://载入原图Mat image=imread("1.jpg");//进行中值滤波操作Mat out;medianBlur( image, out, 7);2、双边

2021-04-07 16:43:44 79

原创 opencv4.5.1自学(5)——线性滤波

1、图像卷积对应相乘累加2、方框滤波(box Filter)函数:void boxFilter(InputArray src,OutputArray dst, int ddepth, Size ksize, Point anchor=Point(-1,-1), boolnormalize=true, int borderType=BORDER_DEFAULT )第一个参数为输入图像,可以处理任意通道数的图片,待处理的图片深度应该为CV_8U, CV_16U, CV_16S, CV_32F 以

2021-04-07 15:57:10 80

原创 opencv4.5.1自学(4)——图像对比度、亮度调整

1、轨迹条(Trackbar)的创建和使用1)createTrackbar函数用来创建一个调整数值的轨迹条,函数原型:int createTrackbar(conststring& trackbarname, conststring& winname, int* value, int count, TrackbarCallback onChange=0,void* userdata=0);第一个参数是轨迹条的名称,第二个参数是窗口的名称,第三个参数为滑块初始位置,第四个参数为滑块

2021-04-07 14:41:30 203

原创 opencv4.5.1自学(3)——分离颜色通道&多通道图像混合

1、split函数C++: void split(const Mat& src, Mat*mvbegin);C++: void split(InputArray m,OutputArrayOfArrays mv);第一个参数,InputArray类型的m或者const Mat&类型的src,填我们需要进行分离的多通道数组。第二个参数,OutputArrayOfArrays类型的mv,填函数的输出数组或者输出的vector容器。一般用其中的Mat::at()方法对某个通道进行存取。

2021-04-07 11:31:09 78

空空如也

空空如也

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

TA关注的人

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