- 博客(245)
- 资源 (2)
- 问答 (4)
- 收藏
- 关注
原创 Visual Studio2019基础使用指南
作为宇宙第一开发神器,Visual Studio确实方便很多,特别大工程的开发。但是也正因如此拔高了学习门槛。在这里简单记录依次初次使用visual studio的过程。
2024-12-23 17:16:18
590
原创 git删除错误的commit
是远程仓库上的最新记录,而一个正常的(指commit后立马push)的log长这样。当某次失误造成commit的版本有问题,需要回退到正常的版本修改后重新add。现在我们需要将本地HEAD回退到正常版本,比如我这里回退到。查看文件变动情况,检验是否符合期望。,本地提交记录和远程仓库的记录是同步的。查看commit提交记录,可以看到。是本地最新的commit,而。查看日志可以看到回退成功。现在我们可以修改后再次。
2024-10-10 15:37:19
514
原创 pyinstaller打包一个Pytorch项目及其常见问题
我有一个基于pytorch的动漫化Stable Diffusion项目,使用pyside6写了一个可视化界面。但是在新环境使用需要搭建Nvidia-Driver、CUDA、cuDNN和含pytorch的python环境,十分繁琐,所以需求是将项目打包为可执行文件,打包过程中将python环境一起打包,在新环境可以使用自带的python解释器,所以不需要配置python环境。
2024-09-09 11:57:41
2135
1
原创 NMS流程及示例代码
以某yolo模型输出的61440*6的数据为例,总共输出61440的bbox(实际只有3个目标),每个bbox的格式为[cx,cy,w,h,conf,cls_score],分别代表bbox的4个值,置信度以及类别分类得分。],所有的类别得到之和等于1。在该过程中有bbox2和bbox3和bbox1的IOU较高,被舍弃。在上面的过程中,标准bbox即绿色的bbox,在代码中会加入到结果result中,最后有3个bbox(bbox1、bbox3、bbox5)加入到result,其余的则被舍弃。
2024-08-26 13:33:04
571
1
原创 图像形变的两种方法:前向映射与反向映射
前向映射这种方式有一个缺点,在图像旋转中,原图的坐标和新图的坐标不是一一对应的。在这个过程中,原图中多个像素点(左图红点)经过计算和取整后,可能映射到新图的同一个坐标点(右图红点),造成一些像素点永远没有对应的映射点(右图黑点),这些黑点最终呈现的就是背景色。顾名思义,反向映射就是根据新图坐标,计算其在原图中的坐标点,然后将原图中像素点值复制到新图中即可。我们知道原图中一个像素点的位置,可以通过计算得到这个像素点旋转后在新图中的位置,然后判断这个新的坐标是否在图像内,然后赋值,这就是前向映射。
2024-07-24 17:13:06
530
原创 gitee设置ssh公钥密码避免频繁密码验证
公钥则可以解决该问题,将私钥放在本地,公钥放在gitee上,当对项目进行操作时带有的私钥会在gitee和公钥进行验证,避免了手动输入密码的过程。gitee中可以创建私有项目,但是在clone或者push都需要输入密码, 比较繁琐。
2024-07-23 09:24:08
580
原创 python中的线程并行
现在有1154张图片需要顺时针旋转后保存到本地,一般使用循环1154次处理,具体代码如下所示,img_paths中存储1154个图片路径,该代码段耗时约用97ms。对于这种没有数据交换的任务,可以使用多线程。python中有很多多线程、多进程的库,这里试试线程池ThreadPoolExecutor。可以看到,15个cpu都被调用起来了。下方的代码耗时约37ms。
2024-05-25 09:41:43
587
原创 (番外)如何将cuda数据存入std::queue实现异步效果
假设有任务需要依次进入step1和step2两个阶段,如果想要提高任务的运行效率可以使用异步的方法,即step1产生结果后送入列队,然后开始新的step1。如果step1的处理速度大于step2,则queue中存入比读取更快,导致queue的size越来越大,储存的指针数据越来越多。在queue中存放的是指向不同显存空间的指针,所以通过p=queue.front()获取到显存地址后,并对该地址数据进行相关操作,比如cudaFree§进行释放。申请到新的显存后,将地址储存给指针*p;
2024-03-12 10:07:00
997
原创 Cap2:从Pytorch到TensorRT的转换和推理
在本文中我们使用pytorch自带的工具将pt模型转为onnx模型,并使用onnxruntime推理引擎进行推理。为了保证模型转换过程中精度,进行了精度对齐的小实验,证明转换前后的误差在1e-6这个级别,是可以忍受的。后续继续将onnx转为tensorRT进行部署,实现从pt–onnx–tensorRT这个部署路线。
2024-03-12 10:05:33
1509
原创 Cap0:TensorRT环境搭建
TensorRT是针对NVIDIA显卡设备的加速方案,你要使用TensorRT则证明你有一定的深度学习基础,那么在你的Ubuntu上配置好显卡驱动、CUDA以及cuDNN一定是小菜一碟。在上文的TensorRT文件夹中,提供了头文件和库文件供开发者直接使用,所以我们将其头文件和库文件的路径加入到环境变量,方便开发时使用。在测试环节,我们将尝试使用TensorRT的IBuilder创建一个builder,如果能够创建成功不报错,说明环境配置上没有问题。可以看到很多版本,我们选择最新的8.x的版本。
2024-02-28 22:53:05
1580
10
原创 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
1315
原创 yolov5的Mosaic原理解析
通过上述的mosaic增强后,获得4张图拼凑的图像,最后还进行了两次数据增强# Augment# 目标随机复制到其他位置,需要segments4标注信息,实际上没有所有这个增强没有任何操作# 一系列增强,img4输入是2048*2048,输出是1024*1024(也是我任务的输入尺寸)上面一系列增强的源码见,可以看到是一些常规的图像变化。
2024-02-19 17:24:51
3329
原创 二进制与ASCII编码
可见是一串乱码,原因是jpeg文件储存的是二进制数据(为了方便一般用16进制展示),比如我们现在将上面的内存用16进制显示(vim中用指令。实际上很多二进制文件其实是不能够显示的,但是如vim默认使用ASCII进行强制显示,其结果是二进制对应的ASCII码。
2024-02-19 13:26:15
487
原创 CMake基本使用
同样的,这种也要指定头文件和源码的搜索路径。可以发现其实库就是编译好的源码,所以两者在CMakeLists.txt中的定义大致一样# 指定头文件搜索路径,和2节中的库一致# 指定搜索源码的路径,GLOB_RECURSE指定了全局匹配符递归搜索# 将源码和main一起编译(最终源码还是变成了库)并自动形成链接实际上,不管是库还是源码,都需要指定头文件搜索路径和源码搜索路径(或者库路径),并链接到main。编译时主要分为两个阶段:编译源码和链接。
2024-02-10 17:30:31
450
原创 opencv中使用cuda加速图像处理
opencv大多数只使用到了cpu的版本,实际上对于复杂的图像处理过程用cuda(特别是高分辨率的图像)可能会有加速效果。
2024-02-04 16:45:56
10734
4
原创 套接字编程
最近需要通过套接字传输JPEG图像及相关信息,初次接触套接字,这是一个总结性的文章。套接字理论就不讲了,虽然没有接触过套接字编程,但是计算机网络课程中关于套接字和udp等理论还是知道的,而且也有很多专业的文章讲理论。
2024-01-20 20:20:00
538
原创 ubuntu20安装网络调试助手遇到缺少qt4相关库的问题
最近需要做套接字通讯的工作,最好是有一个网络调试软件能够接受或者发送套接字,测试代码能够正常通讯。windows下有很多,但是linux下比较少,使用广泛的是下面这一款。
2024-01-20 20:15:16
2316
原创 vscode调试cpp
首先按项目cmake得到可执行文件,然后编辑vscdde中的launch.json,这个文件就是在运行或者调式的时候,通过json定义好各种参数配置启动。本质上debug就是带入json配置的参数,去启动program定义的可执行文件。所以如果修改了源码,必须。现在我有一个项目,使用cmake编译,现在想探究源码需要进行debug。,然后再调试,否则改动是没有生效的。
2024-01-10 12:32:36
665
原创 高分辨大尺寸图像的目标检测切图处理
但是在诸如航拍图像等任务上,图像尺寸通常几千x几千甚至上万,目标也是非常小的,如果resize到640的尺寸,显然目标都已经丢失完了。实际上可以通过切图的方式进行推理,也就是将高分辨率的图切成640x640的图像块,每一个块再去做目标检测,最后再将图像块中目标的坐标转换为大尺寸图上即可。如图所示,某个小图中坐标为(50,90),通过计算得知所处第5列,则左侧有4个小图,考虑到有重叠区域,则左侧有4个540像素,故该坐标在大图中侧横坐标为50+540x4=2210。
2024-01-08 09:49:07
2354
12
原创 Ubuntu安装CUDA出在三个cuda相关文件夹?
三个文件夹,实际上我安装的是11.8的cuda,那么第三个文件是好理解的,就是我cuda的安装文件,其他两个如何理解?通过查询ls命令发现,蓝色代表文件夹,而亮蓝色代表符号链接,实际上前两个cuda就是一种链接而已,通过。命令更详细查看,发现这两个指向了alternatives文件夹下的目录。然后去alternatives中查看这两个文件夹,发现又指向了。,所以实际上三个cuda文件夹都是。
2024-01-03 11:19:10
1086
4
原创 Ubuntu共享文件夹到Windows上
两个电脑互传数据通过U盘还是比较繁琐,对于日常小文件的传输需求来看,可以将Ubuntu上某个文件夹设为共享,在Windows上将该共享文件夹映射为磁盘。于是,通过一个Win和Ubuntu都能打开的一个文件夹实现数据的互通有无。实际上,操作也很简单,我参考的是。
2023-12-19 14:19:56
697
原创 复杂背景下的低空无人机检测与跟踪算法
但是根据实验发现丢失目标通常发生在无人机运动区域的320x320范围内,所以设计辅助网络,当目标丢失后,以320x320区域图像作为输入,使用辅助网络进行目标检测,加快了检测速度。根据文中描述,无人机尺寸都在16x16以上,所以40x40检测8x8~16x16部分的没有使用到,而16x16以上的也可以从其他特征图被解码出来,所以其功能重合了,为追求速度舍去了40x40的特征图分支。辅助网络用于在丢失点附近区域快速检测再次出目标,所以输入图像是实验总结出来的320x320,其优化目标为快。
2023-12-18 08:24:44
1309
原创 Ubuntu常用软件
微信:http://archive.ubuntukylin.com/ubuntukylin/pool/partner/weixin_2.1.1_amd64.deb。
2023-08-08 12:59:21
269
原创 Linux之后台终端
当我们连接一个终端并执行一个程序时,关闭终端时程序也被终结。比如想在终端中执行一个web服务器,想一直后台运行,可以使用screen这个工具。
2023-05-17 15:51:05
603
1
原创 Linux之环境变量
符号在echo中就是引用变量,$PATH表示引用PATH这个变量,就像windows中的path变量一样,是一组路径,所有文件夹类的路径都在PATH中冒号就是echo中路径的分割符比如现在存在两个环境变量,则也就是将/add/bin路径和变量PATH拼接在一起,组成新的。如果是。总之通俗点讲,,等效于,从而在PATH中新增当前文件夹的环境变量。
2023-05-17 15:32:59
158
原创 Linux之打包压缩
众所周知,linux中全部都是文件,文件就离不开权限,其他一些压缩文件只打包文件不包括权限,在linux中解压后可能还需要chmod去改变权限,比较麻烦而且某些时候文件多了都不知道哪些文件应该具有哪些权限,所以tar.gz是非常方便的。在windows上似乎打包和压缩是同一个东西,大家都明白你的意思,实际上是打包和压缩是两个过程,只不过常用zip压缩一站式解决了。打包:就是将文件夹或多个文件打包,但是不压缩,比如将一个目录打包为一个文件,但是大小前后是不变的。压缩:就是对文件进行压缩,减小大小。
2023-05-17 15:26:44
1569
原创 基于Docker的深度学习环境NVIDIA和CUDA部署以及WSL和linux镜像问题
docker的介绍网上有很多,对于深度学习的认来讲,docker的好处就是直接把环境分享给他人,他人不需要再配置环境了。比如我有一个目标检测的项目,我想分享给朋友,那么他首先需要在自己的电脑上配置好显卡驱动、CUDA、CuDNN,在拿到我的项目后,还需要安装各种依赖库,最后代码还不一定跑起来。如果我是用了docker环境进行项目配置,我只需要将环境打包好后分享给朋友。他只需要安装好显卡驱动就行,什么cuda、pytorch之类的都在我分享的环境了。
2023-05-14 00:19:01
8437
10
原创 paddle随机种子的问题
在pyotrch中可以可以固定随机种子,在保持各种配置不变的情况下,无论训练多少次都能够保证训练过程是一致的,比如每轮的loss、精度等与前几次训练都是相同的。但是在paddle框架下好像不行,即使设置了随机种子也不行,根据多方搜索,其结论似乎是paddle无法控制梯度下降算法的随机性。诚然,百度提供的paddle+aistudio是一个很好的深度学习平台,但是在使用中发现随机种子好像失效的问题。
2023-04-20 23:09:53
741
1
原创 LLM:在AutoDL上进行Vicuna 7B模型简单部署体验
随着ChatGPT的火热,科技公司们各显神通,针对大语言模型LLM通常需要极大的算力支持,且没有开源,阻碍了进一步的研究和应用落地。受 Meta LLaMA 和 Stanford Alpaca 项目的启发,来自加州大学伯克利分校、CMU、斯坦福大学和加州大学圣地亚哥分校的成员,共同推出了一个 Vicuna-13B 开源大模型。本文将尝试在3090上运行Vicuna-7B模型。
2023-04-16 15:13:47
7130
62
原创 t-SNE进行分类可视化
我们在论文中通常可以看到下图这样的可视化效果,这就是使用t-SNE降维方法进行的可视化,当然除了t-SNE还有其他的比如PCA等降维等方法,关于这些算法的原理有很多文章可以借阅,这里不展开阐释,重点讲讲如何进行可视化。
2023-04-12 18:23:28
14322
5
原创 ImageNet-like数据集划分与加载
数据集通常要分为train、val和test,如果没有官方发布的标准分法,我们就需要自己对我们的数据集进行分割。
2023-04-01 20:13:45
578
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关注的人