- 博客(330)
- 资源 (22)
- 收藏
- 关注
原创 【FPGA】优化设计指南(二):性能指标
需要注意的是,Block RAM、UltraRAM和DSP48三者资源利用率都不能超过80%,若超过了80%,则要保证三者平均利用率低于80%。与传统的Block RAM相比,UltraRAM具有更高的存储密度和更低的时延,这使得它在某些应用中能够提供更好的性能和效率。它是Xilinx FPGA架构中的一部分,与传统的Block RAM(BRAM)不同,UltraRAM提供了更高容量的存储和更灵活的配置选项。输入到输出的延迟通常用时钟周期个数来表示,称为Latency,该指标也反映了设计的流水级数。
2024-04-22 01:42:47 495
原创 【FPGA】优化设计指南(一):设计原则
面积和速度是对立统一的。因此,在时钟网络中,MMCM 经常用于生成不同时钟域内的时钟信号,确保这些信号之间具有明确的相位关系,以保证电路的正确功能和稳定性。毛刺通常是短暂的、不稳定的信号脉冲,可能会对电路的正常功能造成影响,特别是在时序要求严格的系统中,如数字电路中的时钟信号处理。在同步设计中,时钟信号的控制可以帮助过滤掉这些毛刺,因为触发器只在时钟的有效沿触发,而不会受到毛刺的影响。在FPGA中,"乒乓操作"通常指的是在时序逻辑中的一种特定操作,用于在两个时钟周期之间交替执行某个操作或改变某个状态。
2024-04-22 01:20:10 1179 1
原创 【DeepStream】基于英伟达DeepStream框架进行算法开发(三):Gst-nvinfer模块介绍
该插件接受来自上游的批处理的 NV12/RGBA 缓冲区。NvDsBatchMeta 结构必须已附加到 Gst 缓冲区。底层库(libnvds_infer)可处理任何 INT8 RGB、BGR 或 GRAY 数据,其尺寸为网络高度和网络宽度。Gst-nvinfer 插件根据网络要求对输入帧执行变换(格式转换和缩放),并将转换后的数据传递给低级库。底层库对转换后的帧进行预处理(执行归一化和均值减法),生成最终的 float RGB/BGR/GRAY 平面数据,然后传递给 TensorRT 引擎进行推理。
2024-02-28 18:52:16 1002
原创 【DeepStream】基于英伟达DeepStream框架进行算法开发(二):推理基础流程
当需要将一个元素连接到另一个元素时,可以使用 get_request_pad() 方法从目标元素中请求一个 pad,然后将这个 pad 与其他元素的 pad 进行连接,实现元素之间的数据传输。这行代码将 caps 元素的输出 pad 和之前获取的 streammux 元素的请求 pad 进行连接,即将属性设置元素的输出与合流器元素的输入连接起来,使视频流能够正确传递到合流器中的指定输入通道。这行代码从 caps 元素的 “src” pad 中获取一个静态 pad,并将其存储在 srcpad 变量中。
2024-02-27 14:20:10 987
原创 【vscode】vscode在离线环境下配置远程服务器客户端
当需要在离线环境下配置远程服务器客户端时,Visual Studio Code (VS Code) 是一个优秀的工具选择。通过配置远程开发插件,可以在本地使用 VS Code 编辑远程服务器上的文件,提高开发效率和灵活性。在本博客中,我们将深入介绍如何在离线环境下配置 VS Code 远程开发环境,帮助开发者更好地利用这一功能进行远程开发工作。
2024-02-27 13:45:22 792
原创 【DeepStream】基于英伟达DeepStream框架进行算法开发(一):GStreamer基础
在当今快速发展的人工智能和计算机视觉领域,英伟达的DeepStream框架提供了强大的工具和功能,帮助开发者快速部署和优化实时视频分析应用。本博客将重点介绍基于英伟达DeepStream框架进行算法开发的方法和技巧,包括如何利用DeepStream框架构建高效的算法模型、实现实时视频流处理和应用优化等内容。通过本博客的学习,读者将能够掌握在DeepStream框架下进行算法开发的关键技能,为自己的视频分析项目提供更加稳定和高效的解决方案。
2024-02-27 09:50:25 546
原创 【redis】redis系统实现发布订阅的标准模板
Redis发布订阅功能是Redis的一种消息传递模式,允许多个客户端之间通过消息通道进行实时的消息传递。在发布订阅模式下,消息的发送者被称为发布者(publisher),而接收消息的客户端被称为订阅者(subscriber)。在Redis中,发布者可以将消息发布到一个或多个频道(channel),而订阅者可以选择订阅感兴趣的频道以接收相关的消息。同时,一个订阅者也可以订阅多个频道。当有消息发布到已被订阅的频道时,所有订阅该频道的客户端都能够接收并处理这些消息。
2023-12-19 20:30:00 505
原创 【向量数据库】相似向量检索Faiss数据库的安装及余弦相似度计算(python)
在使用 Faiss 库进行人脸余弦相似度计算的应用中,通常会遵循以下步骤:特征提取:首先,需要使用人脸识别模型对人脸图像进行特征提取。这些特征通常是高维度的向量,代表了每张人脸图像的抽象特征。构建 Faiss 索引:将提取出的人脸特征向量构建成 Faiss 可以处理的索引结构。通常会选择使用内积(dot product)作为相似度度量方式,因为 Faiss 默认使用内积进行近似的余弦相似度计算。
2023-12-18 21:45:00 1442
原创 【DQN】基于pytorch的强化学习算法Demo
DQN(Deep Q-Network)是一种基于深度神经网络的强化学习算法,于2013年由DeepMind提出。它的目标是解决具有离散动作空间的强化学习问题,并在多个任务中取得了令人瞩目的表现。DQN的核心思想是使用深度神经网络来逼近状态-动作值函数(Q函数),将当前状态作为输入,输出每个可能动作的Q值估计。通过不断迭代和更新网络参数,DQN能够逐步学习到最优的Q函数,并根据Q值选择具有最大潜在回报的动作。DQN的训练过程中采用了两个关键技术:经验回放和目标网络。
2023-11-24 08:59:33 550 1
原创 【C++】linux下的gdb程序调试
在 Linux 环境下,我们可以使用 GDB (GNU Debugger) 工具来帮助我们进行程序调试。以上是在 Linux 环境下使用 GDB 调试 C++ 程序的基本步骤和常用命令。通过设置断点,我们可以在程序执行到特定位置时停下来,以便查看程序状态。命令即可启动 GDB 调试器,并加载你的程序。此外,还有其他许多 GDB 命令可用以帮助进行调试和查看程序的状态,可以使用。在进行调试之前,我们需要先用调试符号编译你的 C++ 程序。执行后,程序将开始运行,直到遇到第一个断点或程序结束。
2023-11-21 18:26:00 339
原创 【SOPHON】算能盒子SE-16中c++版本pipeline的环境配置
arm SoC平台,内部已经集成了相应的libsophon、sophon-opencv和sophon-ffmpeg运行库包,位于下。通常在x86主机上交叉编译程序,使之能够在arm SoC平台运行。您需要在x86主机上使用SOPHON SDK搭建交叉编译环境,将程序所依赖的头文件和库文件打包至soc-sdk目录中。
2023-11-02 17:54:42 194
原创 【SOPHON】算能盒子SE-16的C++模型转换
本文以 arcface 为例, 介绍如何编译迁移一个onnx模型至TPU平台运行。有疑问具体可参考。
2023-10-27 17:57:36 252
原创 【optuna】将实验结果保存为excel
Optuna 是一个用于自动超参数优化的开源 Python 库。它提供了一个简单且灵活的接口,帮助你在机器学习和深度学习任务中优化算法的超参数。Optuna 的设计目标是使超参数优化过程更加高效和易用。它采用了一种基于序列化和并行化的策略,允许用户定义自己的目标函数,并在超参数搜索空间中动态地探索参数组合,以找到最佳的超参数配置。Optuna 的核心概念是 “Study” 和 “Trial”:Study(研究)是一个优化过程的最高级别实体。
2023-10-26 19:30:00 273
原创 【SOPHON】算能盒子SE-16的配套x86交叉编译环境搭建
tpu-mlir 为TPU编译器工程提供一套完整的工具链,可以将不同框架下预训练的神经网络,转化为可以在算能TPU上高效运行的二进制文件BModel。目前直接支持的框架包括tflite、onnx和Caffe。libsophon 提供BMCV、BMRuntime、BMLib等库,用来驱动VPP、TPU等硬件,完成图像处理、张量运算、模型推理等操作,供用户进行深度学习应用开发。
2023-10-19 13:49:23 494
原创 【python】ThreadPoolExecutor线程池
在构造函数__init__中,我们传入了两个参数max_workers和max_pending_tasks,分别代表线程池的最大工作线程数和最大挂起任务数。我们还初始化了executor成员变量为一个ThreadPoolExecutor对象,并设置了max_workers为传入的max_workers值,pending_tasks初始化为0。否则,它会使用executor.submit方法来提交任务,并调用_task_wrapper方法包装任务,最后增加挂起任务数并返回任务的Future对象。
2023-10-14 17:56:27 264
原创 【向量数据库】相似向量检索Faiss数据库的安装及余弦相似度计算(C++)
Faiss 是一个强大的向量相似度搜索库,具有以下优点:高效的搜索性能:Faiss 在处理大规模向量数据时表现出色。它利用了高度优化的索引结构和近似搜索算法,可以快速地执行最近邻搜索和相似度匹配,具有很低的查询延迟。高度可扩展:Faiss 提供了多种索引结构和算法的选择,包括 k-d树、IVF(Inverted File System)和 PQ(Product Quantization)等。这些索引结构能够轻松应对大规模的向量数据集,并支持高效的并行计算和分布式处理。
2023-09-07 23:45:00 1197
原创 【高性能计算】opencl语法及相关概念(五):图像的仿射变换缩放
要使用仿射变换完成图像等宽高比缩放,可以按照以下步骤进行操作:定义仿射变换矩阵:首先,定义一个仿射变换矩阵,用于描述缩放操作。该矩阵是一个2x3的矩阵,包含平移、缩放和旋转的参数。对于缩放而言,我们只需要调整矩阵中的缩放参数。其中,scale_x和scale_y分别表示在 x 和 y 方向上的缩放因子。构建仿射变换矩阵:使用上述定义的缩放因子,将其填充到仿射变换矩阵的相应位置。应用仿射变换:对于每个图像像素,根据仿射变换矩阵的逆矩阵将其映射到原始图像中的位置。
2023-09-04 23:45:00 203
原创 【高性能计算】opencl语法及相关概念(四):结合opencv进行图像高斯模糊处理
高斯模糊是一种常用的图像处理技术,用于减少图像中的噪点和细节,并实现图像的平滑效果。它是基于高斯函数的卷积操作,通过对每个像素周围的邻域像素进行加权平均来实现模糊效果。具体而言,高斯模糊通过在图像上滑动一个卷积核,将卷积核与输入图像的对应像素进行一一相乘,并将结果相加,从而产生输出图像的每个像素值。这个卷积核是一个二维高斯函数,它的形状决定了模糊的程度。在高斯函数中,离中心像素越远的像素会被赋予更小的权重,从而降低了离中心像素的贡献,实现模糊的效果。通过调整高斯核的大小和标准差参数,可以控制模糊的程度。
2023-08-31 23:30:00 787
原创 【高性能计算】opencl语法及相关概念(二):索引,队列,核函数
设备(device):宿主机使用的 OpenCL设备集合。内核 (kernel):在 OpenCL 设备上运行的 OpenCL 函数。程序对象 (program object):实现内核的程序源代码和可执行文件。内存对象(memory object):内存中对OpenCL设备可见的组对象,包含可以由内核实例处理的值。
2023-08-30 23:30:00 681
原创 【高性能计算】opencl语法及相关概念(三)事件,内存
当谈到OpenCL中的事件时,它们代表了执行的各个阶段或操作的状态信息。通过使用事件,您可以跟踪和管理内核执行以及内存操作的进度和顺序。以下是与OpenCL事件相关的关键概念:创建事件:您可以使用或函数手动创建事件,或者使用OpenCL API执行其他操作时自动创建事件。内核执行事件:当您将内核提交到命令队列进行执行时,会返回一个事件对象,您可以利用该事件对象来跟踪内核执行的状态。等待事件:可以使用或函数来阻塞程序直到指定的事件完成。这对于确保内核执行顺序以及依赖关系非常重要。
2023-08-30 23:30:00 429
原创 【高性能计算】opencl语法及相关概念(一):工作流程,实例
在上述代码中,get_global_id(0) 是在内核函数 vectorAdd 中使用的,表示获取当前工作项在全局范围的第一个维度(维度编号为0)上的索引。例如,如果在执行内核函数时将全局执行范围设置为 128,那么在第一个维度上,工作项的索引值将从 0 到 127,总共有 128 个唯一的索引值。例如,如果在执行内核函数时使用了 128 个工作项并且当前工作项的全局索引是 10,那么 get_global_id(0) 会返回 10,表示当前工作项在全局范围的第一个维度上的索引是 10。
2023-08-28 23:30:00 379
原创 【高性能计算】opencl安装及相关概念
安装特定硬件厂商提供的OpenCL SDK:如果您的系统不提供默认的OpenCL运行时和驱动程序,或者您希望使用特定硬件厂商提供的最新版本运行时和驱动程序,那么可以安装相应厂商提供的OpenCL SDK。虽然特定硬件厂商提供的OpenCL SDK可能包含额外的工具和优化,但OpenCL的核心标准和函数接口是跨平台的,并且可以在没有特定SDK的情况下进行开发和编译。总而言之,异构计算利用不同类型的计算资源的特点和优势,通过合理分配和协同使用这些资源,实现更高的计算性能、能源效率和灵活性。
2023-08-24 23:15:00 1364
原创 【架构】探索计算机处理器的世界:ARM和x86架构解析及指令集
通过本文的介绍,我们了解了ARM和x86这两个重要的处理器架构。它们在不同的领域发挥着重要的作用,驱动着计算机技术的不断进步。在选择合适的处理器架构时,我们需要考虑应用需求、性能要求和生态系统支持等因素。祝愿读者在处理器的世界里,找到最适合自己的架构!
2023-08-24 22:00:00 1737
原创 【OpenMp】openmp库的介绍及安装
OpenMP(Open Multi-Processing)是一种并行编程框架,用于在共享内存系统中实现并行计算。它是GCC编译器的一部分,提供了一组指令和编译器指导,帮助程序员实现程序的并行化。OpenMP的目标是简化并行编程,提高程序的执行效率。
2023-08-23 23:30:00 1719 1
原创 【OpenMp】openmp库的基本语法
动态调度模式是先到先得的方式进行任务分配,不用size参数的时候,先把任务干完的线程先取下一个任务,以此类推,而不是一开始就分配固定的任务数。总之,reduction指令是OpenMP中用于对并行循环中的变量进行归约操作的指令,能够自动将每个线程的局部变量的结果累加到一个全局变量中。在并行循环中,每个线程都会拥有自己的sum的局部副本,并在循环的迭代过程中进行累加操作。当循环结束后,reduction指令将会将每个线程的sum的局部副本的结果相加,并将最终的总和存储到全局的sum变量中。
2023-08-23 17:58:56 773
原创 【ffmpeg】基于需要使用videocapture的opencv编译配置(C++)
opencv使用videocapture读取视频流时,需要借助底层的ffmpeg库。如果不能正确编译,会报错,现记录正确编译配置方法。
2023-08-22 18:01:51 917
原创 【判别方法】模糊图像的拉普拉斯判别,C++及python版本
通过判断一组合格的图像,利用下列代码,得到所有图像的模糊值,取其中最小值作为模糊的阈值下限,在实际应用中,一旦超过该值,则认为图像清晰,小于该值,则认定图像模糊。
2023-08-22 17:42:49 376
原创 【网络】windows电脑配置host
本地开发和测试:在开发过程中,可以使用hosts文件将开发环境中的域名映射到本地的IP地址,以便在本地进行开发和测试。屏蔽广告和恶意网站:通过配置hosts文件,可以将一些已知的广告、恶意或不受欢迎的网站映射到一个无效的IP地址,从而屏蔽它们的访问。DNS故障或绕过:在某些情况下,可能需要绕过DNS解析,直接将域名映射到指定的IP地址,以解决DNS故障或访问特定的服务器。需要注意的是,配置hosts文件需要谨慎操作,确保您知道自己在做什么,并且备份原始的hosts文件以防万一。
2023-08-02 16:37:55 6697
原创 【Deepsort】C++版本Deepsort编译(依赖opencv,eigen3)
广泛的功能:Eigen3支持多种线性代数运算,包括向量和矩阵的基本运算、线性方程组的求解、特征值和特征向量的计算、矩阵分解(如LU分解、QR分解等)、广义特征值问题的求解等。Eigen3是一个C++模板库,提供了许多用于线性代数运算的功能,如向量、矩阵、矩阵运算、线性方程组求解等。它的API设计简洁明了,提供了丰富的运算符重载和友好的语法,使得代码编写更加简单和可读。高性能:Eigen3使用了优化的算法和技术,具有出色的运行速度和高效的内存使用。它的源代码可在GitHub上获得,方便用户进行定制和扩展。
2023-08-01 20:10:22 1421 2
原创 【OnnxRuntime】在linux下编译并安装C++版本的onnx-runtime
通过按照上述步骤,您应该能够在Linux上成功安装ONNX Runtime。请注意,安装过程中可能需要根据您的系统和需求进行适当的调整。// 首先创建一个conda环境,因为./build.sh实际上调用的是./tools/cl_build/build.py。这将使用所有可用的CPU核心进行编译。如果希望使用指定数量的核心,可以将$(nproc)替换为所需的核心数量。安装CMake:可以通过包管理器(如apt、yum等)安装CMake。安装C++编译器:确保系统中已安装C++编译器,如GCC或Clang。
2023-07-31 20:22:38 4748 4
原创 【Opencv】视频跟踪算法KCF
KCF(Kernelized Correlation Filter)是一种基于核相关滤波器的目标跟踪算法。它通过学习目标的外观特征和使用核相关滤波器进行目标定位。KCF属于传统算法的单目标跟踪器。下面是对KCF跟踪算法的介绍:目标特征提取:KCF算法使用HOG(Histogram of Oriented Gradients)特征来表示目标的外观。HOG特征是一种局部纹理特征,通过计算图像中每个像素点周围的梯度方向直方图来描述目标的纹理信息。核相关滤波器:KCF算法使用核相关滤波器来进行目标定位。
2023-07-28 13:26:52 2884 13
原创 【AIBOX】TF卡镜像烧录技术详解
本文将详细介绍TF卡镜像烧录的技术过程,包括备份TF卡为镜像文件和将镜像文件恢复到新的TF卡。TF卡镜像烧录是一种常用的操作,可以用于备份和复制TF卡上的数据,方便用户在不同设备之间进行数据迁移或备份。
2023-07-28 09:57:53 800
原创 【NCNN】arm架构cpu的硬件加速代码样例
NCNN(Nihui’s CNN)是一个轻量级、高性能的深度学习推理框架,由腾讯优图实验室的大神Nihui开发。该框架在移动端应用和嵌入式设备上实现了高效的深度学习模型推理,具有较低的内存占用和高度优化的计算性能。
2023-07-25 15:22:07 888
原创 【NCNN】NCNN中Mat的crop与resize方法
这段代码是为了将一个ncnn::Mat对象out中的像素数据从一个具有3个通道的图像数据im中提取出来,并实现贴图的效果。通过以上操作,可以将图像数据im中指定位置的像素数据提取出来,并填充到ncnn::Mat对象out中,从而实现贴图的效果。通过以上操作,可以将输入图像im中指定位置的像素数据,经过双线性插值的方式,缩放并存储到输出图像outim的指定位置。这段代码实现了将输入图像im中指定位置的像素数据,经过双线性插值的方式,缩放并存储到输出图像outim的指定位置。
2023-07-24 18:24:14 586
原创 【NCNN】NCNN中Mat与CV中Mat的使用区别及相互转换方法
功能和用途:ncnn::Mat主要用于在ncnn中进行模型推理和图像处理,提供了与ncnn库相关的功能和接口。总结来说,ncnn::Mat和cv::Mat在用途和功能上有一些差异,但它们都用于处理图像和矩阵数据,并提供了类似的API,以便于访问和操作这些数据。数据存储方式:ncnn::Mat使用行优先存储方式,而cv::Mat使用列优先存储方式。ncnn::Mat和cv::Mat在某些方面是相似的,但也存在一些区别。ncnn::Mat和cv::Mat都是用于表示图像或矩阵数据的类。
2023-07-21 20:24:38 1249
原创 【NCNN】腾讯ncnn推理框架的简介及安装
ncnn(Ncnn Convolutional Neural Network)是一个轻量级的高性能深度学习框架,由腾讯公司开发。它专门为移动设备和嵌入式设备优化,旨在提供高效的推理性能和低内存占用。以下是ncnn的一些主要特点和优势:轻量级和高性能:ncnn被设计为轻量级框架,具有高效的推理性能。它使用优化的计算图和内存管理策略,以最大程度地减少内存占用和计算开销。跨平台支持:ncnn支持多种操作系统和硬件平台,包括Android、iOS、Linux、Windows等。
2023-07-20 19:07:49 5636 5
原创 【CV】常见的损失函数及应用举例:交叉熵、对比、余弦、Dice、Focal Loss
损失函数的作用是衡量模型预测值与真实值之间的差异,从而评估模型的性能,并通过优化算法(如梯度下降)来调整模型参数,使得损失函数的值最小化,进而提高模型的预测准确性。具体来说,损失函数通常用于监督学习中,给定样本的特征和标签,模型根据特征预测标签,并将预测值与真实值进行比较,计算出损失值。优化过程就是在不断地调整模型参数,使得损失值越来越小。因此,损失函数是优化算法的重要组成部分,它决定了模型优化的方向和速度。
2023-06-25 18:55:32 3696
原创 【CV】从分类到回归:常见算法评价指标,如ROC,MAP等
在ROC曲线中,点(0,0)表示将所有样本都预测为负样本,点(1,1)表示将所有样本都预测为正样本,曲线越靠近左上角,表示模型的性能越好。与算术平均数、几何平均数和中位数等常见的平均数不同,调和平均数更加关注小数值,因为任何一个小于1的数的倒数都大于1,所以当一组数据中有个别数较小的时候,调和平均数会受到这些小数的影响而偏小。P-R曲线的优点是对于正样本的分类能力有更好的体现,对于每张测试图片,需要计算出该图片中每个物体类别的平均精度(AP),然后将所有物体类别的平均精度的平均值作为该图片的平均精度。
2023-06-25 15:37:57 1018 1
SOPHON算能盒子SE-16的配套x86交叉编译环境搭建
2023-10-19
cmake工程标准编译框架
2023-05-05
Inno Setup:windows下安装程序制作软件,及打包模板
2023-03-20
win10 opencv python 显示中文
2023-02-06
5点和68点人脸识别模型shape-predictor-68-face-landmarks.dat及使用说明
2023-01-31
lbpcascade-frontalface.xml与 haarcascade-eye-tree-eyeglasses.xml
2023-01-28
多类模型转onnx工具
2023-01-15
intel官方人眼睁闭分类模型onnx,输入图片为单眼区域,返回睁或闭的状态
2023-01-15
centos下opencv的编译后的安装包(编译时带opencv-contrib扩展包)c++
2022-12-20
arcfaceresnet100-8及scrfd_2.5g_kps_S模型(openvino的xml及bin及普通的onnx模型)
2022-12-02
openvino.rar
2022-12-02
protobuf-cpp-3.11.4.rar
2022-10-13
sci-kitlearn中的'mnist_784'数据集
2022-09-04
qt翻页按钮控件及示例.rar
2022-08-08
windows关于qt的数据库操作封装类以及用例,c++代码
2022-08-08
QT windows32位可用的web服务器 C++ 内含部署说明
2022-07-22
【pytorch】将yolov5模型通过openVINO2022部署至生产环境(二):C++版本 异步模式
2022-05-31
【pytorch】将yolov5模型通过openVINO2022部署至生产环境(二):C++版本博文对应源码
2022-05-27
博文:【pytorch】将模型部署至生产环境:借助TensorRT 8完成代码优化及部署(二):C++接口实现 的代码备份。
2022-05-16
windows opencv 在画面中添加中文,解决乱码问题。附带动态链接库Gdi32.Lib,gdi32.dll
2022-05-13
tensorRT的python接口用pycuda的wheel安装包
2022-05-11
训练好的口罩检测模型及口罩数据集(正负例各300张)对应博文:pytorch:基于yolov5的口罩检测记录。
2022-03-30
tensorflow h5py数据
2022-03-11
qt自定义时间选择控件动态库及源码.rar
2021-08-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人