- 博客(64)
- 资源 (3)
- 收藏
- 关注
原创 nvjpeg与opencv 图片解码和预处理耗时对比
nvjpeg与opencv 解码和预处理耗时对比1. opencv c++与python jpeg decode对比环境CPU: AMD Ryzen 5 5600X 6-Core Processor 3.70 GHz内存:32.0 GBC++ vs2017 MSVC编译器工具集python 3.6.8测试图片有两类:数据集1 血片细胞图片尺寸:2448*2048.数据集2 网上随机下载的自然风光,人物,汽车等20张图片,尺寸在471 *600 至 20
2021-05-18 09:29:12
6924
11
原创 C++多态实现机制剖析
面向对象的三大概念:封装,继承,多态。封装突破了c语言函数的概念;继承实现了代码的复用,那么多态实现了什么价值呢,简单理解就是前人写的代码(框架)可以调用后人写的代码。1 什么是多态?多态性可以简单的概括为“1个接口,多种方法”,在程序运行的过程中才决定调用的机制程序实现上是这样:通过父类指针调用子类的函数,可以让父类指针有多种形态。2. 理解多态成立的三个条件对比思考间接赋值成立的三个条件:1. 定义两个变量,2.建立变量之间的联系,3.*p通过地址间接赋值。多态的单个条件:1.要有继承。2
2021-01-15 13:49:39
178
原创 C++ virtual关键字深入理解
对virtual关键的理解需要结合其应用场景来分析。以下从多个角度来深入理解virtual关键字。1.virtual关键字主要是什么作用?c++中的函数调用默认不适用动态绑定。要触发动态绑定,必须满足两个条件:第一,指定为虚函数;第二,通过基类类型的引用或指针调用(多态产生的条件)。由此可见,virtual主要主要是实现动态绑定。2.哪些情况下可以使用virtual关键字?virtual可用来定义类函数和应用到虚继承(一个是多态应用到函数,一个虚继承应用到类)。友元函数 构造函数 static静
2021-01-15 13:42:51
454
原创 安装NVIDIA 驱动及nvidia-docker环境
本教程是在NVIDIA显卡的机器上配置深度学习环境,原理是利用NVIDIA-docker。配置nvidia-docker需要安装NVIDIA驱动和docker 可参考官网1. 安装NVIDIA驱动1.1 添加nvidiarepositorysudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update备注:如果添加报错查看解决方法1.2 选择驱动版本并安装ubuntu-drivers devices显示可用的驱动版本,例
2020-10-23 13:54:38
5452
原创 tensorRT server Inference
TensorRT云端部署参考github,从介绍来看截止最新版本r20.03(release1.1.2.0)已经更名为triton-Inference-server,之前的版本都称为TenserRT Inference server,具体原因官网有介绍。在本教程中因为服务器事先pull了r20.02,即tensorRT Inference server,因此以该版本作为参考,在使用之前首先对其有个全局的认识。参考官网官网的使用指导结构如下:1. Installing the Server1.1 In
2020-10-23 13:52:18
1540
原创 onnx_calibrate calibration代码原理分析
Onnx_calibrate calibration代码原理分析Calibration的思想是通过一堆验证数据集输入到网络中,统计每一层layer的输出值,通过对比量化前后数据统计分布之间的KL散度找到最佳的映射值T.具体参考NVIDIAGTC2017的ppt。def onnx_runtime(model_path,image_files): ''' Helper function run input image,and output each node tensor to calibr
2020-10-23 13:50:10
936
2
原创 cnn中关于FLOPS的理解及计算
相关概念FLOPS:注意全大写,是floating point operations per second的缩写,指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。FLOPs:注意s小写,是floating point operations的缩写(s表复数),指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。MACs:乘加运算(Multiplication and Accumulation),相当于2次浮点运算,硬件支持乘加指令可加快计算速度。OP的计算1. conv 计算
2020-10-23 13:48:22
2540
原创 onnx model zoo准确率复现
Modelfromversion官方准确率top5官方准确率top1自测准确率top5自测准确率top1diftop5diff top1自测使用的预处理方式alexnetonnx model zooir3/opset880.20%57.10%78.15%54.50%2.05%2.60%bgr,mean:103.939 ,116.779,123.68caffenetonnx model zooir3/opset880.40%57.40%79...
2020-10-20 09:58:30
432
原创 目标检测SSD Ubuntu16.04 CPU搭建与测试
前段时间在NVIDIA jeston TX1上测试SSD目标检测方法挺顺利,今天准备用新的数据重新测试,发现存储不足。。汗因急于想验证一下,临时在Ubuntu的CPU主机上重新搭建测试一下,竟然遇到前前后后花了几个小时(抓狂啊,遇到同样的问题就是想不起来当初怎么做的,可见记录的重要性,今天就记录一下,下次再忘了撞死!!!)——————————————————start —————————...
2018-07-03 18:20:11
1445
转载 树莓派3下开启SSH服务
树莓派系统的安装非常简单。但是装完系统之后为了能远程连上费了不少时间。先按照官方文档来1,使用管理工具Enter sudo raspi-config in a terminal windowSelect Interfacing OptionsNavigate to and select SSHChoose YesSelect OkChoose Finish2,启动服务sudo systemctl ...
2018-04-24 13:51:41
1949
原创 语音学习资料平台
说明:下面的排名不分先后,不分谁牛不牛,放在这里,便于更新,防止以后遗忘。主页和博客类: 1.bill xia 的博客:http://ibillxia.github.io/blog/categories/assp/ 这个大神的博客有深度学习的一些东西,有用。 2.zouxy09的博客:http://blog.csdn.net/zou
2017-04-14 16:14:03
1351
原创 eclipse配置spring4.0环境详细教程
最近几天学习spring框架,在环境搭建过程中遇到了不少问题,网上找了不少资料都不是特别好,所以自己重新记录一下。准备:1.Eclipse下载,进官网,这里直接给链接了https://www.eclipse.org/downloads/eclipse-packages/这里有很多版本的,我们选择JavaEE开发者版本。2. Spring IDE 下载(也叫Spring Tool S
2016-12-15 15:38:15
14036
1
转载 傅里叶变换与小波变换
作者:咚懂咚懂咚链接:https://www.zhihu.com/question/22864189/answer/40772083来源:知乎著作权归作者所有,转载请联系作者获得授权。从傅里叶变换到小波变换,并不是一个完全抽象的东西,可以讲得很形象。小波变换有着明确的物理意义,如果我们从它的提出时所面对的问题看起,可以整理出非常清晰的思路。下面我就按照傅里叶-->短时傅
2016-09-25 16:58:52
4275
转载 数字信号处理——单位冲击响应
作者:KE meng链接:https://www.zhihu.com/question/29461110/answer/93942919来源:知乎著作权归作者所有,转载请联系作者获得授权。那么,首先我们来看看比较重要的"线性时不变系统":所谓线性时不变系统,首先要线性,然后要时不变:所谓线性,指的是如果任意输入x输入系统得到y, 那么x*k输入系统,应该得到y*k,
2016-09-22 20:11:28
20862
6
原创 计算机网络总结
准备找工作复习一下计算机网络相关的知识OSI,TCP/IP,五层协议的体系结构,以及各层协议OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。每一层的协议如下:物理层:RJ45、C
2016-09-21 18:36:18
355
原创 C++STL容器的基本操作
在初学阶段希望能够对容器基本操作的记忆和熟练使用,需要对各种容器进行归纳总结。首先,C++中有两种类型的容器:顺序容器和关联容器。顺序容器主要有vector、list、deque等。其中vector表示一段连续的内存,基于数组实现,list表示非连续的内存,基于链表实现,deque与vector类似,但是对首元素提供插入和删除的双向支持。关联容器主要有map和set。map
2016-09-11 09:38:25
301
原创 h.264编码
一 初识h264 H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内。所以对于一段变化不大图像画面,我们可以先编码出一个完整的图像帧A,随后的B帧就不编码全部图像,只写入与A帧
2016-08-09 10:16:18
648
原创 C++输入输出流
C++输入输出流一、C++ 输入输出的含义在C语言中我们就已经了解过输出输出的概念,即从键盘输入数据,运行结果输出到显示器屏幕上。站在操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件。程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。C++的输入与输出包括以下3方面的内容:1. 对系统指定的标准设备的输入和输出。即从键盘
2016-07-14 14:27:46
1354
1
原创 C++类型转化
C++类型转化在理解C++类型转换前,我们先回顾C语言中类型转换。c风格的强制类型转化很简单,不管什么类型转换统统是Type b=(Type)a。但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间
2016-07-12 21:36:55
293
原创 C++类模板深入理解2
C++类模板深入理解21、认识在Template中Typename和class关键词。在c++的Template中很多地方都用到了typename与class这两个关键字,而且有时候二者可以替换,那么是不是这两个关键字完全一样呢?事实上class用于定义类,在模板引入c++后,最初定义模板的方法为:template,这里class关键字表明T是一个类型,后来为了避免class在这两个地方的
2016-07-12 21:19:34
349
原创 C++函数模板深入理解1
C++函数模板深入理解1思考:C++为什么要引入函数模板?为了解决什么问题?如何使用函数模板?先从一个问题出发:需求:写n个函数,求char类型、int类型、double类型变量的最小值。int min( int a, int b ) {return a }double min( double a, double b ) {return a }是不是对所
2016-07-12 11:12:59
410
原创 C++ virtual关键字深入理解
对virtual关键的理解需要结合其应用场景来分析。以下从多个角度来深入理解virtual关键字。1.virtual关键字主要是什么作用?c++中的函数调用默认不适用动态绑定。要触发动态绑定,必须满足两个条件:第一,指定为虚函数;第二,通过基类类型的引用或指针调用(多态产生的条件)。由此可见,virtual主要主要是实现动态绑定。2.哪些情况下可以使用virtual关键字?vi
2016-07-10 21:27:51
665
原创 C++多态实现机制剖析
面向对象的三大概念:封装,继承,多态。封装突破了c语言函数的概念;继承实现了代码的复用,那么多态实现了什么价值呢,简单理解就是前人写的代码(框架)可以调用后人写的代码。1 什么是多态?多态性可以简单的概括为“1个接口,多种方法”,在程序运行的过程中才决定调用的机制程序实现上是这样:通过父类指针调用子类的函数,可以让父类指针有多种形态。2. 理解多态成立的三个条件对比思考
2016-07-10 20:44:27
310
原创 C++复习要点总结之——友元
在C++中,类的成员访问权限有三种,private,protected,public。private:类中的private成员只能够在本类中或者友元访问,子类或外界无法访问私有成员。protected:类中的protected成员只允许本类或者子类中访问,外界无法访问,(定义类时如果希望成员被子类继承而外界不能访问就可以定义为
2016-07-09 19:01:35
312
原创 C++引用原理剖析
在理解引用概念前,先回顾一下变量名。变量名实质就是一段连续存储空间的别名(内部有自己的编号),是一个标号(门牌号),程序需要通过变量来申请并命名内存空间(编译器建立与内存地址的联系)?那么问题来了,一段连续的内存空间只能取一个别名吗?显然不是,引用的概念诞生了。在C++中新增了引用的概念,引用是一个已定义变量的别名。其语法是 Type& name = var; 例如:int a
2016-07-09 14:01:30
1953
1
原创 深入浅出谱减法去噪
在语音去噪中最常用的方法是谱减法,其基本思想是通过静音段(噪声段)估计语音中的噪声成分,然后将含噪声语音减去估计的噪声就得到了纯净的语音。思考1,:谱减法适用于整个语音中都有稳定的噪声成分。思考2:静音段如何控制是否需要端点检测,还是手动调节?思考3:估计的噪声如何描述(每一帧中的平均能量)。思考4:如何减去噪声?带着这些思考我们开始对谱减法原理上的探索。语音的事件
2016-07-06 20:36:19
14971
11
转载 C++封装继承多态总结
C++封装继承多态总结面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!封装
2016-06-03 21:26:16
349
转载 c++重载总结
写在前面:函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题1、声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了)2、当我们调用一个重载的函数时,又是如何去解析的?(即怎么知
2016-06-03 20:55:25
338
转载 C++基础知识复习&总结
最近面试了3家公司。虽然有知名大公司的工作经历,虽然自己求职的目标职位是系统架构师,但发现用人单位还是看重编程基础能力。不管是自我定位太高,还是职位层次太低,系统复习了一遍很久没有摸过的C++总是有好处的。总结如下: 一、new和malloc的区别1、new和delete配对,释放数组需要用delete[]。new和delete实际上调用了malloc和free,另外调
2016-06-03 20:30:57
558
转载 C++拷贝构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plain copyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。
2016-06-03 19:19:21
321
转载 函数指针及含参函数指针做参数的实现
函数指针是指向函数的指针变量。c在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针指向的地址处。有了指向函数的指针变量后。可以通过该指针变量调用函数,函数指针有两个用途:调用函数、做函数的参数:调用函数,如下所示:输出结果如下:由以上可以说明成功调用。 b.无参函数指针做参数的实现,如下(标准写法)所示:
2016-06-01 19:00:54
368
转载 字符数组与字符指针
1.字符指针可以指向一个字符串。我们可以用字符串常量对字符指针进行初始化。例如,有说明语句:char *str = "This is a string.";是对字符指针进行初始化。此时,字符指针指向的是一个字符串常量的首地址,即指向字符串的首地址。这里要注意字符指针与字符数组之间的区别。例如,有说明语句:char string[ ]="This is a string.";
2016-06-01 13:50:15
491
转载 【C++ STL】三十分钟掌握STL
【C++ STL】三十分钟掌握STL这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个
2016-05-11 20:37:42
569
转载 C语言深度剖析——读书笔记
1、 什么是定义,什么是声明?定义:编译器创建一个对象,并为这个对象分配一块内存,给它取上一个名字。声明:1>告诉编译器这个名字已经已经分配到一块内存上了2>告诉编译器这个名字已经被预定了,别的地方不能再用它来作为变量名或对象名。2、 auto:在缺省的情况下,编译器默认所有的变量都是auto的,3、 register
2016-05-11 20:34:58
832
转载 C语言深度解剖学习笔记
第一章关键字什么是定义?什么是声明?什么是定义:所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或对象名。但注意,这个名字一旦和这块内存匹配起来,它们就同生共死,终生不离不弃。并且这块内存的位置也不能被改变。一个变量或对象在一定的区域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。
2016-05-11 20:31:08
290
转载 C语言深度解剖读书笔记
开始本节学习笔记之前,先说几句题外话。其实对于C语言深度解剖这本书来说,看完了有一段时间了,一直没有时间来写这篇博客。正巧还刚刚看完了国嵌唐老师的C语言视频,觉得两者是异曲同工,所以就把两者一起记录下来。等更新完这七章的学习笔记,再打算粗略的看看剩下的一些C语言的书籍。本节知识:1.c语言中一共有32个关键字,分别是:auto、int、double、long、char、short、
2016-05-11 20:26:03
621
转载 C语言深度解剖读书笔记(3.预编译处理)
本节知识点:1.编译过程的简介: 预编译:a.处理所有的注释,以空格代替。b.将所以#define删除,并展开所有的宏定义,字符串替换。c.处理条件编译指令#if,#ifdef,#elif,#else,#endifd.处理#include,并展开被包含的文件,把头文件中的声明,全部拷贝到文件中。e.保留编译器需要使用的#pragm
2016-05-11 20:23:27
238
转载 C语言深度解剖读书笔记(2.字符的技巧)
本节接触了,C语言中的三大蛋疼:符号优先级 ++i顺序点 贪心法 (其实这里面好多都是跟编译器有关的,而且有好多问题都是可以通过良好的编程习惯避免的)本节知识点:1.注释问题: 注释不能把关键字弄断,如:in/*注释*/t 注释不是简单的剔除,而是使用空格替换 编译器认为双引号括起来的内容都是字符串,双斜杠也不例外。如:char *p
2016-05-11 20:21:12
272
转载 C语言深度解剖读书笔记(1.关键字的秘密)
开始本节学习笔记之前,先说几句题外话。其实对于C语言深度解剖这本书来说,看完了有一段时间了,一直没有时间来写这篇博客。正巧还刚刚看完了国嵌唐老师的C语言视频,觉得两者是异曲同工,所以就把两者一起记录下来。等更新完这七章的学习笔记,再打算粗略的看看剩下的一些C语言的书籍。本节知识:1.c语言中一共有32个关键字,分别是:auto、int、double、long、char、short、
2016-05-11 20:18:49
437
转载 VS2013链接mysql问题二(基础)
在实现C++语言连接MySQL数据库的时候出现了不少问题,困扰了一天,终于找到了解决办法,先总结如下:一、C++连接数据库有两种方法,一种是ADO连接,另一种是调用mysql提供的API连接,这里选择后者,效率较高。环境是:win8,vs2013,mysql-5.0.22-win32;二、首先设置VS2013,引入mysql包;具体步骤参考链接:http://www.cnblogs
2016-05-11 20:13:03
467
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人