自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(446)
  • 资源 (1)
  • 收藏
  • 关注

原创 Pytorch分布式训练与断点续训

Pytorch分布式训练与断点续训。

2022-09-26 18:05:38 130

原创 warmup与余弦退火学习率

warmup与余弦退火学习率

2022-09-24 10:41:32 301

原创 Tensorboard(4) 训练分类算法的tensorboard可视化示例

训练分类算法的tensorboard可视化示例

2022-09-23 19:24:50 144

原创 Tensorboard(3) 可视化模型计算图

Tensorboard 可视化模型计算图

2022-09-23 18:00:48 33

原创 Tensorboard(2) 图片、特征图、权重参数可视化

tensorboard图片、特征图、权重参数可视化

2022-09-23 17:43:19 252

原创 Tensorboard(1) 标量与直方图可视化

Tensorboard 标量与直方图可视化

2022-09-22 18:31:28 33

原创 Pytorch 分布式训练

pytorch 分布式训练参数

2022-08-26 11:47:18 51

原创 COCO Image Viewer

COCO Image Viewer。

2022-08-19 15:47:13 240

原创 模型推理模板

模型部署推理模板。

2022-07-29 15:37:37 71

原创 CMake指定OpenCV版本

cmake指定opencv版本

2022-07-20 17:45:05 856

原创 ONNX基本操作

1. Pytorch导出ONNX如下代码,定义了一个包含卷积层、relu激活层的网络,将该网络导出onnx模型,设置了输入、输出的batch、height、width3个维度是动态的import torchimport torch.nn as nnimport torch.onnximport osclass Model(torch.nn.Module): def __init__(self): super().__init__() self.c

2022-05-30 18:19:02 690

原创 TensorRT 系列 (2)动态shape

TensorRT支持输入动态shape的推理,在编译模型时可以指定shape的动态范围为[L, H],推理时允许L <= shape <= H,输入动态shape可通过createOptimizationProfile优化配置文件,来指定输入的shape可以变换的范围,当然也可以通过ONNX导出模型时进行指定,本次只演示前一种。示例代码:// tensorRT include#include <NvInfer.h>#include <NvInferRuntime

2022-05-29 19:13:15 529

原创 TensorRT 系列 (1)模型推理

推理代码:// tensorRT include#include <NvInfer.h>#include <NvInferRuntime.h>// cuda include#include <cuda_runtime.h>// system include#include <stdio.h>#include <math.h>#include <iostream>#include <fstream&.

2022-05-29 18:59:48 904

原创 TensorRT 系列 (0)C++ API 构建编译网络

TensorRT的核心在于对模型算子的优化(合并算子、利用GPU特性选择特定核函数等多种策略),通过tensorRT,能够在Nvidia系列GPU上获得最好的性能,因此tensorRT的模型需要在目标GPU上实际运行的方式选择最优算法和配置,也因此tensorRT生成的模型只能在特定条件下运行(依赖于编译的trt版本、cuda版本、编译时的GPU型号)。TensorRT提供的C++、Python接口用于直接构建网络结构,本次主要介绍C++接口实现网络的构建与模型的编译,当然TensorRT也可以实现由其它框

2022-05-29 11:03:12 270

原创 C++ 11 互斥量与死锁

一、互斥量(mutex)的基本概念互斥量mutex是个类对象,可以理解为一把锁,多个线程尝试用其成员函数lock()来加锁,只有一个线程能锁定成功,如果没有锁成功,那么流程将卡在lock()这里不断尝试去锁定。互斥量使用要小心,保护数据不多也不少,少了达不到效果,多了影响效率。二、互斥量的用法包含#include <mutex>头文件2.1 lock(),unlock()步骤:1.lock(),2.操作共享数据,3.unlock()。lock()和unlock()要成对使用

2022-04-16 18:13:45 771

原创 SD3403开发板非安全模式烧写系统并加载内核模块

SD3403开发板有两片4GB的DDR,总共内存为8GB,计划IPCM分配2MB,DSP分配62MB,MCU分配192MB,OS(linux)分配4096MB,剩余的内存分配给MMZ。1. 编译SDK,生成烧写文件在SS928V100_SDK_V2.0.2.0/osdrv目录下执行:make all在SS928V100_SDK_V2.0.2.0/osdrv/pub/ss928v100_image_glibc目录下生成烧写文件:其中boot_image.bin、uImage_ss928v1

2022-04-15 15:22:52 1613 1

原创 CUDA RUNTIME

cuda runtime是以cuda driver为基准开发的运行时库,driver API更为底层一些,对一般用户不是很友好,例如需要做显式的device初始化,以及context、module的管理。但是使用更为灵活,提供一些runtime API所没有的功能,毕竟runtime API的功能都是包装driver 的功能实现的。而runtime API把driver API包装了一些,将很多原本需要代码编写的步骤(比如说上面的device初始化)自动完成了,因此会更加容易上手。当调用第一个cuda

2022-04-11 14:59:40 1497

原创 CUDA 内存访问

在Host端的内存,逻辑上可分为Pageable Memory(可分页内存)、Page Lock Memory(页锁定内存),Page Lock Memory又称为Pinned Memory,从字面意思上而言Page Lock Memory是锁定的内存,一旦申请后就专供申请者使用,Pageable Memory则没有锁定特性,申请后可能会被交换。总结如下:pinned memory具有锁定特性,是稳定不会被交换的; pageable memory没有锁定特性,对于第三方设备(比如GPU),去访问时

2022-04-11 11:52:49 1028

原创 CUDA Driver API 上下文管理

CUDA中的上下文context是为了方便控制device而提出的,而context通过栈进行管理:context是一种上下文,关联对GPU的所有操作,context与一块显卡关联,一个显卡可以被多个context关联; 每个线程都有一个栈结构储存context,栈顶是当前使用的context,对应有push、pop函数操作context的栈,所有api都以当前context为操作目标;cuCreateContext、cuPushCurrent、cuPopCurrent函数实现context的创

2022-04-04 20:39:09 1329

原创 CUDA Driver API 获取驱动版本、设备信息

主要包括如下功能:1. cuda初始化CUresult CUDAAPI cuInit(unsigned int Flags);这里的flags目前必须给0,对于cuda的所有函数,必须先调用cuInit,否则其他API都会返CUDA_ERROR_NOT_INITIALIZED,可参考链接:https://docs.nvidia.com/cuda/archive/11.2.0/cuda-driver-api/group__CUDA__INITIALIZE.html2. 获取驱动版本C.

2022-04-04 19:49:53 493

原创 git 子模块操作

1. 添加子模块git submodule add -b <branch> <url> <path>git submodule add -b main git@git.xxx.com:demo.git sdk/demo查看修改内容可以看到增加了子模块,并且新文件下为子模块的提交hash摘要git diff --cached2. 提交子模块在添加子模块后,需要执行commit进行提交git commit -m "add submodul.

2022-03-17 14:41:42 686

原创 cmake语法笔记

1. cmake版本设置cmake_minimum_required(VERSION 3.5)2. 工程名称、版本、支持语言设置project(sample VERSION 1.0.0 LANGUAGES C CXX CUDA)3. 单独设置支持语言enable_language(CUDA)4. 为变量赋值set(project_name test_pro) # 设置变量project_name的值为test_pro5. 获取变量的值${project_name} # 4中pro.

2022-03-11 19:07:00 833

转载 C++ thread 实现参考

参考1:#include <thread>#include <iostream>class Wrapper { public: void member1() { std::cout << "i am member1" << std::endl; } void member2(const char *arg1, unsigned arg2) {

2021-12-19 20:41:16 128

原创 解决intel TGL iGPU 与 nvidia GPU不能同时使用的问题

在Intel TGL 安装Nvidia GPU后,Intel GPU驱动失效,OpenVINO采用Intel GPU推理会失败,而 Nvidia GPU推理正常。 出现该问题的原因可能是Bios中display设置的问题,比如在Bios中设置“Primary Display"为"Auto",这样会优先使用Nvidia GPU进行显示,显示器与Nvidia GPU的HDMI接口连接正常显示,但是由于Bios的机制,Intel GPU OCL驱动会失效,导致OpenVINO推理调用OCL驱动失...

2021-10-11 18:07:58 678

原创 Pytorch children()、modules()、named_children()、named_modules()、named_parameters()、parameters()使用说明

children():返回包含直接子模块的迭代器modules():(递归)返回包含所有子模块(直接、间接)的迭代器named_children() :返回包含直接子模块的迭代器,同时产生模块的名称以及模块本身named_modules():返回包含所有子模块(直接、间接)的迭代器,同时产生模块的名称以及模块本身named_parameters():返回模块参数上的迭代器,产生参数的名称和参数本身parameters(): 返回模块参数上的迭代器,不包括名称import torch.nn .

2021-09-26 15:52:17 585

原创 Yolov5 Torchscript + Batch + 多GPU推理

1. 导出torchscript模型在yolov5工程目录下执行如下命令导出torchscript模型python models/export.py --weights weights/yolov5m.pt2. Yolov5推理类class Yolov5Inference: def __init__(self, model_file, device, input_size_h, input_size_w,

2021-09-14 16:08:22 837

原创 OpenVINO部署Yolov5

0.开发环境硬件平台:8 11th Gen Intel(R) Core(TM) i5-1145G7E @ 2.60GHz操作系统:Ubuntu 20.04 (LTS)OpenVINO: 2021.04(LTS)Python: 3.8.5 (conda 虚拟环境)Pytorch:1.9.0+cpuonnx:1.9.0onnx-simplifier: 0.3.6onnxruntime: 1.8.1onnxoptimizer: 0.2.61. yolov5转onnx...

2021-07-21 19:05:51 1057 1

转载 详细解读Spatial Transformer Networks(STN)

https://blog.csdn.net/qq_39422642/article/details/78870629

2021-07-09 15:16:11 139

原创 yolov5 onnx 推理代码

onnx_yolov5_inference.pyimport osimport cv2import timeimport onnxruntime as ortimport numpy as npfrom common import pad_to_squarefrom common import save_tensorfrom common import decodefrom common import non_max_suppressionfrom common import dra

2021-06-29 10:55:30 1760 1

原创 mnist数据集训练简洁实现

import torchimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasets, transforms class CNN(nn.Module): def __init__(self): super(CNN, self).__init__() self.conv1 = nn.Sequential( # 输入大小 (1, 28, 28).

2021-06-03 14:53:44 202

转载 深度学习模型量化(低精度推理)大总结

模型量化作为一种能够有效减少模型大小,加速深度学习推理的优化技术,已经得到了学术界和工业界的广泛研究和应用。模型量化有 8/4/2/1 bit等,本文主要讨论目前相对比较成熟的 8-bit 低精度推理。 通过这篇文章你可以学习到以下内容:1)量化算法介绍及其特点分析,让你知其然并知其所以然; 2)Pytorch 量化实战,让你不再纸上谈兵;3)模型精度及性能的调优经验分享,让你面对问题不再束手无策;4)完整的量化文献干货合集,让你全面系统地了解这门主流技术。1.CPU 推理性能提升 2-4 倍,模型大小

2021-05-30 20:15:11 3265 2

原创 onnx模型修改、添加Node

import onnximport copy# onnx 插入新的Nodedef insert_node(model, insert_node, follow_up_node): # 根据插入Node的输出修改后续node的输入 follow_up_node.input[0] = insert_node.output[0] # 找到后续Node的索引位置,并将插入节点插入到graph中 for follow_up_node_index, _follow_up_nod.

2021-05-12 11:53:43 1778

转载 anchors 的生成过程

https://blog.csdn.net/sinat_33486980/article/details/81099093

2021-04-26 14:34:07 78

原创 Retinaface Pytorch转ONNX

环境:Retinaface Pytorch源码:import timeimport torchimport torch.nn as nnimport torchvision.models._utils as _utilsimport torchvision.models as modelsimport torch.nn.functional as Ffrom torch.autograd import Variabledef conv_bn(inp, oup, stride

2021-04-25 15:44:29 273

原创 Pytorch实现CSPDarknet53

import torchimport torch.nn.functional as F import torch.nn as nnimport mathfrom collections import OrderedDictimport numpy as npimport torch.onnx# Mish激活函数: f(x) = x * tanh(log(1 + e^x))# pytorch中F.softplus(x)等同于torch.log(1 + torch.exp(x))class.

2021-04-18 22:01:58 933 1

原创 Pytorch DataParallel多卡训练模型导出onnx模型

Pytorch模型转换到onnx模型代码如下:import torchimport torch.nn as nnimport torch.onnximport onnximport osfrom QualityNet import QualityNetif __name__ == '__main__': os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] =

2021-03-29 18:29:49 619 1

原创 linux下通过shell命令将某目录下图片路径导入到指定的文件中

上述目录下存在0、1、2三个目录,三个目录下存储图片,通过如下三个命令进行导入:ls -R /home/liuhongyuan/workspace/train_ws/resnet18/data/datasets/train/0/*.jpg > 0.txtls -R /home/liuhongyuan/workspace/train_ws/resnet18/data/datasets/train/1/*.jpg > 1.txtls -R /home/liuhongyuan/w..

2021-01-12 18:47:47 643

原创 Check failed: status == CUDNN_STATUS_SUCCESS (1 vs. 0) CUDNN_STATUS_NOT_INITIALIZED

最近在做onnx模型转换到caffe模型的工作,在onnx=>caffe的时候遇到如下错误:网上搜索这个问题的解答很多,大多都是使用超级用户运行还有就是重新编译caffe(注释掉cudann),我实在docker环境下运行的本身就是root用户,重新编译caffe太繁琐,最后在https://github.com/MTlab/onnx2caffe/issues/25找到解决方法,亲测可行,在模型prototxt卷积参数部分添加engine:CAFFE即可,也就是修改模型的prototxt中的.

2020-12-30 14:22:31 1582 2

转载 skimage-SimilarityTransform的C++实现

similarityTransform的C++实现,这个主要是用在一些需要做校正的场景下,比如face align等。在python里面有很全的包可以直接使用,比如from skimage import transform as transtform = trans.SimilarityTransform()tform.estimate(dst, src)M = trorm.params注:skimage中的具体用法请参考https://blog.csdn.net/c_chuxin/ar

2020-12-11 15:24:57 412

转载 opencv3中的glob函数读取文件夹中数据

glob在opencv3下,并且命名空间为cv::glob()能够直接调用,在官网中只说明了如下调用方式,并没有给出具体的例子。但通过使用可以知道函数目的是将pattern路径下的所用文件名存进result中。void cv::glob(String pattern, std::vector< String > & result, bool recursive = false)下面例子主要功能是打开”/home/rui”路径下所有的图片并显示出来:#include "o

2020-12-10 09:43:59 1488

CSPDarknet53.zip

Pytorch CSPDarknet53网络

2021-04-18

空空如也

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

TA关注的人

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