- 博客(237)
- 资源 (2)
- 问答 (4)
- 收藏
- 关注
原创 Cap2.2:Pytorch转TensorRT(下:ONNX->TensorRT)
在上章节中我们将resnet18导出为onnx模型,现在我们需要将onnx转为tensorRT支持的模型。
2024-04-15 09:52:02 536
原创 (番外)如何将cuda数据存入std::queue实现异步效果
假设有任务需要依次进入step1和step2两个阶段,如果想要提高任务的运行效率可以使用异步的方法,即step1产生结果后送入列队,然后开始新的step1。如果step1的处理速度大于step2,则queue中存入比读取更快,导致queue的size越来越大,储存的指针数据越来越多。在queue中存放的是指向不同显存空间的指针,所以通过p=queue.front()获取到显存地址后,并对该地址数据进行相关操作,比如cudaFree§进行释放。申请到新的显存后,将地址储存给指针*p;
2024-03-12 10:07:00 811
原创 Cap2.1:Pytorch转TensorRT(上:Pytorch->ONNX)
在本文中我们使用pytorch自带的工具将pt模型转为onnx模型,并使用onnxruntime推理引擎进行推理。为了保证模型转换过程中精度,进行了精度对齐的小实验,证明转换前后的误差在1e-6这个级别,是可以忍受的。后续继续将onnx转为tensorRT进行部署,实现从pt–onnx–tensorRT这个部署路线。
2024-03-12 10:05:33 912
原创 Cap0:TensorRT环境搭建
TensorRT是针对NVIDIA显卡设备的加速方案,你要使用TensorRT则证明你有一定的深度学习基础,那么在你的Ubuntu上配置好显卡驱动、CUDA以及cuDNN一定是小菜一碟。在上文的TensorRT文件夹中,提供了头文件和库文件供开发者直接使用,所以我们将其头文件和库文件的路径加入到环境变量,方便开发时使用。在测试环节,我们将尝试使用TensorRT的IBuilder创建一个builder,如果能够创建成功不报错,说明环境配置上没有问题。可以看到很多版本,我们选择最新的8.x的版本。
2024-02-28 22:53:05 1044
原创 Cap1:TensorRT基本流程概览
uint32_tint在RTX中,有两个阶段:1)build engine:将储存了层名和权重的wts文件转换为engine文件。该过程需要IBuilder和INetwork;2)inference:直接将engine读取到IRuntime中,进行推理。此时的网络定义只是一个空壳,没有结构也没有权重参数。ONNX是一种中间件表示协议,规定了网络的结构且储存了参数。现在可以用TensorRT的ONNX Parser接口将ONNX文件中的结构和参数填充到上文定义的空客网络network中。
2024-02-28 00:35:28 1079
原创 yolov5的Mosaic原理解析
通过上述的mosaic增强后,获得4张图拼凑的图像,最后还进行了两次数据增强# Augment# 目标随机复制到其他位置,需要segments4标注信息,实际上没有所有这个增强没有任何操作# 一系列增强,img4输入是2048*2048,输出是1024*1024(也是我任务的输入尺寸)上面一系列增强的源码见,可以看到是一些常规的图像变化。
2024-02-19 17:24:51 1487
原创 二进制与ASCII编码
可见是一串乱码,原因是jpeg文件储存的是二进制数据(为了方便一般用16进制展示),比如我们现在将上面的内存用16进制显示(vim中用指令。实际上很多二进制文件其实是不能够显示的,但是如vim默认使用ASCII进行强制显示,其结果是二进制对应的ASCII码。
2024-02-19 13:26:15 406
原创 CMake基本使用
同样的,这种也要指定头文件和源码的搜索路径。可以发现其实库就是编译好的源码,所以两者在CMakeLists.txt中的定义大致一样# 指定头文件搜索路径,和2节中的库一致# 指定搜索源码的路径,GLOB_RECURSE指定了全局匹配符递归搜索# 将源码和main一起编译(最终源码还是变成了库)并自动形成链接实际上,不管是库还是源码,都需要指定头文件搜索路径和源码搜索路径(或者库路径),并链接到main。编译时主要分为两个阶段:编译源码和链接。
2024-02-10 17:30:31 371
原创 opencv中使用cuda加速图像处理
opencv大多数只使用到了cpu的版本,实际上对于复杂的图像处理过程用cuda(特别是高分辨率的图像)可能会有加速效果。
2024-02-04 16:45:56 3542 4
原创 C++套接字编程
最近需要通过套接字传输JPEG图像及相关信息,初次接触套接字,这是一个总结性的文章。套接字理论就不讲了,虽然没有接触过套接字编程,但是计算机网络课程中关于套接字和udp等理论还是知道的,而且也有很多专业的文章讲理论。
2024-01-20 20:20:00 353
原创 ubuntu20安装网络调试助手遇到缺少qt4相关库的问题
最近需要做套接字通讯的工作,最好是有一个网络调试软件能够接受或者发送套接字,测试代码能够正常通讯。windows下有很多,但是linux下比较少,使用广泛的是下面这一款。
2024-01-20 20:15:16 1291
原创 vscode调试cpp
首先按项目cmake得到可执行文件,然后编辑vscdde中的launch.json,这个文件就是在运行或者调式的时候,通过json定义好各种参数配置启动。本质上debug就是带入json配置的参数,去启动program定义的可执行文件。所以如果修改了源码,必须。现在我有一个项目,使用cmake编译,现在想探究源码需要进行debug。,然后再调试,否则改动是没有生效的。
2024-01-10 12:32:36 550
原创 高分辨大尺寸图像的目标检测切图处理
但是在诸如航拍图像等任务上,图像尺寸通常几千x几千甚至上万,目标也是非常小的,如果resize到640的尺寸,显然目标都已经丢失完了。实际上可以通过切图的方式进行推理,也就是将高分辨率的图切成640x640的图像块,每一个块再去做目标检测,最后再将图像块中目标的坐标转换为大尺寸图上即可。如图所示,某个小图中坐标为(50,90),通过计算得知所处第5列,则左侧有4个小图,考虑到有重叠区域,则左侧有4个540像素,故该坐标在大图中侧横坐标为50+540x4=2210。
2024-01-08 09:49:07 1054 11
原创 Ubuntu安装CUDA出在三个cuda相关文件夹?
三个文件夹,实际上我安装的是11.8的cuda,那么第三个文件是好理解的,就是我cuda的安装文件,其他两个如何理解?通过查询ls命令发现,蓝色代表文件夹,而亮蓝色代表符号链接,实际上前两个cuda就是一种链接而已,通过。命令更详细查看,发现这两个指向了alternatives文件夹下的目录。然后去alternatives中查看这两个文件夹,发现又指向了。,所以实际上三个cuda文件夹都是。
2024-01-03 11:19:10 592 3
原创 Ubuntu共享文件夹到Windows上
两个电脑互传数据通过U盘还是比较繁琐,对于日常小文件的传输需求来看,可以将Ubuntu上某个文件夹设为共享,在Windows上将该共享文件夹映射为磁盘。于是,通过一个Win和Ubuntu都能打开的一个文件夹实现数据的互通有无。实际上,操作也很简单,我参考的是。
2023-12-19 14:19:56 459
原创 复杂背景下的低空无人机检测与跟踪算法
但是根据实验发现丢失目标通常发生在无人机运动区域的320x320范围内,所以设计辅助网络,当目标丢失后,以320x320区域图像作为输入,使用辅助网络进行目标检测,加快了检测速度。根据文中描述,无人机尺寸都在16x16以上,所以40x40检测8x8~16x16部分的没有使用到,而16x16以上的也可以从其他特征图被解码出来,所以其功能重合了,为追求速度舍去了40x40的特征图分支。辅助网络用于在丢失点附近区域快速检测再次出目标,所以输入图像是实验总结出来的320x320,其优化目标为快。
2023-12-18 08:24:44 753
原创 Ubuntu常用软件
微信:http://archive.ubuntukylin.com/ubuntukylin/pool/partner/weixin_2.1.1_amd64.deb。
2023-08-08 12:59:21 212
原创 Linux之后台终端
当我们连接一个终端并执行一个程序时,关闭终端时程序也被终结。比如想在终端中执行一个web服务器,想一直后台运行,可以使用screen这个工具。
2023-05-17 15:51:05 497 1
原创 Linux之环境变量
符号在echo中就是引用变量,$PATH表示引用PATH这个变量,就像windows中的path变量一样,是一组路径,所有文件夹类的路径都在PATH中冒号就是echo中路径的分割符比如现在存在两个环境变量,则也就是将/add/bin路径和变量PATH拼接在一起,组成新的。如果是。总之通俗点讲,,等效于,从而在PATH中新增当前文件夹的环境变量。
2023-05-17 15:32:59 113
原创 Linux之打包压缩
众所周知,linux中全部都是文件,文件就离不开权限,其他一些压缩文件只打包文件不包括权限,在linux中解压后可能还需要chmod去改变权限,比较麻烦而且某些时候文件多了都不知道哪些文件应该具有哪些权限,所以tar.gz是非常方便的。在windows上似乎打包和压缩是同一个东西,大家都明白你的意思,实际上是打包和压缩是两个过程,只不过常用zip压缩一站式解决了。打包:就是将文件夹或多个文件打包,但是不压缩,比如将一个目录打包为一个文件,但是大小前后是不变的。压缩:就是对文件进行压缩,减小大小。
2023-05-17 15:26:44 1357
原创 基于Docker的深度学习环境NVIDIA和CUDA部署以及WSL和linux镜像问题
docker的介绍网上有很多,对于深度学习的认来讲,docker的好处就是直接把环境分享给他人,他人不需要再配置环境了。比如我有一个目标检测的项目,我想分享给朋友,那么他首先需要在自己的电脑上配置好显卡驱动、CUDA、CuDNN,在拿到我的项目后,还需要安装各种依赖库,最后代码还不一定跑起来。如果我是用了docker环境进行项目配置,我只需要将环境打包好后分享给朋友。他只需要安装好显卡驱动就行,什么cuda、pytorch之类的都在我分享的环境了。
2023-05-14 00:19:01 6150 10
原创 paddle随机种子的问题
在pyotrch中可以可以固定随机种子,在保持各种配置不变的情况下,无论训练多少次都能够保证训练过程是一致的,比如每轮的loss、精度等与前几次训练都是相同的。但是在paddle框架下好像不行,即使设置了随机种子也不行,根据多方搜索,其结论似乎是paddle无法控制梯度下降算法的随机性。诚然,百度提供的paddle+aistudio是一个很好的深度学习平台,但是在使用中发现随机种子好像失效的问题。
2023-04-20 23:09:53 567 1
原创 LLM:Vicuna 7B模型简单部署体验
随着ChatGPT的火热,科技公司们各显神通,针对大语言模型LLM通常需要极大的算力支持,且没有开源,阻碍了进一步的研究和应用落地。受 Meta LLaMA 和 Stanford Alpaca 项目的启发,来自加州大学伯克利分校、CMU、斯坦福大学和加州大学圣地亚哥分校的成员,共同推出了一个 Vicuna-13B 开源大模型。本文将尝试在3090上运行Vicuna-7B模型。
2023-04-16 15:13:47 5505 53
原创 t-SNE进行分类可视化
我们在论文中通常可以看到下图这样的可视化效果,这就是使用t-SNE降维方法进行的可视化,当然除了t-SNE还有其他的比如PCA等降维等方法,关于这些算法的原理有很多文章可以借阅,这里不展开阐释,重点讲讲如何进行可视化。
2023-04-12 18:23:28 8492 4
原创 ImageNet-like数据集划分与加载
数据集通常要分为train、val和test,如果没有官方发布的标准分法,我们就需要自己对我们的数据集进行分割。
2023-04-01 20:13:45 464
原创 使用LabelMe标注目标检测数据集并转换为COCO2017格式
COCO数据集是模板检测中经典和标准格式,当我们使用LabelMe给目标检测打标签后,如何转换为COCO数据集格式呢?转换成功后又如何可视化COCO数据集检验是否标注和转换正确呢?
2023-03-29 20:06:27 3152 5
原创 图像匹配简介
引用:深度学习应用在图像匹配的效果如何?0、简介图像匹配时后续高级图像处理的关键,近年来众多学者提出了许多优秀的方法,比如基于深度学习的特征点匹配算法、实时匹配算法、3D点云匹配算法、共面线点不变量匹配算法、以及基于深度学习的图像区域匹配等。我们将各种图像匹配方法分为局部不变特征点匹配、直线匹配、区域匹配三类,介绍其优缺点和适用场景,利用DTU和Graf数据集来对各种方法进行比较。1、局部不变特征点匹配局部不变特征点匹配是发展最早的,一幅图像的特征点由关键点和描述子组成。关键点是特征点(在图像中的
2023-03-20 01:27:53 1890
原创 Glow introduce
这样一个可逆变换的序列也可以被称为(正则化)流,是一个真实但分布未知的高维随机向量,记为。我们收集了独立同分布的数据集。是可逆的,也叫双射,给一个数据。为了简便,下面我们将省略下标。
2023-03-20 01:25:15 105
原创 Ubuntu的环境变量
在echo中该符号就是引用变量$PATH表示引用PATH这个变量,就像windows中的path变量一样,是一组路径,所有文件夹类的路径都在PATH中路径的分割符则也就是将/xxx/xxx路径和变量PATH拼接在一起,组成新的PATH如果是总之通俗点讲,等效于,从而在PATH中新增当前文件夹。
2023-03-15 09:39:31 248
原创 预训练中固定模型中某些层后训练,这些层还是变动了?
在深度学习中我们经常会使用到预训练进行微调,提高模型的泛化能力,加快收敛速度,节约训练时间。一般来讲,预训练多种方式,常见的有对预训练层设置更小的学习率,或者固定预训练层,不进行权重更新,这里讨论的是后一种。
2023-03-13 19:48:06 331
原创 记录PyTorch中半精度amp训练出现Nan的排查过程
网络的教程来看,在半精度amp训练出现nan问题,无非就是这几种:但是总结起来就三种:先说结论,我使用amp半精度训练,即中间会参杂float16数据类型,加快训练过程。但是本文出现Nan就是因为float16,因为float16支持的最大值在65504,而我的模型中涉及一个矩阵乘法(其实就是transformer中的q@k运算)。其中,a∈[-38,40],b∈[-39,40],而矩阵乘法a@b=c,c∈[-61408,inf]。因为a和b的矩阵乘法运算后最大值超过了float16最大表示,造成出现inf
2022-12-06 23:01:41 3152
原创 人脸表情识别数据集:CK+
比如上图是人S026做出的某类表情,第一张是自然,缓慢变化到最终是峰值快乐表情。某些实验会说明在CK+上的精度,所以需要自己制作为ImageNet式的数据集。
2022-11-24 15:29:59 5342 15
IEEE Conference Paper模板(IEEE会议论文模板)
2023-04-08
SWING图形界面开发手册.pdf
2019-10-30
pytorch训练时连续两次eval会影响梯度下降?
2022-09-21
python中logging的使用问题
2022-05-23
如何快速验证深度模型的改进是否有效?
2022-05-12
Keras模型训练,训练集90%精度,验证集80%精度,该模型该如何提升?
2021-04-23
Android Studio中如何将Image类转为Bitmap类?
2021-04-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人