- 博客(84)
- 收藏
- 关注
原创 阿里云服务器通过nps访问内网服务实现内网穿透
nps支持多平台的客户端配置,访问https://github.com/ehang-io/nps/releases/tag/v0.26.10地址可以下载不同平台的客户端,配置都是相同的,需要注意的是在windows平台下会被认为是病毒软件,需要将nps.exe添加到杀毒软件的信任区,否则不可用。以上配置完成就可以在任意主机访问内网的服务了,整个流程来讲还是比较简单的,有需要的可以自己玩一下,通过nps界面还可以查看流量的使用情况,还是比较方便的。下载后是一个压缩包文件,解压后有conf和npc两个文件。
2025-02-11 15:27:05
480
原创 win11通过ollama本地部署deepseek-r1:1.5b
deepseek-r1:1.5b这个模型确实很轻量资源占用很少,应该也就占用1GB多点显存,但是也确实比较呆,很多问题都回答不上来,这里如果想要运行其他模型,可以参考ollama的技术文档https://ollama.readthedocs.io/quickstart/ 里面说明了其他模型运行的方式以及所需要的资源。下载完成后安装ollama,默认安装在c盘下面,这个通过默认安装方式无法更改模型就行,安装完成后可以打开CMD窗口输入。首次运行会自动下载模型,运行完成后就可以进行正常交互了。
2025-01-24 14:08:27
13082
10
原创 ros2编写pcl节点加载pcd文件
初次学习ros2和pcl,尝试在ros2中创建节点,加载pcd文件,并在rviz中进行可视化,记录一下整个过程。
2024-05-26 11:00:08
656
原创 词嵌入nn.embedding的解释
类似于:word2id = {‘i’ : 1, ‘like’ : 2, ‘you’ : 3, ‘want’ : 4, ‘an’ : 5, ‘apple’ : 6} 这样的形式。(3)然后再以句子为list,为每个句子建立索引结构,list [ [ sentence1 ] , [ sentence2 ] ]。以上面字典的索引来说,最终建立的就是 [ [ 1 , 2 , 3 ] , [ 1 , 4 , 5 , 6 ] ]。
2024-05-26 10:59:22
485
原创 windows平台下调用海康网络相机找不到PlayCtrl.dll
在代码中调用了两个dll,其中HCNetSDK.dll能够找到,第二个PlayCtrl.dll死活找不到,根据https://gitee.com/MengNiMeia/python_hkcam/issues/I6R7QR中提示,PlayCtrl.dll有相关依赖的dll在HCNetSDKCom目录下,把HCNetSDKCom中的所以dll放到和PlayCtrl.dll同级别目录解决该问题。2、将dll路径配置到环境变量中。以上两种方案都不能解决。
2024-04-24 10:57:01
845
原创 C++ 多线程编程和线程池
子线程和主线程同时执行,当子线程没执行完,主线程结束时,程序就会报错。lock_gurad,只在局部作用域中使用,不能复制和移动,轻量级锁。joinable,判断线程是否可以调用join和detach。3、线程安全,多线程的运行程序和单线程的运行结果都是一样的。join,主线程等待子线程执行完成后再执行,只能使用一次。unqiue_lock,重量级锁,可以手动加锁、延迟加锁。2、多线程中传递的指针可能存在被释放的问题需要注意。detach,主程序结束,子线程会在后台执行。多线程调用函数代码如下。
2024-01-14 22:01:23
633
原创 解决json.decoder.JSONDecodeError: Extra data: line 1 column 721 (char 720)问题
排查了以下原因应该是序列化的字符串全都在一行,json库不能一次性处理这么长的序列。python中将字符串序反列化成json格式时报错。
2024-01-02 23:15:41
1036
1
原创 yolov5 损失函数
作为一款尖端、最先进的(SOTA)车型,YOLOv8在之前版本的成功基础上,引入了新的功能和改进,以增强性能、灵活性和效率。当预测边框和真是边框的中心点重合时,DIOU退化成了传统IOU,综合了IOU的面积损失 、和DIOU的中心点损失和自身宽高比损失三种优势。(2)对比IOU损失,L2和Giou具有偏离趋势度量的能力,当IOU=0时,交和不交的损失是一样的,L2和GIOU就不会这样。2、对于网络的3个头的输出匹配正样本,筛选GT和anchor符合条件的高宽比,大于就是正样本反就是负样本。
2024-01-02 23:12:19
7226
原创 python中使用socket服务发送接收图像
python中使用socket服务发送接收图像的代码,可在服务器端中插入模型推理代码进行推理返回结果。
2024-01-02 23:06:49
867
原创 windows下使用makefile编译c++程序
安装w64devkit版本,能使用一些类linux的命令如rm等。下载完成后解压压缩包,将bin目录添加到系统环境变量的PATH中。在cmd中验证使用make --version是否安装成功。
2024-01-02 23:04:17
638
原创 windows下使用vccode+cmake编译cuda程序
1、在vscode中安装Nsight Visual Studio Code Edition。3、编写CMakeLists.txt。4.1 查询cmake编译器。4.2 指定编译器构建项目。4、安装cmake构建。2、编写cuda程序。5、运行编译好的程序。
2023-12-23 19:57:14
1742
原创 c++ 构造函数
当用户自定义了其他构造函数,那么编译器则不会生成构造函数,若要使用无参数的生成对象,那么必须自定义一个无参数版本的构造函数。是一个默认构造函数,当我们既需要其他形式的构造函数,也需要默认构造函数时,就可以用=default。两种形式,第一种只有一个参数,第二种有若干参数,除了最左边的参数,都有默认值。析构函数:释放构造函数申请的内存空间,做一些内存清理工作,析构函数必须为public。每个类必须要有,若没有定义则自动提供,只有一个参数,参数的类型必须为自身类的引用。2、对象被销毁的时候,其成员被销毁。
2023-05-03 09:48:24
823
原创 c++中public、private和protected
class A :private B :public、protected、private变成了private、private、private,其中private不能被派生类访问。public继承,基类public成员,protected成员,private成员的访问属性在派生类中分别变成:public、protected、private。private继承,基类public成员,protected成员,private成员的访问属性在派生类中分别变成:private、private、private。
2023-05-03 09:47:58
239
原创 c++ 虚函数
6、重写则是派生类对基类同名函数的“本地改造”,要求函数特征标完全相同。3、“重写”的要求是函数的特征标(包括参数的数目、类型和顺序)以及返回值都必须与基类中的函数一致。4、只需将基类中的成员函数声明为虚函数即可,派生类中重写的virtual函数自动成为虚函数。1、c++ virtual 函数作用:如果重写的函数中有重名的函数,那么则调用重写的函数。std::cout << “派生类方法” << std::endl;std::cout << “基类方法” << std::endl;
2023-05-03 09:47:38
1175
原创 yolov5导出onnx模型报错:Unsupported ONNX opset version: 17
2、onnx算子文档,https://github.com/onnx/onnx/blob/main/docs/Operators.md。Win10系统下使用pytorch1.11.0、onnx1.12.0转换yolov5cls转换onnx报错如下。1、模型部署,https://zhuanlan.zhihu.com/p/498425043。查找了相关资料后是由于pytorch对onnx算子的不支持。
2023-05-02 23:44:14
2139
1
原创 transformer and DETR
3、使用q1对每个k(ki)做attention得到a1,i(i={1,2,3,4}),q1、k1,q1、k2,…4、把计算的a1,i做softmax操作,得到~a1,i,然后把它a1,i和所有的vi值相乘,然后相加得到b1,依次计算后得到bi。在self-attention的第二步,分别乘以多个wq、wk、wv矩阵得到qi,j、ki,j、vi,j。2、向量a1-a4分别乘上Wq、Wk、Wv得到不同的qi、ki、vi(i={1,2,3,4})。4、用框子和GT做二分图的loss。1、用CNN去提取特征。
2023-05-02 23:36:55
764
原创 tensorrt基本接口
在不同的线程中使用多个构建器没有线程安全问题,构建器使用时许来确定所提供参数的最快内核,并且使用具有相同GPU的多个构建器将扰乱时序和TensorRT构建最佳引擎的能力,使用多线程在不同的GPU构建不存在这也的问题。TensorRT序列化的模型仅能用于相同的操作系统、CPU架构、GPU模型和TensorRT版本一致时才能一起使用,TensorRT检查模型的以下属性,如果环境不一致,将无法反序列化。ExecutionContext接口,用于调用推理的主要接口,推理时,必须在适当的位置设置输入和输出缓冲区。
2023-05-02 23:35:32
1016
原创 解决显卡nvidia-smi中CUDA version:ERR问题
查找了相关的解决方案,大多数说是CUDA、cuDNN、显卡驱动版本不匹配问题,但是我的这套版本用了很长时间了,没有出现过这个问题,然后对问题进行了排查,怀疑是CUDA的动态连接库问题,查看了CUDA/lib目录下的动态链接库文件,果然多了两个文件,nvidia-smi查看显卡驱动后发现,CUDA version:ERR!把这两个文件删除后,nvidia-smi后显示正常。
2023-05-02 23:28:00
2349
1
原创 tensorrt基本流程
使用tensorrt加速分为构建阶段和运行阶段两个流程,其中构建阶段主要通过onnx_Parser或tensorrt的API搭建网络序列化engine模型。运行阶段加载反序列化engine模型创建分配内存现存资源,执行网络的推理。
2023-05-02 23:26:33
1228
原创 在win10系统下右击文件添加使用pycharm打开
再右击"pycharm"字段,选择"新建”->”字符串值“,并命名为"Icon",修改"Pycharm"数据中"默认"字段的数据为"Open PyCharm here",修改"Icon"为pycharm的exe路径,这个需要根据自己的实际情况进行更改。接着右击"PyCharm"字段右击选择"新建"->”项“,命名为"command",修改"command"字段中"默认"中字段值为"pycharm 路径" “%V”,这里的pycharm路径和上面的路径一致,后面"%V"必须要加。
2023-03-26 22:28:07
1896
1
原创 yolov5中workers设置问题
在每个epoch加载数据时,dataloader一次性创建workers数量个工作进程,并且每个进行负责调度一个batch的数据,worker负责将batch加载到内存中,dataloader从RAM中找到这个epoch所需要的batch,如果找到就使用,如果没有就要继续加载batch到RAM。所以worker的设定需要根据自己的服务器设备情况和数据情况设定,如果CPU和RAM很强,就可以设置大一些,否则就需要设置小一些,如果单张图像很大,也需要设置小一些。
2023-03-05 22:15:25
4533
1
原创 解决paddleocr部署过程中lanms-neo安装失败的问题
最近在做paddleocr部署时,在新的机器上部署环境时安装lanms-neo时安装失败,分析了一下error日志,大概是在编译过程中MSVC版本的问题。重新安装了visual stdio 2019后,在进行安装lanms-neo安装成功。
2023-03-05 22:14:55
688
原创 python中使用opencv的HSV颜色空间提取物体
把PS中H的值除以2,S乘255,V乘255,可以得到对应的opencv的HSV值。S:saturation饱和度(0~100),形容颜色的深浅,如浅红、大红、深红。opencv中的HSV范围,H是0-180,S是0-255,V是0-255。PS中的HSV范围,H是0-360,S是0-1,V(B)是0-1。V:value色调(0~100),色彩的亮度。H:hue 色相(0~360),红绿蓝。但是HSV颜色空间却规定的是,H范围0。
2023-03-05 22:13:24
1615
原创 python相对路径问题
由此可以得出一个结论,相对路径的相对位置是程序运行的位置,而不是文件存在的位置,那么想要解决这个问题,只需要设置一下程序的工作路径即可。当在terminal窗口中在与图像文件同一级的目录执行python code/main.py时运行成功,能够找到文件并成功执行代码。代码与读入的图像文件不在同一级目录,当我直接运行main.py代码的时候会提示找不到10.png文件。最近在调试代码时候遇到了相对路径上的问题,测试的代码结构录下。此时能够根据文件目录找到相对路径的位置。
2022-12-29 14:05:29
529
原创 python 上下文管理器
程序的上下文程序上下文,维持程序正常运行所需要的外部变量的值的集合,叫做上下文,上下文是完成一个逻辑涉及的信息。with语句with语句,简化通用资源管理模式,抽象出其功能,有助于编写更清晰的代码。打开文件时,一般使用with语句,这样能够确保打开的文件在程序执行离开with语句时的上下文自动关闭。以上三段代码功能是一样的都是打开文件,使用with语句的打开程序和使用try:…finally的功能是一样的,显然try:…finally语句很冗长。如果不使用with或try,在调用f.write()
2022-12-06 10:22:57
432
原创 pytorch笔记
BN层有5个参数:bn1.weight、bn1.bias、bn1.running_mean、bn1.running_var、bn1.num_batches_tracked。torch.eq().sum()就是将所有值相加,但是得到的仍然是一个tensor,本例中torch.eq(A,B).sum()得到的结果就是。,最后一步torch.eq(A,B).sum().item()得到的就是这个tensor中的值了,即1。输出的值有两个参数,第一个参数是最大值,第二个参数是最大值的索引(也就是分类label)
2022-11-21 21:18:32
717
原创 解决pytorch每次推理预测结果不一致问题
训练时是针对每个mini-batch的,但是测试是针对单张图片的,即不存在batch的概念。不启用 BatchNormalization 和 Dropout,保证BN和dropout不发生变化,pytorch框架会自动把BN和Dropout固定住,不会取平均,而是用训练好的值,不然的话,一旦test的batch_size过小,很容易就会被BN层影响结果。在模型中,我们通常会加上Dropout层和batch normalization层,在模型预测阶段,我们需要将这些层固定住,不会取平均,而是用训练好的值。
2022-11-19 15:21:17
3616
原创 SORT追踪
在SORT中匈牙利匹配解决的是分配问题,把当前帧检测器的检测框和上一帧卡尔曼滤波的预测框做匹配,将卡尔曼预测的框找到和检测器最匹配的框,进行IOU匹配,在通过IOU匹配结果计算代价矩阵,作为代价矩阵(1-IOU),代价矩阵作为匈牙利算法的输入,得到线性结果(最佳匹配结果)。(2)第二帧进来检测器进行检测,先从卡尔曼滤波中得到由第一帧BBOX产生的状态预测和协方差预测,计算跟踪器生成的所有目标状态预测框和检测器检测框的IOU,通过匈牙利匹配算法得到IOU最佳匹配(目标的框子之间是否匹配)。
2022-11-18 21:53:55
889
原创 解决使用keras训练模型Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR报错问题
根据上面分析的原因修改了batchsize也是异常,然后查找了一下相关资料,一般情况下,如果不加以限制,很多深度学习框架的代码在运行的时候会申请整个显存空间,即便它不需要这么多的资源,但是它申请了之后就不允许其他的程序使用,所以在这种状态下运行代码,就会出现显存不够用的问题,所以只要分配一下模型训练的显存分配策略就可以。使用keras训练模型时异常报错,根据日志分析大概是显存益处问题,通过watch -n 1 nvidia-smi 观察显存使用情况,也发现当模型训练时显存会突然爆增,然后进程就挂掉了。
2022-11-14 21:45:40
472
原创 解决pytorch中tensorboard:No dashboards are active for the current data set问题
后始终报错,开始各种查资料,包括语法、tensorboard版本问题,都无法解决,最后发现了一个愚蠢的问题,tensorboard中的 logdir路径是相对路径,在pycharm中terminal的是工程路径,而我的代码是在工程下的一级目录里面,固然找不到生成的日志文件,CD到运行的代码上一级目录解决问题。在pycharm中训练模型,使用terminal开启。在pytorch中tensorboard使用方法。
2022-11-07 00:19:07
642
原创 解决pycharm中terminla无法加载文件 C:\Users\xin\Documents\WindowsPowerShell\profile.ps1问题
win10下pycharm点击terminal报错,同样在powershell中也是一样的问题,初步查找了一下资料是由于用户策略设置的问题,只需要修改用户调用的策略就好。修改完成后提示用户策略被覆盖,仍然有提示红色报错,根据提示,查看当前执行策略的作用域,可以看到CurrentUser的策略仍然是Restricted,是被限制的模型,执行。首先在开始菜单搜索powershell,以管理员的方式运行。修改当前用户的策略,Powershell恢复正常。在powershell中执行。
2022-11-06 13:45:38
1298
原创 解决windows下报错CondaHTTPError: HTTP 000 CONNECTION FAILED问题
首先,创建condarc文件,Windows 用户无法直接创建名为 .condarc 的文件,可先执行 conda config --set show_channel_urls yes 生成该文件之后再修改。问题很清楚,就是镜像源的问题,但是查找了一些解决方法都无效,包括根据清华提供的更换源的方法,最后按照这个方法解决后,记录一下。生成的文件一般在C盘用户目录下,是一个隐藏文件,如果没找到,可以先在文件夹的查看中,勾选查看隐藏的项目。
2022-10-30 20:56:57
2956
1
原创 nvidia显卡驱动、cuda、cudnn、tensorflow对应版本
在nvidia官网下载驱动,驱动官网选择设备的驱动进行搜索下载即可,搜索时注意对应的操作系统一般为安装NVIDIA Studio驱动版本,GeForce Game Ready适用于游戏玩家,下面是两个版本区别的官方解释下载完的驱动会以版本号的形式命名,这个版本号在安装cuda时候会用到,以下是下载好的驱动文件名516.93-desktop-win10-win11-64bit-international-nsd-dch-whql.exe516.93–显卡驱动版本号desktop–
2022-10-26 22:49:25
7798
原创 python图像三通道和单通道互转
当处理是一纬数组时,可以插入一个纬度变成二纬,这个纬度可以插入在x轴(axis=0)或y轴(axis=1)位置,当插入在x轴原来的一纬数组数据变为列方向数据,当插入在y轴原来的数组变成行方向数据。array([ 1, 2, 3, 11, 22, 33, 44, 55, 66]) #对于一维数组拼接,axis的值不影响最后的结果。三通道转单通道很简单,使用cv2读取图像的时候指定读取图像格式为。下面是关于cv2.imread()函数的参数。下面是关于这个函数axis插入纬度的一些理解。
2022-10-26 22:48:15
6233
原创 解决python opencv中imshow显示黑色图像问题
在ubuntu18.04下使用cv2.imshow显示图像时,显示的是黑色图像,不能正常显示,如下图所示。若以上方法不能解决,则可能使显示图像过大,窗口不能完全显示,可尝试。添加摧毁所有窗口后,重新运行代码显示正常。具体原因为显示窗口时没有添加。......
2022-08-30 10:06:46
5116
3
原创 解决OSError: [Errno 98] Address already in use问题
学习python socket编程,运行服务器端时报错OSError: [Errno 98] Address already in use。查看绑定正在使用的端口号,可以看到12345端口号被963进程占用,这里需要加上sudo或者切换到管理员用户运行,否则不显示PID。杀掉该进程即可,其中963为进程的端口号,再次运行socket服务运行正常。......
2022-08-16 16:13:24
8905
1
原创 ubuntu安装完tensorrt后在conda虚拟环境调用
查找了相关资料使用tar的方式安装tensorrt后,如果要在虚拟环境中调用tensorrt需要将python中的dist-packages中的tensorrt文件复制到虚拟环境下的site-packages。但是在虚拟环境中import tensorrt后显示ModuleNotFoundError: No module named ‘tensorrt’,print(tensorrt)模块也找不到。使用tar的方式安装完tensorrt后系统的python下调用tensorrt 输出版本号正常。...
2022-08-16 13:37:39
713
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人