微风❤水墨
https://github.com/Li-Lai
展开
-
20221215:modelscope-魔搭环境搭建
2:担心环境和软件版本问题,就直接整容器就好了,开始。ModelScope 魔搭社区。(1)创建python虚拟环境。(3)找个人体的demo试试。(2)安装docker。原创 2022-12-16 11:05:03 · 2425 阅读 · 1 评论 -
TensorRT:Fusion of FullyConnected layer
TensorRT官方文档指出,全连接层的优化是将其转换成卷积层。那么该怎么操作呢?参考文档:https://blog.csdn.net/flyfish1986/article/details/104846324经过查阅,找到上面链接中的描述最为清晰易懂,感谢原文作者的分享!看下面情景1:全连接层生成两个输出值一个拥有3个通道的大小2×2的图像被flatten为大小是12的一维向量。对于大小为2的输出,为了输出结果的大小是2,全连接层使用相同的两个向量,每个向量的大小为12,图中以灰色...转载 2021-03-24 09:37:12 · 387 阅读 · 0 评论 -
TensorRT:Invalid axis in softmax layer
尝试了一下 RepVGG-A0 的TensorRT序列化,遇到了下面这个问题:Caffe Parser: Invalid axis in softmax layer - TensorRT expects NCHW input. Negative axis is not supported in TensorRT, please use positive axis indexingerror parsing layer type Softmax看了一下prototxt:softmax前面,只有..原创 2021-01-27 18:15:12 · 289 阅读 · 1 评论 -
TensorRT:engine序列化大小不一致问题
之前序列化没有过多注意engine的大小问题,最近循环对一个模型序列化,发现大小会变化。不过经过验证,并不影响前向的推理结果。经过查阅,找打这个解释链接,可能国内打不开该网页。同样的现象:大小不同,但结果一致。官方的解释:序列化的时候,依赖当前的机器状态【GPU, OS/kernel, CPU, system load, available memory, etc】更加详细的解释:通常,由TensorRT构建器由给定INetworkDefinition生成的CUDA引擎可能取决于各种原创 2021-01-15 09:35:21 · 768 阅读 · 0 评论 -
protobuf深坑-版本冲突-彻底解决
由于安装了anaconda ,caffe,后面又安装了pytorch,mmdetection,tensorboardX,导致环境中protoc和protobuf相当混乱后面在编译caffe的时候,已经编辑不过去了。1:一般protobuf安装有3种方式apt-get install libprotobuf-dev protobuf-compiler[安装在系统]pip i...原创 2020-05-08 15:24:57 · 15986 阅读 · 0 评论 -
TensorRT:bilinear IResizeLayer
pytorch训练过程中遇到:UserWarning: Default upsampling behavior when mode=bilinear is changed to align_corners=False since 0.4.0. Please specify align_corners=True if the old behavior is desired. See the documentation of nn.Upsample for details.提示的意思是:自从pyto原创 2020-12-04 09:53:27 · 3029 阅读 · 1 评论 -
Opencv:高维Mat的创建、存取
如果想直接创建一个高维的Mat,本文以4-D的Mat为例,有两种方式:方式1:cv::dnn::blobFromImages cv::Mat trtInput = cv::dnn::blobFromImages(InputImgs,1.0,cv::Size(m_inputH,m_inputW), cv::Scalar(127.0,127.0,127.0),true,false);输入的InputImgs是std::vector<cv::Mat>类型的变量,输出的trtInp.原创 2020-10-29 09:27:13 · 1381 阅读 · 0 评论 -
TensorRT:win10平台SDK发布在win7上遇到的问题
环境:win10+win7版本:TensorRT-5.1.5.0.Windows10.x86_64.cuda-10.1.cudnn7.5缘由:在win10上编写的IPugin插件,需要封装为SDK,在win7上使用,就遇到了问题。现象:win7 可以正常编译,运行时提示: api-ms-win-core-libraryloader-l1-2-0.dll 丢失定位:自己查了半天,才找到是nvonnxparser的问题,后来想起来,可以直接查DLL的依赖,就知道是那个DLL文件的问题了.原创 2020-10-09 18:58:39 · 1417 阅读 · 6 评论 -
TensorRT:Conv + BN 融合
首先在复习一下BN公式:官方文档4个参数:均值,方差,gamma,beta再在复习一下conv公式:一般是conv以后接的是BN,所以conv输入x,输出y; BN的输入就是y. 把y带入BN的计算公式:所以,会得到conv+bn融合以后的权重w和偏置bias有了上述公式,TensorRT C++ Api 搞起来:Tips: 需要注意的点是Conv参数个数:Cout*Cin* Kernel* KernelBN 参数个数:Cout所以:...原创 2020-09-16 09:36:18 · 1263 阅读 · 3 评论 -
TensorRT:ShuffLayer && BatchNorm1d
正常的网络结构都是 Conv + BN + Relu, 但自己之前项目中搭建的caffe模型是FC + BN的操作,所以转到pytorch就卡了一下pytorch中FC后面如果接上BN,该怎么操作呢?使用nn.BatchNorm1d(),而不是nn.BatchNrom2d(),因为给到BN层的数据维度信息是不一样的如果是Conv + BN,可以看到BN的输入是NCHW如果是FC + BN, 可以看到BN 的输入是 NC所以需要调用的不同的BN接口去pytorch官方文档学原创 2020-09-03 10:27:32 · 440 阅读 · 0 评论 -
TensorRT:数据预处理
Pytorch测试正常,RT测试不一致,分析了一下,主要是数据的问题导致的差异,记录一下自己的踩坑1:Pytorch数据:格式-NCHW,通道顺序-RGB,数值范围-[0-1], 数据类型-float"""Convert a ``PIL Image`` or ``numpy.ndarray`` to tensor. Converts a PIL Image or numpy.ndarray (H x W x C) in the range [0, 255] to a to..原创 2020-09-01 18:38:48 · 1193 阅读 · 4 评论 -
TensorRT:BatchNorm2d
首先学习一下pytorch中的BN层:BN层的参数有weight, bias, running_mean, running_var, num_batches_trackedBN的公式如下图:很显然, running_mean 是均值, running_var 是方差, 那gamma、beta去哪里了?gamma、beta是可学习的参数,weight 和 bias也是可学习参数,实际上:weight就是gamma, bias就是beta.重点来了,RT中怎么添加BN层呢?上面的公.原创 2020-08-24 11:09:17 · 496 阅读 · 1 评论 -
TensorRT:PoolLayer的padding
A:Pool层无paddging操作1:stride=1,不会产生截断不整除问题,所以不用考虑向上或者向下取整问题2:stride>1,可能或产生截断不整除问题可以使用padding层,补全不能整除的部分 IActivationLayer* relu1 = basicConv2d(network, weightMap, *scale1->getOutput(0), 64, 7, 2, 3, "conv1."); IPaddingLayer* pad1 = network->原创 2020-08-24 10:30:04 · 734 阅读 · 0 评论 -
TensorRT:Scale Layer
运行googlenet,遇到的问题:Pytorch和C++版本RT的结果不一致。pytorch结果:C++版本RT结果:按理说应该是一样的,怎么会不一样呢?肯定是自己的问题,所以查一下问题所在。其实问题就出现在这行代码上:如果pretrained=True,torchvision.models不仅会创建网络,load权重,还会做图像的预处理(这个我以前竟然不知道。。)如果pretrained=False,torchvision.models只会创建网络,权重需要自..原创 2020-08-21 10:14:31 · 476 阅读 · 0 评论 -
TensorRT:PoolLayer的ceil mode
(1)TensorRT的早期版本是不支持ceilmode=True操作MaxPool2d(ceil_mode=True), ceilmode=True, which is not supported in Tensorrt4处理方案:提前使用padding layerwe use a padding layer before maxpool to solve this problem.(2)TensorRT的现在版本是支持ceilmode=True操作,扒拉扒拉源码看看现在的IP原创 2020-08-21 09:34:53 · 398 阅读 · 0 评论 -
TensorRT:设备的算力,以及支持的精度
1:核对GPU的计算能力地址:https://developer.nvidia.com/cuda-gpusFor example, GTX1060 is 6.1, RTX 2070is 7.5.2:核对硬件支持的精度地址:https://docs.nvidia.com/deeplearning/tensorrt/support-matrix/index.html#hardware-precision-matrix6.1 supports FP32 and INT8.7.5..原创 2020-08-20 11:17:29 · 1374 阅读 · 0 评论 -
TensorRT:NvinferPlugin.h
版本:5.1.5.0include NvInfer.h NvInferPlugin.h NvCaffeParser.h NvOnnxConfig.h NvOnnxParser.h NvOnnxParserRuntime.h NvUffParser.h NvUtils.h 说明:红色标记的:NvInfer.h, NvInferPlugin.h, NvUtils.h是公用的。其他用来支持:Caffe, Onnx和Uff(tensorflow)功能:Nvidia官方提供的原创 2020-08-18 15:07:14 · 872 阅读 · 0 评论 -
TensorRT:Nvinfer.h-下篇
9:PluginV2类Pluginv2是新版本的插件接口,部分函数接口与V1是一致的class IPluginV2{public: //获取TensorRT的版本,用于向后兼容 //! \brief Return the API version with which this plugin was built. //! //! Do not override this method as it is used by the TensorRT library t.原创 2020-08-17 14:11:04 · 731 阅读 · 0 评论 -
TensorRT:NvInfer.h-上篇
版本:5.1.5.0工欲善其事必先利其器,后面需要使用RT插件,所以还是得学习一下RT的相关代码NvInfer.h中声明和定义了RT中的大部分变量、函数、类等RT中代码格式较为统一,大体看了设定规则枚举变量:k+全大写,kFLOAT,kGPU,kCHANNEL类内变量:k+首字母大写,nbDims类内函数:小写+首字母大写,setNames(), setInput()不能派生或者继承的:用大写的“I”进行了标识0:命名空间:nvidia + infer --- >...原创 2020-08-14 11:57:02 · 3226 阅读 · 0 评论 -
目标检测:图像填鸭中的旋转+记录角点
PIL库旋转的时候,毛丝是不会记录原图旋转后的角点位置,所以需要在针对顶点做同样的旋转,然后记录下来。关于旋转后角点位置:我参考了这个答案https://gis.stackexchange.com/questions/23587/how-do-i-rotate-the-polygon-about-an-anchor-point-using-python-script我是旋转后,随机选择点位粘贴,所以里面会对应坐标系的切换问题。1:Rotate2D的坐标系是自己设定的坐标系,所以第一步是把这.原创 2020-08-13 09:09:12 · 287 阅读 · 4 评论 -
目标检测:图像拼接+填鸭+旋转
代码下载:https://download.csdn.net/download/lilai619/12706353原创 2020-08-12 09:01:50 · 463 阅读 · 0 评论