- 博客(24)
- 收藏
- 关注
原创 CUDA学习(一)
每个 CUDA 设备都有一个唯一的标识符(索引),通过这个函数可以指定当前线程使用的设备。cudaMallocHost()--主机(CPU)上分配页锁定(pinned)内存。4. stream--是 CUDA 中的一种机制,用于管理和调度异步操作。cudaMalloc--用于在 GPU 设备(Device)上分配内存。这有助于确定系统中有多少个 GPU 可以用于 CUDA 计算。这有助于确认当前正在使用的设备。关键字-new申请内存。使用stream的例子。
2024-11-10 12:52:14 217
原创 使用TensorRT部署yolov5实例分割模型
那么对于一些公司而言,这里的部署工作也就相当于是一次性工作,只要部署一次成功,剩下的就是实现业务逻辑的代码了。这两个流程是不变的。整个部署的过程中间,需要改变的是不同模型的图像预处理,推理过程中间I-ENGINE-O的数据内存分配和连接问题、推理结果的后处理问题。2. 构建推理引擎的流程是固定的,也就是说在这两个项目代码中间的genEngine和constructNetwork这两个函数是固定的,需要考虑的是模型的输入和输出的维度是多少,以及如何获取模型的哪个输入、哪个输出、输入输出的维度是多少。
2024-10-30 17:57:58 136
原创 使用TensorRT部署YOLOV5目标检测模型
接着就是cudaMemcpyAsync(m_inputMemory[1], m_inputMemory[0], m_inputSize, cudaMemcpyHostToDevice, m_stream)把数据从host移动到device端,同时这里注意到前面的m_bindings[0] = m_inputMemory[1];主要用来连接I--engine--O。这几行代码是的使用是因为前面构建模型的过程设置了dynamic-shape,所以在模型执行推理的时候也要设定推理时的dynamic-shape。
2024-10-28 03:20:21 873
原创 YOLO模型图像预处理
opencv读取的三通道图片的数据存储的形式是:bgrbgrbgrbgrbgrbgrbgrbgrbgrbgrbgrbgrbgr......也就是说,三通道的彩色图像的数据存储是每个像素点的三个通道值连续排列储存的。step1: letterbox ----> step2: rgb2bgr ----> step3: 归一化 ----> step4 ----> totensor。yolo系列的检测模型和分割模型的图像预处理都是用了同样的图像预处理操作,完成图像预处理的图片可以传入的推理引擎开始推理图片。
2024-10-21 02:01:24 312
原创 使用TensorRT优化部署模型-(I-engine-O连接起来)
使用TensorRT做模型部署,考虑输入数据如何连接到推理引擎,如何获取推理的数据结果
2024-10-18 00:57:11 258
原创 使用TensorRT优化部署模型-推理
这里需要获取到m_context模型的输入维度,m_context->getBindingDimensions(0), 修改input_dims.d[0]的维度值,修改为构建模型的推理的KMIN和KMAX之间都可以(batchsize),最后设置推理时input的大小。该方法通常在模型加载并准备好后调用,允许在不阻塞主机线程的情况下进行推理。在构建模型时设置了DLA,在推理的时候就无需再次声明,模型在推理的时候会自动按照构建时的dlacore来推理模型。这行代码用来获取模型的推理结果的。
2024-10-17 16:24:23 301
原创 pip下载源
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/阿里云:http://mirrors.aliyun.com/pypi/simple/华中理工大学:http://pypi.hustunique.com/山东理工大学:http://pypi.sdutlinux.org/豆瓣:http://pypi.douban.com/simple/在下载的后面添加 -i。
2024-03-12 11:23:48 445 1
原创 成功将模型转为onnx
思考,一直以来,我有个疑问,从pt -> onnx_befor -> onnx_after,就算是使用graphsurgeon,修改了某些算子,从onnx_before-->onnx_after的对应算子的修改和对应算子的权重如何处理才可以让修改算子前后的模型输出得到相同的结果呢?在今天的例子中,例4.4使得算子融合,前后添加了算子的权重输入,但是对于修改算子的例4.5就没有添加算子权重,而是手动设置权重。修改算子前后的输入相同,输出的结果也是完全相同的,说明算子修改没有改变模型的输出结果。
2024-01-28 21:00:19 570
原创 博客摘录「 安装onnx-graphsurgeon」2024年1月21日
pip install nvidia-pyindexpip install onnx-graphsurgeon
2024-01-21 18:01:34 454
原创 CMakeLists.txt中常见的几种函数说明(一)
VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]:可选,和上面的版本号限制语句里面的一样。通常一些软件在更新的时候,都是兼容之前的版本的,所以在CMakeLists.txt的文件夹中对于版本的要求只要说明最低版本要求即可。作用:为目标添加头文件目录,将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。在下面的例子中,为了找到include中的文件,返回本文件夹的上一个文件夹,进入other_dir文件寻找。
2023-07-04 01:30:00 175
原创 七:C++基础学习
也许我永远也成为不了强者,但是我愿意沿着强者曾经走过的路继续前进。本节开始智能指针,原始的指针在使用的时候容易出现一些问题1.C++提供了内存管理的绝对自由度,包括分配、释放、声明周期管理等2.原始指针的一些潜在严重问题如未初始化的指针、内存泄漏、悬空指针3.指针的所有权问题:指针的对象是谁,何时可以删除指针。由此引出智能指针的概念。智能指针也是对象,它智能指向堆上的分配内存,指针用完以后就会自动删除,同时智能指针遵循RAll(资源获取即初始化)原则。
2023-06-29 04:45:00 99 1
原创 六:C++基础学习
五六两个部分主要是关于C++的类中一些主要知识点,包括类的定义,类的实例化方法,类中设置private 和 public,访问类中的属性和方法,类中方法的两种定义(类体内和体外定义函数),构造函数,构造函数的重载,构造函数的定义(在内部定义,初始化列表),析构函数,代理构造函数,拷贝构造函数(深拷贝浅拷贝),常函数和静态成员变量。--多个构造函数出现重载,可以只给一个构造函数传参,让某一个构造函数实现其他构造函数相同的功能。--在定义函数体的前面加上const,表示函数体内参数不允许被更改。
2023-06-28 21:34:46 85 1
原创 五:C++基础学习
定义的类并不是一个实体,而是一种抽象类型,并不占用存储空间,显然无处容纳数据,如果一个类中的所有成员都是公用的,则可以在定义对象时对数据成员进行初始化。对上面的程序进行分析:在类中定义了构造函数Time,它和所在的类必须同名,在建立对象时会自动执行构造函数,根据构造函数Time的定义,其作用是对该对象中全部数据成员赋予初始值0。创建类对象的时候,类对象自动包含类的属性和方法。可以采用带有参数的构造函数,在调用不同对象的构造函数时,从外面将不同的数据传递给构造函数,以实现不同的初始化,构造函数的一般形式为。
2023-06-26 01:16:10 110 1
原创 二:C++基础学习
例如float[3][4],定义了一个单精度的3行4列的二维数组,一维数组可以可以看成是一个特殊的二维数组,如本例可以看作一个一维数组,三个元素为a[0],a[1],a[2],每个元素包含了四个元素的一维数组,即a[0][4],a[1][4],a[2][4]。(3)定义完成数组以后,只能逐个引用数组中的元素,而不能一次性引用整个数组中的全部元素;
2023-06-20 20:21:59 87
原创 一:C++基础学习
在 C/C++ 语言中,const关键字是一种修饰符,在编译器进行编译的过程中,给编译器一些“要求”或“提示”,但修饰符本身,并不产生任何实际代码。2: 对变量赋值的方式有两种,用“=”或者{}给变量初始化,两种初始化变量的方法都可,但是有时候为了让编译器给我们之处变量溢出错误,推荐使用{}方式定义初始值;1: 定义变量的时候,首先需要确定好变量的类型,即定义的变量是属于字符型/整型/浮点型/bool;在编译的过程中,一旦我们的代码试图去改变这些东西,编译器就应该给出错误提示。单行注释的表示方法为。
2023-06-20 02:10:36 52
原创 卷积神经网络的基础模块
空洞卷积就是在卷积核中相邻元素之间插入0,变成新的卷积核。---> (f-1) 的本质就是卷积核中元素与元素的间隔数量,(d-1)本质在卷积核中元素间隔内插入0的个数,也被称为dilation_rate。图像的输入通道 : C1个卷积核分别与每个输入图像通道上的特征图做二维互相关运算,算出的结 果再按照图像/特征图的对应位置相加--->随着很多学者对于卷积的研究的深入,往后设计的深度学习的网络模型逐渐少见池化层操作,直接采用卷积操作设置padding和stride来设定图像的降采样。
2023-04-03 19:40:42 486 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人