自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (2)
  • 收藏
  • 关注

原创 如何基于pycharm调试open-webui的backend

由于使用了uvicorn异步web服务,因此不能直接创建python类型的Debug Configurations,而需要创建一个FastAPI类型的Debug Configurations。点击保存后,即可类似python脚本进行正常调试。注意,可能还需要其他的环境变量需要设置。上述完成整个环境配置,接下来开始配置调试工程。

2024-04-10 17:34:03 135

原创 一维数组映射为上三角阵实现

运行以下命令,即可生成一个上三角阵,其中5表示生成上三角阵的维度为5, 3表示将数组A的下标3对应的上三角阵的坐标标记出来,用于验证准确性。另外,第二个参数(3)不能大于n(n+1)/2,其中n为上三角阵的维度。以上是包含对角线的上三角阵的生成方式。

2023-12-25 16:34:27 434

原创 std::shared_ptr如何释放管理权限并且不销毁管理的裸指针的资源

std::shared_ptr是一个智能指针,它会自动管理其指向的对象的生命周期。当std::shared_ptr的引用计数变为0时,它会自动删除其管理的对象。因此,通常情况下,我们不能让std::shared_ptr释放其管理的对象但不删除该对象。请注意,这种做法可能会导致内存泄漏,因为你需要手动删除p来释放内存。在这个例子中,当ptr的引用计数变为0时,它不会删除其管理的int(10),因为我们提供了一个什么都不做的删除器。然而,如果你确实需要这样做,你可以使用一个自定义的删除器。

2023-09-22 10:54:46 423

原创 C/C++ 静态变量初始化顺序的不确定性导致崩溃

但是如果还使用sg_map的定义放到函数register中作为局部变量使用就不会有这样的问题,原因是sg_map是一个局部静态变量,它在A::register函数中被定义。如果B::a的初始化过程早于sg_map,那么当调用register时,sg_map还未初始化,这时如何对sg_map进行insert操作就会产生崩溃,也就是segment fault错误。由于静态变量初始化顺序的不确定性导致的。如果使用静态变量,并且在不同的编译单元中有不同的静态变量,最好不要使用全局静态变量,而是使用局部静态变量。

2023-09-19 16:20:07 276

原创 如何使用GitHub Desktop在PR时只提交某个commit

先切换回主分支main(提交commit的分支),然后选择要合并到上游仓库的commit,然后右键选择cherry-pick即可完成本地合并到新创建的分支。查看我们仓库的远端是否是我们自己fork的仓库地址,这里不能是上游仓库,因为我们可能没有权限。push完成分支之后我们既可以在github.com的fork的仓库里看到新创建的分支。使用github的时候,有时我们在自己fork的仓库修改后需要PR合并到上游仓库。这时会弹出此commit要提交到的分支,选择刚创建的分支即可。3. push新创建的分支。

2023-08-23 17:13:54 413

原创 解决pycharm报Cannot find remote credentials for target config com.jetbrains.plugins.remotesdk.target的方法

最后将工程目录下的.idea目录删除,然后重新创建工程。再将之前的解释器全部删除,重新创建即解决了这个问题。使用的是ssh方式,解释器使用的是conda里的自定义的python。后来,尝试了几种方法,都没法解决,比如删了解释器重新添加等。

2023-08-16 14:52:08 3790 1

原创 基于FFmpeg + CV-CUDA实现高性能硬件解码与硬件预处理操作 —— YUV420SP(NV12) => BRG24 零拷贝高性能

基于FFmpeg + CV-CUDA实现高性能硬件解码与硬件预处理操作 ,实现YUV420SP(NV12) => BRG24,零拷贝高性能。

2023-08-04 11:12:47 456

原创 ModelArts中使用自定义镜像部署在线服务时,基于Dockerfile中的CMD命令启动容器,容器会自动退出的解决办法

ModelArts中使用自定义镜像部署在线服务时,基于Dockerfile中的CMD命令启动容器,容器会自动退出的解决办法。

2023-02-09 16:18:34 515

原创 ModelArts中使用自定义镜像创建为AI应用并部署服务方法

ModelArts中使用自定义镜像创建AI应用并部署在线服务的方法过程。

2023-02-09 16:13:13 544

原创 RV1808/1126使用RKNN作为MediaPipe推理后端开发步骤及ONNX转RKNN模型

目录1 基于RKNN推理后端集成1.1 依赖库配置1.2 添加计算单元Calculators1.3 增加rknn后端调用接口1.4 增加计算图1.5 增加动态库生成规则1.6 编译1.7 运行配置1.7.1 基于opencv的resize配置1.7.2 基于rag的resize配置2 RKNN模型转换1 基于RKNN推理后端集成RKNN SDK为RK1808等带有NPU 的平台提供编程接口...

2022-05-30 20:38:37 1902 5

原创 瑞芯微平台(RV1126)基于轻量级推理框架TengineInferpipe实现tengine后端的NPU部署应用

TengineInferpipe的简介参考​​​​​​TengineInferPipe在Jetson平台基于TensorRT后端Demo实现_space01的博客-CSDN博客。瑞芯微平台(RV1126)建议使用docker环境交叉编译TengineInferPipe,首先需要安装docker,并启动docker服务。1. 拷贝tengine动态库通过交叉编译工具编译的tengine库拷贝到TengineInferPipe的目录下。tengine的交叉编译方法参考RV1126编译tengine_陈.

2022-05-16 14:48:47 930

原创 TengineInferPipe在Jetson平台基于TensorRT后端Demo实现

​​​​​1.TengineInferPipe简介TengineInferPipe 是由 OPEN AI LAB 基于mediapipe框架进行改进、迭代的一套低代码、模块化的算法落地框架。通过解析部署配置文件,构建整个部署流程。可以用于快速构建算法部署sdk,以及可以作为一些可视化部署方案的中间层。其基本数据流程图如下图所示。2. 基于TensorRT后端Demo实现2.1 环境需求1)bazel >= 3.7 参考 bazel安装说明 安装bazel到系统中,或者下载对..

2022-05-16 14:20:42 257

原创 Jetson平台编译Tengine

​​​​​​1. Tengine简介Tengine于2017年在GitHub( https://github.com/OAID/Tengine )开源,是OPEN AI LAB(开放智能)推出的自主知识产权的边缘AI计算框架,致力于解决AIoT产业链碎片化问题,加速AI产业化落地。Tengine兼容多种操作系统和深度学习算法框架,简化和加速面向场景的AI算法在嵌入式边缘设备上快速迁移,以及实际应用部署落地,可以十倍提升基础开发的效率。Tengine一方面可以通过异构计算技术同时调用CPU、GPU、DSP

2022-05-16 13:25:44 519

原创 ByteTrack Demo搭建

ByteTack的Demo基于docker搭建。步骤如下:1. 下载ByteTrack源码git clone https://github.com/ifzhang/ByteTrack.git2.docker镜像准备cd ByteTrack && \docker build -t bytetrack:latest 3. 模型准备这里使用已经训练好的模型bytetrack_s_mot17.pth.tar,下载地址为bytetrack_s_mot17[goo..

2022-05-15 13:17:26 1135

原创 Triton服务器部署Yolov5s模型应用

目录1. Triton介绍2.Yolov5s模型部署2.1Triton服务端部署2.2Triton客户端部署1. Triton介绍NVIDIA Triton推理服务器是NVIDIA推出的开源推理框架,主要为用户提供在云和边缘推理上部署的解决方案。NVIDIA Triton 推理服务器 具有以下的特性:支持多种开源框架的部署,包括TensorFlow/PyTorch/ONNX Runtime/TensorRT 等,同时也支持用户提供自定义的服务后端(back...

2022-05-15 13:09:28 1249 2

原创 Jetson查看SM单元信息命令,包括threads per block, shared memory per block等

1. 在Jetson平台,使用以下命令搜索deviceQuery命令find / -name "deviceQuery"2. 使用bin/目录下的deviceQuery命令运行。/usr/local/cuda-10.2/samples/bin/aarch64/linux/release/deviceQuery

2022-05-14 21:21:13 232

原创 CUDA性能优化技巧

1.使用shared memory如果在kernel函数中,需要对global memory同一个数据多次访问,最好使用shared memory,先将数据从globalmemory拷贝到shared memory中,然后使用shared memory中数据进行读取。如果仅读取一次,则使用shared memory效果不大。2.使用限定符__restrict__提高性能对于read-only的指针,可以使用const * __restrict__进行限定,提高性能,如下面的ker..

2022-05-14 21:08:29 1118

原创 caffe升级到cuda10.2 + cudnn 8方法

将caffe的环境升级到cuda10.2 + cudnn8时,需进行下列修改,否则无法完成编译。1)include/caffe/util/device_alternate.hpp 将头文件#include <driver_types.h>放置在前面,如下:#include <driver_types.h> // cuda driver types#include <cublas_v2.h>#include <cuda.h>#...

2022-05-14 21:06:48 465

原创 调用CUDA kernel函数后,报错“invalid configuration argument”

调用CUDA kernel函数后,报错“invalid configuration argument”排查方法:1)使用cudaGetLastError()确定是哪个kernel函数导致的。2)检查kernel<<<GridDim,BlockDim>>>();其中,grid dim在前,block dim在后。注意:调用CUDA kernel函数,如果有指针,必须所有的指针都能够被GPU访问。...

2022-05-14 21:00:46 4013

原创 TensorRT使用自定义Plugin注意

1. plugin中的enque的inputs、outpus解释 int RefineDetectorLayerPlugin::enqueue(int batchSize, const void* const* inputs, void** outputs, void* workspace, cudaStream_t stream);inputs和outputs是一个数组,数组的内存储的是每一个输入或输出层的NCHW信息。如果refinedet层,inputs有8个输入,则inputs是一..

2022-05-14 20:53:31 197

原创 docker环境安装deepstream

1. 拉取镜像:dockerpullnvcr.io/nvidia/deepstream:5.1-21.02-samples2. deepstream实时预览xhost +如果需要显示,xhost +必须在创建docker实例之前执行一次,之后每次start docker之前都需要执行xhost +3. 启动a)指定gpudocker run --gpus '"'device=0'"' -it -p 2022:22 -v $PWD:/opt/nvidia/shar...

2022-05-14 20:45:00 771

原创 Jetson设置固定IP和DNS方法

打开/etc/network/interfaces文件:# interfaces(5) file used by ifup(8) and ifdown(8)# Include files from /etc/network/interfaces.d:source-directory /etc/network/interfaces.dsource interfaces.d/eth0然后在/etc/network/interfaces.d目录下创建eth0文件,eth0文件内容如下

2022-05-14 12:30:01 1434

原创 nvjmi解码流程

nvjmi解码流程时序图如下图所示。解码主要包括两部分,一是发送待解码的数据块到output plane,二是从capture plane接收解码后的图像数据。在开始解码之前,首先需要对output plane和capture plane分别进行配置。output plane配置先与capture plane配置。1)output plane:将缓存空间加入到buf队列中,用于编码块的数据缓存。2)capture plane:将缓存空间加入到buf队列中,用于解码后的数据缓存。.

2022-05-14 12:13:36 671

原创 TensorRT - 推动AI落地的利器:性能加速与部署应用

1. TensorRT是什么?在介绍TensorRT之前,先介绍一下GPU、CUDA和cuDNN。GPU具有强大的并行计算能力,尤其对于简单的大量的计算,如矩阵计算等,这与其固有的体系结构设计有关。1.1 GPU体系结构GPU采用了一种被称为SIMT的体系结构,也就是相对于CPU中的SIMD的概念。SIMT就是Single Instruction Multiple Threads,也就是一条指令多个线程同时执行,但是与SIMD有所不同的是SIMT同时执行的每个线程是可以有不同分支的。GPU这

2022-05-13 11:43:58 356

原创 nvjmi: Jetson视频解码性能优化

目录1 nvjmi介绍2 nvjmi基于Jetson硬件性能优化2.1硬件解码2.2 Transform2.3 颜色空间转换1 nvjmi介绍nvjmi是一基于Jetson Multimedia API的解码库,功能说明参见基于Jetson Multimedia API的解码库_space01的博客-CSDN博客。2 nvjmi基于Jetson硬件性能优化Jetson平台提供了一套Multimedia API用于硬件编解码以及图像缩放、裁剪、旋转等图像...

2022-05-13 09:36:35 869

原创 抓包工具SmartSniff使用

1. 简介SmartSniff 是一款TCP/IP 数据包捕获软件,允许你检查经过你的网络适配器的网络传输。该软件的双层界面显示了捕获的数据包和在ASCII或者十六进制格式下的详细的信息。额外的功能包括本地和远程传输的彩色代码,导出到 HTML 以及更多功能。 SmartSniff 可以用于 Windows 2000/XP Raw Sockets 或者用于其它的 Windows 版本的 WinPcap。这是一款基本的,但是非常小且独立的协议分析软件。下载地址:SmartSniff - Download

2022-05-12 12:15:22 3678

原创 流量监控软件networx使用

1. 简介Networx是一个用于流量监控与统计的工具,可以生成流量统计报表以及查看指定应用程序的流量情况。安装界面是英文的,安装后可以选择中文。下载地址:https://www.softperfect.com/download/https://www.softperfect.com/download/2 设置在任务栏中选择networx图标右键点击“设置”进入设置界面。另外,可以把“点击托盘图标显示”改为“当前传送速度”,“托盘图标悬停显示”也改为“当前传送速度”。这样只要点击托盘图.

2022-05-12 11:59:31 1920

原创 VS启动GoogleTestRunner.vsix失败,错误:未能加载FSharp.Core 4.3.00

解决方案:1)打开F#的包目录为:C:\Program Files\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.3.0.0将FSharp.Core.dll拷贝到系列2)的目录中。2)GoogleTestRunner安装路径为:C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\14.0\Extensions中的一个子文件夹中。=============

2022-05-12 11:49:25 226

原创 Enigma虚拟文件打包使用说明

1. 简介Enigma Virtual Box是软件虚拟化工具,它可以将多个文件封装到应用程序主文件,从而制作成为单执行文件的绿色软件。它支持所有类型的文件格式,虚拟化后的软件不释放任何临时文件到您的硬盘,文件模拟过程仅在内存运行。虚拟文件打包系统(Windows环境)。Enigma虚拟文件打包系统可以将您的程序和配套文件打包成一个可执行文件,而没有任何效率的损失,配套文件也不会被释放至硬盘。本项功能有独立的免费应用程序,同时支持X86和X64二进制文件。支持Windows版本广泛,包括Window

2022-05-12 11:36:25 2579 4

原创 CUDA常用功能接口API

将cuda的一些常用操作封装成接口API,供应用程序调用,一般主要用于模型部署应用的预处理。支持的功能:1. 内存管理 - cuAllocMapped 在Jetson系列的集成盒子上,CPU和GPU共用同一个内存地址,加速数据传输。 在PC端的显卡,CPU和GPU的内存地址可能不一致,需要分开使用CPU和GPU的指针。2. 硬件支持的缩放与颜色空间转换操作 - cuResizeRGBLike 实现将ARGB/RGBA转换成BGR,并且同时实现缩放操作。3. 颜色空间转换与数据类型转换操作 -

2022-05-12 11:13:44 1485

原创 基于Jetson Multimedia API的解码库

封装了Jetson Multimedia API的解码库nvjmi,主要功能如下。1)支持H.264解码。2)支持解码后直接硬件完成缩放操作。3)支持解码后直接硬件完成颜色空间转换操作。4)支持Jetpack 4.3、4.4、4.5。使用示例可参考下面的例子:if(jmi_ctx_ == nullptr) {jmi::nvJmiCtxParam jmi_ctx_param{}; if(rsz_w > 0 && rsz_h > 0){

2022-05-12 11:08:46 1144

原创 Boost.TTI 检测是否包含指定的成员函数

通常有的时候,我们在使用C++编码需要判断一个类是否具有某个方法(成员函数),此时就可以使用Boost.TTI模块来实现。普通函数和静态函数都可以用来检测。1)检测普通成员函数首先声明要检测的成员函数名称,如这里检测类算法具有toString这个成员函数。然后,调用boost的方法has_member_function_xx来判定是否具有此方法,其中xx表示要检测的方法的名称,T表示要检测的类。#include <boost/tti/has_member_function.hpp

2022-05-12 10:27:11 322

原创 otlv4通过ODBC访问SQL的两种不同方式

对于SELECT语句,主要分为otl_explicit_select和otl_implicit_select两种。1)otl_explicit_select - 显式方式,直接使用direct_exec执行,是一种简单的SELECT,调用的ODBC函数顺序为:SQLPrepare(), SQLDescribeCol(),..., SQLBindParameter(),..., SQLExecute(), SQLFetch()此为默认的方式,调用时,使用下列函数: otl_connect db(...

2022-05-12 10:15:39 366

原创 使用IDE编码时,读写二进制和文本的编码区别

当使用二进制模式读取文本文件时,读取的就是原始的二进制数据,没有任何编码,也不是ASCII码,最终在IDE中使用的是当前IDE编码方式,如果是GBK就是GBK,如果是utf8就是utf8。当使用文本模式读取文本文件时,读取的则是经过操作系统底层编码后的文本数据,如果使用的是GBK,则就是GBK;如果是utf8,则就是utf8,IDE不会再编码。...

2022-05-12 10:01:19 311

原创 GCC编译Debug版本正常,Release版本异常

解决方法:使用检查工具(如cppcheck)或者编译时查看warning信息,将所有的warning修复。主要检查每个函数的返回值是否遗漏,若遗漏,则两个版本的结果会不同,Release版本一般行为比较怪异。...

2022-05-12 09:48:41 382

原创 c++11 多线程使用注意

c++11 多线程的使用注意事项,主要围绕锁、线程阻塞和变量的使用。

2022-05-11 20:46:34 379

机械动力学模态分析实验Matlab计算脚本

机械动力学模态分析Matlab计算脚本,包括计算各阶主振型及求频响函数的实频、虚频、幅频、相频及Nyqiust图。

2023-08-04

Iconxp3.1 图标制作软件

Iconxp是一款图标制作工具,除了能制作编辑各种常见的标准图标外,更全面兼容WindowsXP,制作32色带8位alpha channel的WindowsXP图标.

2012-04-06

VC界面编程源码实例

有一些vc界面实例,可以帮助来设计界面。

2010-03-20

空空如也

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

TA关注的人

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