自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小硕算法工程师

学习别人,分享自己

  • 博客(466)
  • 资源 (10)
  • 问答 (4)
  • 收藏
  • 关注

原创 [C++] opencv - 绘制基本图形(比如三角形,矩形,圆,椭圆等), my test

本文主要介绍了如何使用opencv绘制基本的图形,比如三角形,矩形,圆,椭圆,涉及到line,rectangle,circle,等函数基本使用。

2025-05-27 21:39:11 576

原创 【OpenCV C++学习】2、BGR、HSV空间下的通道分离与合并, me

对多通道图像进行处理,要先分离通道,处理后还要合并各通道操作方法为split()和merge()

2025-05-27 21:03:18 344

原创 opencv 提取单通道图像轮廓, me

程序功能:提取单通道图像轮廓。

2025-05-27 20:59:47 125

原创 OpenCV-C++-CUDA-02-图像基本操作之像素操作, test ok

本章继续学习CUDA下的OpenCV学习,主要是学习CUDA下图像的像素变换。

2025-05-26 21:36:14 295

原创 OpenCV实现图像金字塔(Image Pyramid), test ok

图像金字塔图像金字塔是图像的一种多尺度表示方法,可以让我们在不同尺度的图像上寻找目标。结合技术,可以在图像的不同位置找到目标对象。在金字塔的底部,是图像原始大小(即宽度和高度)的图像。而在每一层往上,图像都会被重新调整大小(通常是下采样)并可选地进行平滑处理(通常使用图像会不断下采样,直到满足某种停止条件——通常是达到设定的最小尺寸,此时无需继续进行下采样。

2025-05-24 21:41:20 719

原创 CUDA实现矩阵加法, test ok

本文通过一个矩阵加法的例子来说明如何使用网格和块来组织线程。

2025-05-24 21:38:22 271

原创 CUDA实例系列四:利用GPU加速Sobel边缘检测​,test ok

Sobel算子是图像处理中常用的算子之一, 在计算机视觉中常用来做边缘检测. 它是一个比较小并且是整数的filter, 所需要的计算相对较少, 但是对于图像中频率变化较高的地方,他所得的梯度近似值会比较粗糙.而用CUDA解决这个问题的原理就是, 每个线程处理一个像素.每个线程读取一个像素周围的数值(下面代码注释中的x0~x8), 然后进行计算。图像的每一个像素的横向及纵向梯度近似值可用以下公式结合, 来计算梯度大小.的矩阵,分别为横向和纵向与图像做平面。

2025-05-24 21:24:09 130

原创 我的CUDA学习之旅4——Sobel算子图像边缘检测CUDA实现, test ok

故在CUDA实现时我们需要正确索引到以目标像素点为中心的3*3的小方格中各个元素的位置,由于图像从CPU端传给GPU是一段一维连续的内存,增大了我们索引的难度,故在block和grid的设计上,我把整张图像完整的映射到了grid中,每个thread即对应一个像素,通过二维索引的方法将一维的内存准确映射。后,通过CUDA在GPU中对图片实现Sobel算子边缘检测,最后将结果输出至CPU并进行显示,要求输出图与用CPU内实现后的结果一致。,本博客以Sobel算子为例,将边缘检测通过CUDA实现。

2025-05-24 21:17:32 324

原创 [传统图像处理]边缘检测之----Sobel算子,test ok

Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。边缘是指在图像上像素灰度变化最显著的地 方,边缘检测算子则利用图像边缘灰度的突变来检 测边缘。然后分别用这两个算子对输入图像进行卷积操作,得到x,y方向上各点的卷积结果,即垂直梯度Gx和水平梯度Gy。Sobel算子输入的图像是灰度图,所以正常图片进行sobel算子提取边缘前,先要把图片转成灰度图。缺点:计算方向单一,对复杂纹理的情况显得乏力;

2025-05-24 21:14:53 437

原创 OpenCV CUDA图像处理, test ok

任何要用到GPU的计算机视觉操作,都必须将图像数据先载入到设备的显存上,可使用gpumat 关键字来先行分配显存,与用于主机内存的Mat类型相似。用前面读取图像的相同方式,读取两个要作加成处理的图像,并存放在主机内存中,然后用upload方法将图像复制到设备显存,以主机上的图像变量作为参数传递给此方法。使用download方法将设备加成的结果图像回存到主机上。主机的img变量作为download方法的参数,将图像加成的结果复制过来,然后用上一节中所用的相同功能,显示该图像并存储到磁盘上。

2025-05-24 21:05:48 222

原创 CUDA精进之路(二):图像处理——形态学滤波(膨胀、腐蚀、开闭运算)

从这篇文章起,开始将一些较为典型的OpenCV算法通过CUDA进行实现,本文实现的为图像处理中最为常见的形态学腐蚀以及膨胀,由于本文目的在于算法移植后的验证,故在图片的选择上用小图像作为输入的示例图像,有不当之处欢迎评论或私信~输入一张图片,将其转为灰度图后,通过CUDA在GPU中对图片实现形态学腐蚀、膨胀操作,最后将结果输出至CPU并进行显示,要求输出图与用OpenCV实现后的结果一致。关于腐蚀与膨胀的算法原理网上已有完备的的资料,在这里不再复述,具体原理可见。

2025-05-24 20:54:25 424

原创 Opencv(C++)笔记--图像金字塔, test ok

为解决此问题可以引入图像金字塔,对两帧图像分别构建金字塔,从塔顶图像开始跟踪(例如原图两特征点相差16个像素,不能被跟踪,塔顶图像缩小8倍,那么塔顶的两帧图像的对应特征点对就相差2个像素,可以被跟踪),确定大概位置后,将该位置做为下一层金字塔图像的初值进行跟踪,直到金字塔最后一层。对模板和待匹配图像分别做图像金字塔,先从金字塔尖的图像开始匹配,由于分辨率较小,所以匹配时间较短,接着在此位置基础上,在下一层该位置周围局部区域继续进行匹配,直到最后一层完成匹配。层级越高,图像越小,分辨率越低;

2025-05-24 20:43:30 303

原创 c++CUDA编程--图像处理算法练习--图像灰度化

c++图像算法CUDA加速CUDA练习,仅作参考VS2019--c++CUDA环境配置与编程实例visual studio2019配置opencv(详细教程)

2025-05-10 09:01:50 264

原创 数字图像处理(c++ opencv):图像分割-基本边缘检测--canny边缘检测

非极大值抑制原理为:在一个3*3的邻域内,根据边缘法线方向,与法线方向上其他两个邻点的梯度幅值比较大小,若该点大于另外两个邻点,则认为该点是边缘点,否则抑制。只有一个阈值时,当阈值设的太低,则会出现假边缘,当阈值设的太高,则一些弱边缘则会丢弃。当法线方向为22.5°~67.5°,或-112.5°~-157.5°,则认为边缘为-45°边缘;当法线方向为112.5°~157.5°,或-22.5°~-67.5°,则认为边缘为45°边缘;(b)在BWl中,认为P点坐标的8邻域内的弱边缘像素为真实边缘并标记。

2025-05-10 08:58:54 881

原创 c++CUDA编程--图像处理算法练习--图像高斯滤波,ok

c++图像算法CUDA加速CUDA练习,仅作参考VS2019--c++CUDA环境配置与编程实例visual studio2019配置opencv(详细教程)

2025-05-10 08:55:57 262

原创 【CUDA】灰度图像处理——使用CUDA来加速图像的灰度化处理

/ 核函数定义// 传入图片// 输出灰度图// 在GPU中开辟输入输出空间// 分配内存空间// 将图像数据传入GPU中// 调用核函数// 将数据从GPU传回CPU// 释放内存// 输出灰度图片return 0;

2025-05-10 08:50:59 993

原创 【cuda】线程束和线程块, test ok

当一个线程束中的线程执行不同的控制流路径时(例如,部分线程执行。

2025-04-28 21:03:36 281

原创 【CUDA编程】CUDA内存模型 test ok

修饰的变量通常是存放在GPU的寄存器中,比如下面代码中的线程索引变量i。寄存器通常用于存放内核函数中需要频繁访问的线程私有变量,这些变量与内核函数的生命周期相同,内核函数执行完毕后,就不能再对它们进行访问了。纹理内存是一种通过指定的只读缓存访问的全局内存,是对二维空间局部性的优化,所以使用纹理内存访问二维数据的线程可以达到最优性能。常量内存适合用于线程束中的所有线程都需要从相同的内存地址中读取数据的情况,比如所有线程都需要的常量参数,每个GPU只可以声明不超过64KB的常量内存。:block中的线程共有;

2025-04-28 20:37:18 897

原创 CUDA内存模型

虽然底层的存储器延迟高,容量大,但是其中有数据被频繁使用的时候,就会向更高一级的层次传输,比如我们运行程序处理数据的时候,程序第一步就是把硬盘里的数据传输到主存里面。CUDA采用的内存模型,结合了主机和设备内存系统,展现了完整的内存层次模型,其中大部分内存我们可以通过编程控制,来使我们的程序性能得到优化。时间局部性:就是一个内存位置的数据某时刻被引用,那么在此时刻附近也很有可能被引用,随时间流逝,该数据被引用的可能性逐渐降低。对于一个应用来说,全局内存,常量内存和纹理内存有相同的生命周期。

2025-04-28 19:53:31 324

原创 CUDA编程基础, test ok

GPU 意为图形处理器,也常被称为显卡,GPU最早主要是进行图形处理的。如今深度学习大火,GPU高效的并行计算能力充分被发掘,GPU在AI应用上大放异彩。GPU拥有更多的运算核心,其特别适合数据并行的计算密集型任务,如大型矩阵运算,与GPU对应的一个概念是CPU,但CPU的运算核心较少,但是其可以实现复杂的逻辑运算,因此其适合控制密集型任务,CPU更擅长数据缓存和流程控制。1、GPU不能单独进行工作,GPU相当于CPU的协处理器,由CPU进行调度。

2025-04-28 19:40:31 126

原创 使用cuda实现矩阵加法, my write

1.整体流程。

2025-04-28 19:28:23 244

原创 GPU(五)CUDA线程模型, test ok

一维线程模型定义方式: <<<grid_size, block_size>>>。其中,grid_size指定网格中线程块的数量,block_size指定一个线程块中线程的数量,该线程模型中线程的总数为grid_size*block_size。// dim2.cuint main()// 等价于dim3 grid_size(2, 2, 1)return 0;$ ./dim2。

2025-04-28 19:01:15 900

原创 CUDA线程模型, my write

功能是确保在某个线程块中的所有线程在执行到这个函数之前都已完成它们之前的所有指令。在CUDA程序中,GPU和CPU是异步执行的,因此在某些情况下,我们需要等待GPU完成任务后再执行CPU的任务。一个网格由多个线程块构成,一个线程块包含一组线程,同一线程块内。当核函数在主机端启动时,它的执行会移动到设备上,此时设备中会产生大量的线程。·blockDim(线程块的维度,用每个线程块中的线程数来表示)·gridDim(线程格的维度,用每个线程格中的线程数来表示)构,由线程块和线程块网格构成,如图2-5所示。

2025-04-27 21:25:00 731

原创 2.2 cuda 核函数

其中,argument arg表示核函数的参数,具体参数类型和内容需根据实际应用场景进行定义。核函数在GPU上进行并行执行。核函数需要使用限定词__global__进行修饰。核函数的返回值必须是void类型。

2025-04-27 20:43:01 88

原创 Zhang1999标定法(张正友)

介于摄影标定法和自标定法之间。既克服了摄影标定法需要的高精度三维标定物的缺点。一种利用平面棋盘格进行相机标定的实用办法。Zhang1999标定法(张正友)又解决了自标定法鲁棒性差的难题。

2025-04-18 21:39:40 139

原创 CUDA编程学习3——并行计算初窥&CUDA的软硬件架构

Stream(流)流是一系列顺序执行的命令,流之间相对无序或并发的执行他们的命令。多个SP加上其他的一些资源组成一个SM。其他资源包括存储资源,共享内存,寄储器等。一个SM中的所有SP是先分成warp,共享同一个memory和instruction unit。每个SM通过使用两个特殊函数(Special Function Unit,SFU)单元进行超越函数和属性插值函数(根据顶点属性来对像素进行插值)计算。SFU用来执行超越函数、插值以及其他特殊运算。Warp。

2025-04-13 08:59:04 1076

原创 GPU硬件架构及CUDA编程模型

在信号处理领域,随着信号处理规模急剧的增大,采用传统的处理机(如FPGA和DSP),其精度虽然可以达到工程要求,但是存在可移植性差、程序开发和调式周期长且硬件成本高等缺点。与传统处理机相比,仅使用中央处理器(CPU)作为计算平台,其底层架构决定其更适合逻辑密集运算,在处理实时数据时会受到很大的限制。而GPU的底层架构决定了其在并行计算方面具有独特的优势,适合大规模数据的并行运算。更高的性能:GPU芯片底层设计了大量算术逻辑单元,可以实现大规模数据的并行运算。更强的通用性。

2025-04-13 08:47:01 906

原创 CUDA C/C++ 教程一:加速应用程序

GPU 加速计算正在逐步取代 CPU 计算,近年来加速计算带来了越来越多的突破性进展,各类应用程序对加速计算日益增长地需求、便捷地编写加速计算的程序的需求以及不断改进的支持加速计算的硬件设施,所有这一切都在推动着计算方式从 CPU 计算过渡到 GPU 加速计算。无论是从出色的性能还是易用性来看,CUDA计算平台均是加速计算的重要实现方式。CUDA 提供了一种可扩展于 C、C++、Python 和Fortran等语言的编码接口,并行化后的代码能够在 NVIDIA GPU 上运行,以大幅加速应用程序。

2025-04-13 08:28:39 845

原创 神经网络模型简介

Tensorflow神经网络训练模型的基本步骤,总结如下:导入数据 => 构建神经网络模型 => 配置模型的训练方式 => 输入数据到网络 => 训练模型 => 评估模型 => 使用模型进行预测学习的时候,要时刻记住自己所处的阶段;同时要明白,对初学者或者AI基础应用工程来说,核心时搭建正确的神经网络和输入正确的数据。导入数据这是个固定的模式,直接导入即可。通过print函数,可以知道训练数据有60000组,每个图片是28*28的二维数据;测试数据有10000组构建全连接神经网络模型。

2025-03-29 20:39:33 480

原创 北大tensorflow 过拟合的例子,test ok

非vip 扫码看文章非vip 扫码看文章。

2025-03-29 18:22:40 242

原创 北大tensorflow欠拟合的python 例子, test ok

以下是一个使用 TensorFlow 展示欠拟合现象的 Python 示例。在这个示例中,我们会创建一个简单的线性回归模型,尝试用它来拟合一个非线性的数据集,以此展示欠拟合的情况。非vip ,扫码看文章。

2025-03-29 17:07:29 292

原创 TensorFlow C++笔记:安装、模型加载推理及构建计算图,test ok

Tensor类的构造函数无法指定张量值,如需用特定值定义一个张量可以使用Input::Initializer,文档描述:Initializer能够从C++基本类型常量或初始化列表(initializer lists)构建Input对象,代表一个多维数组。文档描述:一个Input类代表一个能作为算子的操作数(operand)的张量,一个Output类代表算子输出的张量。想要以特定模式赋值的张量,可以考虑在array_ops.h里查找想要的算子,例如Fill算子以特定值赋给张量的所有元素。

2025-03-28 21:13:13 886

原创 tensorflow2.0python训练c++部署, test ok

编译完成后将在tensorflow/bazel_bin/tensorflow文件夹中出现libtensorflow_cc.so和libtensorflow_framework.so两个文件,即表示编译成功。编译时间非常漫长,并且需要高配置的处理器和较大的内存,编译过程中将无法做其他事。的版本也需升至8.4.0以上,可以使用命令 gcc -v查看gcc的版本。,并调用保存的pb文件,最后输出结果,以下是main.c的代码内容。,会在文件夹中生成lstm2的文件夹,里面是保存的模型文件。运行main.out。

2025-03-28 21:06:07 402

原创 北大搭建神经网络八股——keras实现

卷积层:tf.keras.layers.Conv2D(filters=卷积核个数,kernel_size=卷积核大小,strides=卷积步长,padding=”valid” or “SAME”)kernel_regularizer可选:tf.keras.regularizers.l1()、tf.keras.regularizers.l2()tf.keras.layers.Dense(神经元个数,activation=“激活函数”,kernel_regularizer=哪种正则化)

2025-03-16 11:09:40 996

原创 北大优化器分类, my write

深度学习最全优化方法总结比较(SGD,SGDM,Adam,Adagrad,Adadelta,Adam)_sgdmdm-CSDN博客。

2025-03-16 10:09:35 597

原创 北大神经网络参数优化器, my write

它们都有学习的潜力,但是不同的引导方法,会让孩子向不同方向发展,达到不同的高度。把修正后的一阶动量 和 二阶动量 带入 参数更新公式,实现参数自更新。当前的二阶动量 v_w,v_b 等于 当前梯度评分的累计和。同时引入 SGDM的一阶动量 和 RMSProp的二阶动量。一阶动量 很大程度上 由 上一时刻的一阶动量所决定。零时刻的 w 和 b的二阶动量 初始值都为0.即 学习率 x 一阶动量/ 根号下的二阶动量。二阶动量:与梯度平方相关的函数。一阶动量: 与梯度相关的函数。batch 将多少个数据打包。

2025-03-16 09:59:09 351

原创 北大L2正则化缓解过拟合实例, my write

用颜色来代替0/1预测值 [['red'], ['blue'], ['blue'], ['red'], ['red'], ['blue'],问题,给定一个数据集中又x1,x2,y在神经网络中进行训练,再用网格中坐标作为测试集测试,将原始数据x1,x2进行0/1分类,以图表显示。画分界线,数据以0/1分类,probs为每个坐标点的预测值(0~1之间),则将预测值为0.5的坐标画上分界线,此线也就是分类点的分界线。是机器学习中对原始损失函数引入额外信息,以便防止过拟合和提高模型泛化性能的一类方法的统称。

2025-03-16 09:52:08 975

原创 北大Tensorflow2.x框架-缓解过拟合,my write

正则化在损失函数中引入复杂度指标,利用给W加权值,弱化了训练数据的噪声(一般不对b进行正则化)。正则化分为L1正则话和L2正则化,分别对应L1范数和L2范数。L1正则化:L1正则化会使很多的参数变为0,因此该方法可以通过稀疏参数,即减少参数数量,降低复杂度。L2正则化:L2正则化会使参数很接近零但是不为0,因此该方法可以通过减少参数值的大小降低复杂度。本次代码采用设计好的dot.csv数据集,其中包含x1,x2和y_c,我们先训练好神经网络结构,然后构思成一张图,找到y_c和x1,x2的关系,然后输入

2025-03-16 08:34:24 261

原创 北大神经网络训练防止过拟合和欠拟合的方法, test

nn.BatchNorm2d:适用于4D输入,如图片数据4维度(batch,channel,height,width),卷积层。如果模型训练时,准确率或者损失变化缓慢,则需要调整学习率,越小的学习率,模型的准确率或者损失变化越慢。过度学习,反而失去泛化能力,当发现过拟合时,一般说明模型的拟合能力没问题,但是泛化能力需要提高。nn.BatchNorm1d:适用于2D或3D输入,如一维卷积层和全连接层。2.让每一层变得更大,增加每一层的通道数或者神经元个数。3.隐藏层单元数,神经元个数或者卷积层通道数。

2025-03-15 21:58:55 407

原创 北大损失函数, my write

1. 含义:loss表示预测值y与已知答案y_的差距.有以下三种方式。输出先过softmax函数,再计算y与y_的交叉熵损失函数。表征两个概率分布之间的距离daan。7. softmax与交叉熵结合。3. 举例说明均方误差损失函数。y_是标准答案,y是输出答案。5. 举例自定义损失函数。6. 交叉熵损失函数举例。4.举例自定义损失函数。2. 均方误差mse。

2025-03-15 21:08:49 307

01--Linux系统编程-文件IO.pdf

linux 开发者,学习c ,c++

2021-10-08

06--Linux系统编程-守护进程、线程.pdf

linux开发

2021-10-08

07--Linux系统编程-线程同步.pdf

linux开发

2021-10-08

Linux系统编程笔记.docx

linux开发人员,想了解linux 内核

2021-10-08

c++ 二分查找法,test ok

c++ 二分查找法,test ok

2024-02-26

opendds介绍,一种常用的通信中间件

opendds介绍,一种常用的通信中间件

2022-10-06

c++ linux系统下notify的使用

1.notify的使用 2. wait的使用 3. linux系统下的开发 4.多线程通信 5. 生产者和消费者模式

2022-10-03

socket通过传输protobuf通信

1. 客户端a和b通过socket通信 2. 通信中为了解决字节对齐使用profobuf来通信 3. linux下的软件开发 4. 测试日志打印都存在 5. 自己调试ok的代码,直接可以下载下来使用

2022-10-03

zmq test demo

zmq test demo

2022-02-22

linux网络编程总结.zip

linux网络编程

2021-10-26

ring_buffer.cpp

c++

2021-10-08

fidi_test _demo.zip

fidi_test _demo.zip

2021-10-08

json-original-code.zip

json源码

2021-10-08

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除