自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux面试问总结

Linux操作系统1.操作系统特点2.什么是进程3.进程4.进程与线程的区别5. 进程状态转换图6. 进程的创建过程?需要哪些函数?需要哪些数据结构?7. 进程创建子进程,fork详解8. 子进程和父进程怎么通信?9. 进程和作业的区别?10.死锁是什么?必要条件?如何解决?11.鸵鸟策略12.银行家算法13.进程间通信方式有几种,他们之间的区别是什么?14.线程同步的方式?怎么用?△15.页和段的区别?16.孤儿进程和僵尸进程的区别?怎么避免这两类进程?守护进程?17.守护进程是什么?怎么实现?18.线程

2020-10-02 20:21:51 231

原创 Linux进程间通信

Linux进程间通信一、Linux系统调用主要函数二、创建进程1、创建子进程系统调用fork()2、验证fork()创建子进程效果3、系统调用fork()与挂起系统调用wait()三、模拟进程管道通信四、pipe()下生产者与消费者问题一、Linux系统调用主要函数首先,认识一下Linux下系统调用的主要函数,为后面进程与通信等做好铺垫。以下是 Linux 系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的函数。fork 创建一个新进程clone 按指定条件创建子进程execv

2020-08-31 18:51:01 360 1

原创 Socket网络编程面试题

Socket网络编程面试题1、TCP和UDP的区别:2、流量控制和拥塞控制的实现机制:3、重传机制:4、滑动窗口机制:5、多线程如何同步:6、进程和线程的区别:7、进程间通讯的方式有哪些,各有什么优缺点:9、tcp断开连接的具体过程,其中每一步是为什么那么做:10、tcp建立连接和断开连接的各种过程中的状态转换细节:11、epoll与select的区别:12、epoll中et和lt的区别与实现原理:13、ThreadLocal与其它同步机制的比较:14、内存池、进程池、线程池:1、TCP和UDP的区别:

2020-08-28 22:12:28 1032

原创 笔试中遇到的问题

目录1、联合体和结构体大小1、联合体和结构体大小一、字节对齐的原因如果不按照适合平台的要求对数据存放进行对齐,则会在存取效率带来损失。假设某平台每次读取都从偶地址开始。若不对数据的存放进行对齐,则某些数据可能被存放于奇地址开始的地方。这种情况下,平台就需要2个读周期,并对两次读取的结果的高低字节进行拼凑,才可能得到该数据。显然效率下降很多。二、字节对齐的规则1.常见类型的对齐方式(默认)类型 对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量)char 偏移量为 size

2020-08-27 00:43:34 1146

原创 秋招面试问题总结-视觉算法

1.YOLOv3对YOLOv2的改进:1.loss不同:作者v3替换了v3=2的softmax loss变成logistic loss,由于每个点所对应的bounding box少并且差异大,每个bounding与ground truth的matching策略变成了1对1.2.anchor bbox porior不同:v2的作者用了5个先验框,v3用了9个先验框,提高了IOU3.detection的策略不同:v2只有一个detection,v3一下子变成了3个,分别是一个下采样的,feature ma

2020-08-16 15:30:08 683

原创 C++基础面试问题总结

目录1.面向对象的特征?2.一个C++源文件从文本到可执行文件经历的过程?3.new和malloc的区别?4.虚函数是什么以及其作用?5.虚函数表是什么?6.什么函数不能声明为虚函数?构造函数为什么不能为虚函数?7.纯虚函数是什么?8.虚函数与纯虚函数的区别?9.简单描述虚继承与虚基类?10.简单描述多态?11.C++内存分为哪几块?12.简单介绍内存池?13.简单描述内存泄漏?14.内存中的堆与栈有什么区别?15.说几个C++11的新特性?16.简单介绍智能指针?17.shared_ptr 和 uniqu

2020-08-14 11:06:45 411

原创 pytorch-quantization创建自定义量化模块

量化工具提供了几个量化的模块,如下所示:要量化模块,我们需要量化输入和权重(如果存在)。

2023-07-19 14:27:54 476 1

原创 在 Jetson Nano 上安装 ncnn 深度学习框架。

通常,程序员知道变量的类型,并且可以提前分配保存该对象的内存。我们在有和没有 Vulkan 支持的情况下进行了一些基准测试,以了解 ncnn 的表现如何。平均而言,当 ncnn 使用 Vulkan 时,您将获得 57% 的性能提升。或者,就此而言,任何其他使用 RTTI 的软件。使用此标志进行编译时,只有当其余程序仍未使用 RTTI 时,YOLOV5 中的自定义层才可用。特别是在成熟的代码中,需要一个新的功能而不需要重写所有代码。安装新的 CMake 3.18.4 后,下一步是构建实际的 ncnn 框架。

2023-06-26 09:59:36 856

原创 YOLO-NAS讲解

这些 YOLO-NAS 模型是使用 Deci 的 AutoNAC™ NAS 技术构建的,性能优于 YOLOv7 和 YOLOv8 等模型,包括最近推出的 YOLOv6-v3.0。准确的比较将在 YOLO-NAS 系列的下一篇文章中进行,我们将在自定义任务上训练这些模型,并记录与当前巨头相比训练的难易程度和质量。在计算机视觉和深度学习领域不懈的研究和创新的推动下,最先进的对象检测 (SOTA) 模型的前景在不断发展。在本文中,我们探索了最新的 YOLO 模型,即 YOLO-NAS。

2023-05-10 13:55:33 2274 1

原创 TensorRT INT8量化说明文档

在这种模式下,TensorRT 仅针对性能进行优化,您几乎无法控制在哪里使用 INT8 - 即使您在 API 级别明确设置了层的精度,TensorRT 也可能在图优化期间将该层与另一层融合,并丢失它必须在 INT8 中执行的信息。给定激活张量的统计数据,决定最佳尺度值并不是一门精确的科学——它需要平衡量化表示中的两个误差来源:离散化误差(随着每个量化值表示的范围变大而增加)和截断错误(其中值被限制在可表示范围的限制范围内。当可改装的TensorRT引擎被改装时,Q/DQ节点的尺度可以被赋予新的值。

2023-04-25 17:41:25 774

原创 模型量化的原理与实践 —基于YOLOv5实践目标检测的PTQ与QAT量化

大家都知道,数字既包括整数,又包括小数,如果想在计算机中,既能表示整数,也能表示小数,关键就在于这个小数点如何表示?于是计算机科学家们想出一种方法,即约定计算机中小数点的位置,且这个位置固定不变,小数点前、后的数字,分别用二进制表示,然后组合起来就可以把这个数字在计算机中存储起来,这种表示方式叫做定点表示法,用这种方法表示的数字叫做定点数。也就是说「定」是指固定的意思,「点」是指小数点,所以小数点位置固定的数即为定点数。

2023-04-17 23:31:51 666

原创 YOLO综述:从YOLOV1到YOLOV8

YOLO 已成为机器人、无人驾驶汽车和视频监控应用的中央实时目标检测系统。我们对 YOLO 的演变进行了全面分析,检查了从原始 YOLO 到 YOLOv8 的每次迭代中的创新和贡献。我们首先描述标准指标和后处理;然后,我们讨论了每个模型的网络架构和训练技巧的主要变化。最后,我们总结了 YOLO 发展的重要经验教训,并展望了其未来,强调了增强实时目标检测系统的潜在研究方向。

2023-04-08 22:57:42 1553

原创 NVIDIA 量化感知训练pytorch-quantization说明文档

量化工具提供的几个量化模块如下:要量化模块,我们需要量化输入和权重(如果存在)。为只有输入的模块创建量化包装器为具有输入和权重的模块创建量化包装器。直接将 TensorQuantizer 模块添加到模型图中操作的输入。如果需要用量化版本自动替换原始模块(图中的节点),前两种方法非常有用。当需要在非常特定的地方手动将量化添加到模型图中时,第三种方法可能很有用(更多手动,更多控制)。让我们通过下面的示例查看每个用例。

2023-04-01 10:30:15 427

原创 深度学习算法C++部署代码开源库说明文档

上述算法pytorch模型转onnx模型可参考算法源码提供的方式进行转换,其中yolov5_cutoff及yolov7_cutoff同样也是yolov5及yolov7算法的部署,只不过是将grid部分截断并提供了手动实现的C++源码,对于TensorRT部署yolox及yolov8部署的代码中涉及到预处理和后处理cuda加速代码,所有模型的部署代码均以预处理、推理、后处理的框架进行编写,大家可以参考进行使用,希望这个开源项目能够帮助大家能够更好的完成深度学习模型的部署!

2023-03-27 19:24:45 786

原创 通过矩阵乘法性能优化学习CUDA

矩阵乘法性能优化学习CUDA

2022-12-11 23:59:57 362

原创 A ConvNet for the 2020s(论文翻译)

A ConvNet for the 2020sAddressAbstract1. IntroductionAddresshttps://github.com/facebookresearch/ConvNeXthttps://arxiv.org/pdf/2201.03545.pdfAbstractViT伴随着视觉的“20年代”咆哮而来,它迅速取代了 ConvNets,成为最先进的图像分类模型。另一方面,常规的 ViT 在应用于目标检测和语义分割等一般计算机视觉任务时面临困难。正是分层 Transfo

2022-01-22 20:57:30 3013

原创 图解Git

图解Git基本用法约定命令详解DiffCommitCheckoutHEAD标识处于分离状态时的提交操作ResetMergeCherry PickRebase技术说明此页图解git中的最常用命令。如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻。 如果你想知道这个站点怎样产生,请前往GitHub repository。基本用法上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。git add files 把当前文件放入暂存区域。git commit 给暂存区域生成快照

2021-09-05 00:01:38 279

转载 基于深度学习的图像增强综述

这篇博客主要介绍之前看过的一些图像增强的论文,针对普通的图像,比如手机拍摄的那种,比低光照图像增强任务更简单。介绍图像增强的定义非常广泛,一般来说,图像增强是有目的地强调图像的整体或局部特性,例如改善图像的颜色、亮度和对比度等,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,提高图像的视觉效果。传统的图像增强已经被研究了很长时间,现有的方法可大致分为三类,空域方法是直接对像素值进行处理,如直方图均衡,伽马变换;频域方法是在某种变换域内操作,如小波变

2021-08-22 23:03:25 708

转载 【CUDA 基础】1.1 异构计算与CUDA

异构计算与CUDA异构计算与CUDA异构计算异构架构范例CUDA:一种异构计算平台“Hello World!”CUDA C难么?总结Abstract: 介绍异构计算和CUDA概述,完成GPU输出Hello world!Keywords: 异构计算,CUDA异构计算与CUDA异构计算异构计算,首先必须了解什么是异构,不同的计算机架构就是异构,上文书我们讲过计算机架构了,就是为了引出异构的概念,按照指令集划分或者按照内存结构划分,但是我觉得只要两片CPU型号不一样就应该叫异构(这个想法先保留,对错不确

2021-08-15 00:07:54 831

原创 ubuntu16.04配置CUDA编程环境

环境:RTX3060+ubuntu 16.04+NVIDIA-Driver 455.45.01+cmake 3.5.1+CUDA 11.1+KDevelop 4.7.3环境配置:NVIDIA驱动、cmake、CUDA配置方法见:ubuntu 16.04 配置运行KintinuousKDevelop配置:命令行输入:sudo apt-get install kdevelop数组相加-程序代码打开KDevelop,新建工程,“New From Template…”-“Standard”-

2021-08-14 15:17:33 341

转载 【CUDA 基础】1.0 并行计算与计算机架构

并行计算与计算机架构并行计算与计算机架构Big Picture并行计算并行性计算机架构Flynn’s Taxonomy根据内存划分总结Abstract: 本文从总体上给出了CUDA编程的Big picture,后续所有的文章都在本文的基础上详细展开。Keywords: 并行计算,串行编程,并行编程,计算机架构,并行性,异构架构,CUDA并行计算与计算机架构Big Picture学习CUDA主要参考《CUDA C编程权威指南》。结构:CUDA想要运行起来并不困难,但是想要写得好,真的需要研究

2021-08-13 23:30:06 282

原创 ONNX教程

一. 简介ONNX (Open Neural Network Exchange)- 开放神经网络交换格式,作为框架共用的一种模型交换格式,使用 protobuf 二进制格式来序列化模型,可以提供更好的传输性能我们可能会在某一任务中将 Pytorch 或者 TensorFlow 模型转化为 ONNX 模型(ONNX 模型一般用于中间部署阶段),然后再拿转化后的 ONNX模型进而转化为我们使用不同框架部署需要的类型,ONNX 相当于一个翻译的作用。典型的几个线路:Pytorch->ONNX->

2021-08-08 00:14:59 1442

原创 深度学习中的backbone、head、neck释义

backbone翻译为主干网络的意思,既然说是主干网络,就代表其是网络的一部分,那么是哪部分呢?这个主干网络大多时候指的是提取特征的网络,其作用就是提取图片中的信息,共后面的网络使用。这些网络经常使用的是resnet、VGG等,而不是我们自己设计的网络,因为这些网络已经证明了在分类等问题上的特征提取能力是很强的。在用这些网络作为backbone的时候,都是直接加载官方已经训练好的模型参数,后面接着我们自己的网络。让网络的这两个部分同时进行训练,因为加载的backbone模型已经具有提取特征的能力了,在我们

2021-08-07 16:40:32 1466

原创 TensorRT用自带trtexec实现onnx转engine的用法说明

TensorRT自带的trtexec在bin目录下,是一个可执行文件。运行./trtexec -h其中给出了 model options、build options、 inference options和system options等。上次我们使用TensorRT的pyhton API进行序列化模型和前向推理,这次介绍使用trtexec转模型。1.从固定尺寸的onnx转cudaEngine./trtexec --explicitBatch --onnx=./resnet50.onnx --sa

2021-08-01 22:59:37 4274

转载 GeForce RTX 3060 Laptop GPU with CUDA capability sm_86 is not compatible with the current PyTorch in

1、问题运行pytorch程序时报错:GeForce RTX 3060 Laptop GPU with CUDA capability sm_86 is not compatible with the current PyTorch installation.The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_61 sm_70 sm_75 compute_37.If you want to use t

2021-08-01 12:35:12 3557 3

转载 cmake教程

cmake1什么是 CMake2入门案例一:单个源文件2.2、编写 CMakeLists.txt2.3、编译项目3.入门案例二:多个源文件4.入门案例三:多个目录,多个源文件5.入门案例四:自定义编译选项6.入门案例五:安装和测试7.入门案例六:添加环境检查8.入门案例七:添加版本号9.入门案例八:生成安装包静态库10.入门案例九:生成安装包动态库11参考1什么是 CMake你或许听过好几种Make工具,例如GNU Make ,QT的qmake ,微软的MS nmake,BSD Make(pmake),

2021-07-23 23:11:58 457

原创 CUDA环境变量的坑(冒号)

一般的安装CUDA时,大家都会在~/.bashrc中添加如下内容export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64export PATH=$PATH:/usr/local/cuda/binexport CUDA_HOME=$CUDA_HOME:/usr/local/cuda上述这个代码存在一个BUG,即在LD_LIBRARY_PATH不存在时,LD_LIBRARY_PATH会被赋值为":/usr/local/cuda/lib6

2021-07-22 16:06:04 6059 2

原创 2021-07-20

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-07-20 11:32:28 118

原创 torch.onnx.export()函数详解

torch.onnx.export(model, args, f, export_params=True, verbose=False, training=False, input_names=None, output_names=None, aten=False, export_raw_ir=False, operator_export_type=None, opset_version=None, _retain_param_name=True, do_constant_folding=False, ex

2021-07-10 23:29:51 6670

转载 【从零开始学深度学习编译器】六,TVM的编译流程详解

TVM的编译流程详解一. 前言二. TVM编译流程详解三,总结四,参考一. 前言上一篇文章对TVM Relay和Pass进行了介绍,但还没有介绍整体的编译流程。这一篇文章将继续介绍一下TVM的编译流程,即TVM是如何将深度学习框架的模型转换成Relay IR之后进一步编译和优化为硬件可以执行的IR,再将这个底层IR和运行时库以及模型参数打包为一个tvm.Module返回。关于为什么要将底层IR和运行时库以及模型参数打包,根据官方文档可以知道这样是为了可以更方便的保存底层IR和运行时库,做到一次编译,可持

2021-07-05 22:49:26 1163

转载 【从零开始学深度学习编译器】五,TVM Relay以及Pass简介

TVM Relay以及Pass简介0x0. 介绍0x2. Relay介绍0x2.1 使用Relay建立一个计算图0x0. 介绍在前面几节的介绍中我们了解到了TVM是如何将ONNX前端模型转换为IR Module的,并且还剖析了TVM中的Relay算子和TOPI算子的扭转过程,知道了Relay算子的最终计算也是基于TOPI算子集合完成的。然后我们在基于ONNX模型结构了解TVM的前端那篇文章贴出的示例程序中还有一个很重要的细节即TVM的编译流程没有详细介绍,即下面这几行代码:##############

2021-05-31 19:09:11 1159 1

转载 TensorRT优化原理和TensorRT Plguin总结

TensorRT优化原理和TensorRT Plguin总结1. TensorRT优化原理2. TensorRT开发基本流程3. TensorRT Network Definition API4. TensorRT Plugin4.1 实现plugin4.2 编译plugin.so动态库4.3 在TensorRT中加载plugin5. plugin实例1. TensorRT优化原理TensorRT加速DL Inference的能力来源于optimizer和runtime。其优化原理包括四个方面:L

2021-05-23 23:12:20 1258

原创 C++中的 =default 和 =delete

编译器默认为一个类生成的默认函数默认构造函数默认析构函数默认拷贝构造函数默认赋值函数移动构造函数移动拷贝函数class DataOnly {public: DataOnly () // default constructor ~DataOnly () // destructor DataOnly (const DataOnly & rhs)     // copy con

2021-05-23 11:09:55 620

转载 实现TensorRT自定义插件(plugin)自由!

@TOC本文主要讲解:TensorRT自定义插件的使用方式如何添加自己的自定义算子前言随着tensorRT的不断发展(v5->v6->v7),TensorRT的插件的使用方式也在不断更新。插件接口也在不断地变化,由v5版本的IPluginV2Ext,到v6版本的IPluginV2IOExt和IPluginV2DynamicExt。未来不知道会不会出来新的API,不过这也不是咱要考虑的问题,因为TensorRT的后兼容性做的很好,根本不用担心你写的旧版本插件在新版本上无法运行。目前的p

2021-05-22 23:46:20 3350 1

转载 【从零开始学深度学习编译器】四,解析TVM算子

解析TVM算子0x0. 回顾0x1. Relay 卷积算子的扭转过程【GiantPandaCV导语】这篇文章主要是基于Relay 卷积算子和TOPI Resize算子来梳理了一下TVM的算子扭转和实现的具体过程,在这个过程中也了解到了对于不同的后端,TVM提供了各种scheduler来帮助模型加速。0x0. 回顾上篇文章详细的梳理了TVM的ONNX前端,我们知道了TVM是如何加载ONNX模型并将ONNX的算子转换为Relay表达式的。这篇文章我们将以卷积算子为例,来看一下Relay 表达式是如何转换为

2021-05-07 22:32:10 586

原创 TVM使用张量表达式与运算符一起使用

在本教程中,我们将注意力转向TVM如何与Tensor Expressions(TE)一起使用,以创建一个空间来搜索性能配置。TE用纯函数语言描述张量计算(也就是说,每个表达式都没有副作用)。从整个TVM的角度来看,Relay将计算描述为一组运算符,并且这些运算符中的每一个都可以表示为一个TE表达式,其中每个TE表达式都采用输入张量并产生输出张量。重要的是要注意,张量不一定是完全物化的数组,而是表示计算的形式。如果要从TE生成计算,则需要使用TVM的调度功能。这是TVM中Tensor表达语言的入门教程。TV

2021-05-02 10:48:30 304

原创 TVM和模型优化概述

TVM和模型优化概述从Tensorflow,Pytorch或Onnx之类的框架中导入模型。TVM可以在导入器层中从其他框架(例如ONNX,Tensorflow或PyTorch)提取模型。随着我们不断改进开源项目,TVM为每个前端提供的支持水平各不相同。如果将模型导入TVM时遇到问题,则可能需要尝试将其转换为ONNX。转换为TVM的高级模型语言Relay。在Relay中表示已导入TVM的模型。中继是神经网络的一种功能语言和中间表示(IR)。它支持:传统的数据流样式表示函数式作用域,让绑定,使其成为功

2021-04-28 23:10:31 633

原创 TVM扫描和循环内核

这里写自定义目录标题这是有关如何在TVM中进行循环计算的入门资料。递归计算是神经网络中的一种典型模式。from __future__ import absolute_import,print_functionimport tvmimport tvm.testingfrom tvm import teimport numpy as npTVM支持使用扫描运算符来描述符号循环。以下扫描运算将计算X列上的总和。扫描在张量的最大维度上进行。 s_state是一个占位符,描述了扫描的过渡状态。 s

2021-04-28 19:49:55 182

原创 TVM内在函数和数学函数

内在函数和数学函数直接声明外部数学调用统一内联函数调用内部Lowering规则添加自己的Intrinsic总结TVM支持基本的算术运算。在许多情况下,通常我们将需要更复杂的内置函数。例如exp取函数的指数。这些功能取决于目标系统,并且可能具有不同目标平台的不同名称。在本教程中,我们将学习如何调用这些目标特定的函数,以及如何通过tvm的固有API统一接口。from __future__ import absolute_import,print_functionimport numpy as npim

2021-04-28 10:42:21 197

转载 在Jetson nano中使用yolov4进行目标检测

在Jetson nano中使用yolov4进行目标检测下载地址相关配置编辑Makefile修改Makefile编译下载权重文件测试Yolov4-tiny图片检测Yolov4-tiny视频检测Yolov4-tiny CSI摄像头实时检测下载地址git clone https://github.com/AlexeyAB/darknet.git相关配置编辑Makefilecd darknetsudo vim Makefile 修改MakefileGPU=1CUDNN=1OPENC

2021-04-27 20:21:10 944 3

MATLAB/Simulink中的的S函数的应用

该文档详细介绍了MATLAB的simulink中的S函数的应用,讲解的很详细,可以下载学习。

2019-05-25

STM32F103-CAN通讯程序+代码.docx

该文档详细介绍了STM32的CAN通讯部分的理论内容,并详细讲解了STM32的CAN通讯过程中的接收部分的滤波的内容,这是传统教程中所没有的,里面附带了CAN通讯的代码,下载过后可以直接使用,可以在显示屏上显示发送和接收数据,并显示发送数据计数。

2019-05-25

空空如也

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

TA关注的人

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