MindSpore训练并测试UNet pytorch风格大致类似,nn.Cell对应pytorch中的nn.Module注意MindSpore卷积,如果存在padding,需要设置pad_mode='pad'import osreturn outreturn out。
UNet-PTQ量化部署(二) 对模型采用混合精度量化的目的主要是为了提升速度的同时,避免模型因为INT8量化造成精度下降比较严重的问题。通过对模型的结构进行敏感层分析,将精度下降较多的层保持更高精度。网址进行可视化,对比一下量化前后的模型结构,可以看到在需要量化的部分插入了很多量化和反量化节点。在转engine时,将mix_type设置为True,同时将量化参数设为int8。进行校准的数据集与训练时候的dataloader写法类似。
UNet-PTQ 量化部署(一) Visio Studio尽量安装2019版本,不然会出现报错如果报错AttributeError: module 'distutils' has no attribute '_msvccompiler',可以将setuptools版本降低至72.1.0除此以外如果仍然遇到了错误(默认安装默认pip install onnxruntime-gpu==1.18.1安装的版本不一定对应):解决办法:其他的库自行安装即可,注意一定要安装GPU版本的,否则使用的是CPU。
opencv+WLS进行双目视觉测量进 第一个就是opencvcontribuild的编译,需要使用cmake进行,直接编译source,网上有教程,注意如果最后想编译成一个opencv.lib需要勾选buildonetgarget。
TensorRT部署U_Net 数据后处理主要是将输出的结果(1,4,800,800)的张量通过对每个点的四个特征值的大小进行比较,找出最大值,0代表无缺陷,1带边第一类缺陷,2代表第二类缺陷,3代表第三类缺陷,同时建立他们之间的映射关系,0映射黑色,1映射红色…数据后处理这块主要遇到了两个问题,第一个是从显卡中转运数据时间太长,第二个是libtorch中矩阵张量的计算考虑转移到GPU进行,看能否缩短计算时间,经过测试并不行,涉及到libtorch中无法调用cuda的一些解决办法。普通内存的指针,开辟在堆区,逻辑地址。
U_NET 网络onnx部署 这里边主要踩坑点,第一个是Mat和libtorch中的Tensor并非连续存储,进行数据转换的时候一定要注意,第二个是转换RRRGGGBBB的时候进行了正则化,对每个通道进行单独计算,可以采用opencv的库函数进行,libtorch的部署参考网上教程,注意添加环境变量后记得重启生效,不重启一般报错缺少dll。
Tensorrt加速部署yoloV5 7.0分割算法 主要文件结构如上图,cpp文件最后一个没有什么作用,源码会进行公开不浪费大家的积分下载;engine可以通过python源码进行导出,源码下载可以自行搜索导出当时可以查看之前的tensorrt部署有详细的过程。
Linux下yolov5s+TensorRT C++检测的实现 ( 1 ) 数据前处理时间太长,三个for循环,神奇的地方是将缩放图片放在主函数for循环里面时间就是20ms左右,但是放在for循环外侧,就是4ms左右,比较费解。(3)TensotRT的模型文件不能跨平台使用,而且与cuda版本和cudnn的版本、TensorRT的版本严格对应,在不同的环境下生成的engine文件可能会有问题。(2)在安装cuda驱动的时候总是会报错,换一种run的方式,除此以外,如果已经安装了Nvidia的驱动,安装的时候就不要勾选了。(3)CMakeLists.txt文件。
手写实现vectorC++ typename vector::value_type&前面必须添加typename,当函数声明或定义在类模板之外时,需要使用 typename 关键字来指示 value_type 是一个类型。里面的几个问题,重载=号返回引用。还有模板类没办法分文件编写。
C++部署yolov5s.onnx并使用GPU进行加速 我下载的是1.13.1GPU版本,VS2022,cuda11.6,cudnn8.6.0,仅供参考。除此之外关于cuda也要注意添加一些路径保证cuda能正常启用。其他关于opencv的配置属性可以查阅其他资料。