
深度学习
喝粥也会胖的唐僧
这个作者很懒,什么都没留下…
展开
-
pytorch的pixel_shuffle转tflite文件
因为,有人发现在单通道的时候是depth_to_space和pixel_shuffle结果是一样的,所以拆分出来计算好在合并就行,这样速度基本上没有增加多少,亲测速度也是很快的,比从头开始实现pixel_shuffle是快非常多的。如果使用这样的从头开始实现,转出来的tflite是没法运行在手机上面的,因为tf.transpose的维度太多了,tflite在手机上不支持6个维度的transpose的,因为超过5个维度就会产生flex层,flex层是不被支持的。新建pytorch模型。原创 2023-09-28 17:34:03 · 1649 阅读 · 1 评论 -
对torchvision在c盘的缓存进行移动
然后需要做的就是配置一下我们刚才的D盘的路径,不然代码是默认识别的路径是c盘的,我们需要在安装torch的路径下面找到hub.py(D:\xxx\Lib\site-packages\torch)文件,打开进行修改None为你D盘的路径就行了。然后进入到torch\hub\checkpoints,把里面的模型拷贝至如下的路径:D:\cache\torch\hub\checkpoints。然后以后使用torchvision的下载的文件也会在这里了,这样的修改时非常方便的,非常有效。原创 2023-03-29 13:15:19 · 881 阅读 · 1 评论 -
pix2pixHD local训练
pix2pixHD是18年的一个精度比较好的生成网络,生成器方面主要是有两个网络组成(g1:global network,g2:local network) 官网开源的代码默认训练是训练global network,也就是G1,就目前来说,G1本身就能达到一个精度不错的效果,不过既然pix2pixHD的精髓是g1+g2那么,就需要联合训练一下,按照论文里的说法,需要先训练一个低分辨率的g1,然后将g1加入到g2中,然后只微调g2,最好是联合训练,将g1+g2都一起训练,能达到一个精度更好的效果,由于开源出来原创 2022-09-22 19:44:59 · 1960 阅读 · 2 评论 -
opencv使用openvino模型
还记得在这篇文章,我们提到了cv::dnn::readNetFromModelOptimizer可以读取深度学习模型,但是当时并未使用,这个函数可以直接读取openvino格式的模型,我们可以先去下载一个人脸检测的模型。现在我们直接使用,和之前使用没啥区别,只是模型文件变成了xml和bin文件,使用代码如下:#include<iostream>#include<opencv2/core.hpp>#include<opencv2/highgui.hpp>#原创 2022-02-22 10:52:28 · 3202 阅读 · 1 评论 -
openvino直接使用TensorFlow的模型
opencv里面dnn模块可以读取TensorFlow等深度学习模型,我在这篇文章里面实践过。opencv的dnn模块还可以直接结合openvino使用深度学习模型进行推理,虽然openvino可以使用自己的方式加载模型,但是直接使用opencv:dnn相对来说简单直接。重点是我们可以先不将TF的模型转成openvino的模型,这样也能直接运行,不过亲测好像TF2以上的办法没法运行。这里我们还是使用的MobileNetSSD代码如下:#include<iostream>原创 2022-02-22 10:10:06 · 2743 阅读 · 0 评论 -
opencv使用MobileNetSSD进行目标检测
这里我们使用MobileNetSSD进行目标检测,模型文件是下载的这个:https://github.com/PINTO0309/MobileNet-SSD-RealSense/tree/master/caffemodel/MobileNetSSD具体使用的代码如下:void main() { cv::Mat i1=cv::imread("51.jpg");cv::dnn::Net net; net = cv::dnn::readNet("MobileNetSSD_deploy.原创 2022-02-14 16:36:59 · 2897 阅读 · 0 评论 -
opencv里面使用caffe模型
opencv可以加载很多主流的深度学习模型,比如caffe、onnx、TFcv::dnn::readNetcv::dnn::readNetFromCaffecv::dnn::readNetFromDarknetcv::dnn::readNetFromONNXcv::dnn::readNetFromTensorflowcv::dnn::readNetFromTorchcv::dnn::readNetFromModelOptimizer下面我们简单使用一下,使用的bvlc_googlene原创 2022-02-14 11:54:19 · 2573 阅读 · 0 评论 -
混合精度工具apex安装
apex可以在深度学习训练的时候使用自动混合精度(amp)apex安装直接使用pip install apm能够安装但是不能使用直接使用源码安装就行git clone https://github.com.cnpmjs.org/NVIDIA/apex.gitcd apexpython setup.py install这样就可以使用apex了...原创 2021-08-09 15:31:15 · 844 阅读 · 0 评论 -
使用半精度,提升pytorch推理性能
原生的torch是float32的,我们可以借鉴模型量化的思想将其变成float16,而且pytorch自身就定义了半精度的tensor假设我训练的一个模型为model,我们在运算的时候直接将模型转成半精度的模型,怎么做的呢?直接使用model.half()就行model.half()model.cuda()假设我们有个float32的tensor的变量img,为了使用半精度的模型,同样需要将其输入转成HalfTensorimg=img.type(torch.HalfTensor)..原创 2021-04-21 19:04:08 · 7374 阅读 · 4 评论 -
pytorch实现矩阵的逆
背景:本来pytorch是实现了逆矩阵的函数的,1.8之前是torch.inverse(),1.8是在torch.linalg.inv()反正就是实现了,按理来说不需要去手动实现这玩意但是,cuda不支持逆矩阵inverse,因此onnx当然也没实现inverse但是我们训练的模型需要移植到onnx甚至cuda就会变得很困难,甚至你想在pytorch里面使用model.half()进行半精度运算的时候,就会报错说,cuda不支持inverse因此,只能换个思路,自己实现这个算子,使用更为常见原创 2021-03-31 17:25:46 · 22089 阅读 · 9 评论 -
list转Tensor不同方式的速度对比
(1)纯list(list->tensor)import numpy as npimport torchimport timels=[ [ [ [1 for s in range(200)] for k in range(3)] for j in range(256)]for i in range(256)]st=time.time()torch.tensor(np.array(ls))print(time.time()-st)运行结果:1.764563560485839原创 2021-03-24 21:13:25 · 3485 阅读 · 0 评论 -
torchscript保存模型和使用模型
torchscript作为pytorch的模型保留方式这里主要介绍3种类型:1.单变量输入x = torch.randn(1, 3, 256, 256, requires_grad=True).cuda()script_module = torch.jit.trace(model,x,strict=False)torch.jit.save(script_module, "model.pt")2.多个变量作为输入x1 = torch.randn(1, 3, 256, 256, re原创 2021-03-24 20:41:50 · 6242 阅读 · 0 评论 -
win10上安装cynetworkx
直接使用pip installcynetworkx 安装会报错Looking in indexes: http://pypi.douban.com/simpleCollecting cynetworkx[all] Downloading http://pypi.doubanio.com/packages/71/2f/7c6f374a15de65b97bca520a15b06c2a1ae4753c5a9f7b3d6a759ab5af81/cynetworkx-2.2rc1.dev20180527.原创 2021-03-22 10:38:56 · 1766 阅读 · 0 评论 -
ffmpeg编译cuda版
ffmpeg默认是使用cpu版的但是机器上有gpu,又不能不充分利用gpu进行加速安装之前需要准备其他环境:(1)cmakeapt install cmake(2)x265_2wget http://ftp.videolan.org/pub/videolan/x265/x265_2.6.tar.gztar -xvf x265_2.6.tar.gzcd x265_v2.6/build/linux/sh ./make-Makefiles.bashmakemake insta原创 2021-03-17 21:00:23 · 3549 阅读 · 2 评论 -
Consider using a constant container instead (e.g. for `list`, use a `tuple` instead. for `dict`, us
使用torch.jit.trace导出模型时出现:RuntimeError: Encountering a dict at the output of the tracer might cause the trace to be incorrect, this is only valid if the container structure does not change based on the module's inputs. Consider using a constant container原创 2021-03-16 14:11:48 · 2680 阅读 · 0 评论 -
pytorch的dataloader没法进行迭代
说来也是很神奇,一般来说不管是自己定义是dataset还是自带的dataset的工具,加载进DataLoader后就变成可迭代的对象但是我确定dataset可以打印出来,加载DataLoader也没问题,但使用dataloader居然失败:from torch.utils.data import DataLoaderdataloader = DataLoader(dataset, batch_size=123, shuffle=True, num_workers=6, drop_last=Tru原创 2021-03-06 11:28:24 · 6631 阅读 · 0 评论 -
enas算法讲解(通俗版)
enas全称是Efficient Neural Architecture Search解决了之前nas常规算法十分耗算力的瓶颈,具体主要是使用了权重共享,具体后面可以观察到。论文链接:https://arxiv.org/abs/1802.03268看论文,对enas算法的理解还是较为晦涩,于是打算写一下通俗的理解,方便认识enas其实说起来也很简单,看一下下面的流程图:注:下图的子网络我是随意画的,不一定能够构成网络。nas需要做的是对子网络进行选择,选出一个效果最好的子网络.原创 2021-02-27 14:55:49 · 4066 阅读 · 2 评论 -
mindspore比pytorch快?是的
华为宣传说mindspore比pytorch快,说是加了自动微风,确实在mindspore中训练不需要自己写优化的过程,不过空说无凭,试验了一下,真的快一些这里拿mnist分类的例子做实验epoch选取了10和50mindspore:# -*- coding: utf-8 -*-import osimport timeimport mindspore.nn as nnfrom mindspore.common.initializer import Normalfrom minds原创 2021-02-25 14:14:35 · 2565 阅读 · 1 评论 -
mindspore模型训练和模型导出为onnx
mindspore是华为深度学习框架,网址为:https://www.mindspore.cn/本代码主要参考快速入门的代码,加了模型导出为onnxmindspore在模型搭建上基本上的语法和pytorch差不多只是分为了网络和模型,模型主要拿来训练和预测,而网络就是单纯的网络,网络可以拿来导出模型文件,但是预测只能使用模型训练代码如下:# -*- coding: utf-8 -*-import osimport mindspore.nn as nnfrom mindspore.原创 2021-02-24 15:38:44 · 2344 阅读 · 3 评论 -
nni的并发能够提高训练速度吗?不能
nni提供了设置并发的方式训练默认是等于1,这里设置成了2接下来对比了一下,并发数1和2的训练时间的差别并发数=1:可以看到是20多分钟就结束了,平均不到3分钟就可以训练一个trial然后当设置并发数=2:速度慢了很多,反而达不到加速的效果说明nni使用cpu,没法使用并发进行加速,起码在本地来说并发数=2我们看一下cpu运行状态不知道是不是计算是cpu资源不够用,亦或者是python对多线程支持很差的缘故反正要是在单机上运行cpu训练,最好不要...原创 2021-02-22 16:10:20 · 543 阅读 · 0 评论 -
利用nni实现nas(神经网络架构搜索)
当前深度学习的模型设计较为费事,有点玄学,不过,现在是可以进行向超参数一样,搜索出最优的模型架构,于是NAS就诞生了。自从有了nni以后,nas变得容易很多了,直接就可以进行搜索。不过,目前仅仅支持随机搜索和pponni这篇文章讲过如何使用nas下面的例子就演示随机搜索,ppo运行时间较长,这里就只展示随机搜索,ppo也亲测可行,和随机搜索一样,按照下面的过程就可以。等安装nni好并且下载nni的GitHub源码以后就能进行使用了,使用过程如下:(1)进入到nni源码的nas例..原创 2021-02-20 21:48:14 · 3528 阅读 · 3 评论 -
自动机器学习框架nni的案例使用
nni是微软开源出来的一个自动机器学习框架可以使机器学习调参更加便利安装非常简单,使用pip就行pip install nni本次使用的是最新的版本,2.0不过此时并不能使用,因为会出现:https://github.com/microsoft/nni/issues/3276解决也很简单,直接将ruamel.yaml改成ruamel_yaml将下面路径下的内容进行编辑修改即可vim /opt/AN/lib/python3.7/site-packages/nni/too原创 2021-02-19 22:20:08 · 1533 阅读 · 0 评论 -
pytorch实现unet
unet是非常经典的图像分割的网络实现起来不是很复杂,代码如下:# -*- coding: utf-8 -*-import torchimport torch.nn as nnclass unet(nn.Module): def __init__(self): super().__init__() #conv1 self.conv1=nn.Sequential( nn.Conv2d(1,64,3), n原创 2021-02-06 11:14:05 · 2252 阅读 · 0 评论 -
利用torch_geometric运行gcn
pytorch出了图计算的工具torch_geometric后,gcn的实现就简单了,直接封装好了首先需要安装torch_geometric$ pip install --no-index torch-scatter -f https://pytorch-geometric.com/whl/torch-1.7.0+${CUDA}.html$ pip install --no-index torch-sparse -f https://pytorch-geometric.com/whl/torch原创 2021-01-28 14:39:43 · 3418 阅读 · 3 评论 -
c++版openvino使用
之前写过一篇文章:python版openvino使用还是使用同一个模型,代码如下:#include<iostream>#include<opencv2/core.hpp>#include<opencv2/highgui.hpp>#include<opencv2/imgproc.hpp>#include<opencv2/opencv.hpp>#include<inference_engine.hpp>#include原创 2021-01-25 17:18:51 · 2464 阅读 · 2 评论 -
openvino在不同batchsize下的性能对比
之前写过一篇关于tensorrt的:tensorrt在不同batchsize下的性能对比模型还是使用的这篇文章的模型,只是将其转换成了openvino模型了,然后使用benchmark进去测试benchmark要想使用需要自己进行编译:https://blog.youkuaiyun.com/zhou_438/article/details/112974101然后就可以进行测试了举个具体的例子,下面的命令是batchsize=32:benchmark_app.exe -m ctdet_coco_d原创 2021-01-25 13:40:39 · 1546 阅读 · 1 评论 -
keras剪枝-量化-推理
tensorflow提供了一个优化工具tensorflow_model_optimization ,专门针对keras进行模型优化主要可以进行剪枝、量化和权重聚类这里主要使用前面两个数据集使用以前的文章:mnn模型从训练-转换-预测具体训练代码如下import tempfileimport osimport tensorflow as tfimport numpy as npfrom tensorflow import kerasfrom tensorflow.keras i原创 2021-01-23 16:58:30 · 2702 阅读 · 5 评论 -
openvino在win10编译
openvino安装很简单,直接下载安装包在默认位置安装即可安装很容易,不过有的工具需要自己编译才能使用找到下面的路径:C:\Program Files (x86)\Intel\openvino_2021.2.185\inference_engine\samples\cpp打开cmd,进入到上面的路径,然后运行静待一会就可以编译成功具体编译好的结果,并不在当前路径,而是在这里现在就可以使用上图的EXE程序了,不过可能会出现缺dll的情况,此时去安装openvi...原创 2021-01-21 22:51:38 · 1120 阅读 · 0 评论 -
onnx、openvino和mnn推理速度对比
onnx、openvino和mnn都是作为cpu推理的框架,推理速度这里进行对比一下模型使用的python版openvino使用这篇 文章onnx文件对比代码如下:from openvino.inference_engine import IECoreimport onnxruntimeimport MNNimport numpy as npimport cv2import timemodel="ctdet_coco_dlav0_512.onnx"mnnmodel="ctdet原创 2021-01-20 11:04:00 · 6612 阅读 · 8 评论 -
python版openvino使用
openvino作为一个优秀的cpu推理引擎这里使用一下python版api使用之前需要编译安装openvinohttps://docs.openvinotoolkit.org/latest/openvino_docs_get_started_get_started_windows.html安装好以后,直接pip installopenvino安装python版的openvino实际上,python版的api也是调用的c++编译好的openvino,这就是为啥使用python版,也需要.原创 2021-01-19 16:53:17 · 10675 阅读 · 8 评论 -
tensorrt在不同batchsize下的性能对比
tensorrt利用GPU进行加速,天然的GPU是适合并行计算,因此加大batchsize是优化tensorrt常见的方式之一tensorrt默认是batchsize=1,接下来做几个实验进行观察模型是直接下载的这个网站的onnx文件拿到onnx文件后,我们需要转换成tensorrt的引擎文件/opt/TensorRT-7.1.3.4/bin/trtexec --onnx=ctdet_coco_dlav0_512.onnx --saveEngine=ctdet_coco_dlav0_512原创 2021-01-19 14:57:46 · 7528 阅读 · 15 评论 -
onnx文件转rrt文件并运行trt文件(python版)
tensorrt作为一个优秀的gpu推理引擎,支持的深度学习框架和算子也十分的丰富这里模型依然使用这个模型文件转换onnx为rrt文件rrt作为tensorrt推理的引擎文件因此使用其他机器学习的框架都需进行转换转换如下:import osimport tensorrt as trtTRT_LOGGER = trt.Logger()model_path='FashionMNIST.onnx'engine_file_path = "FashionMNIST.trt"EXP原创 2021-01-13 14:53:57 · 5184 阅读 · 3 评论 -
ncnn环境编译及其模型使用
ncnn编译过程腾讯在GitHub上虽然写的很清楚,不过我试了两台电脑均不能成功编译环境于是开始摸索注意:我这里是在win10上面进行编译的,因为想在win10上面编写代码,因此需要一个vs2019的环境首先编译protobuf ,我直接使用那个zip下载链接,但是在新建build文件夹的过程不成功,因为会提示我有重复的build文件,因此我新建的tmp,实际上是一样的只是在到时候编译ncnn的时候需要修改路径就行protobuf 编译过程如下:cd protobuf-3.4.0原创 2021-01-11 14:14:22 · 2652 阅读 · 4 评论 -
深度学习模型文件mnn量化实践
转化成mnn模型虽然可以进行推理不过模型文件可能较大或者运行较慢的情况特别是在移动设备等边缘设备上,算力和储存空间受限因此压缩模型是一个急需的工作mnn自带了量化工具,环境安装很简单,这文章编译就可以使用量化了mnn模型文件是使用的是之前的文章训练并转化的mnn文件在使用之前需要新建一个json文件,里面配置好内容preprocessConfig.json{ "format":"GRAY", "mean":[ 127.5 ],原创 2021-01-07 17:17:26 · 3691 阅读 · 5 评论 -
linux下编译mnn
mnn主要分为4个需要编译的库(1)推理部分编译(2)编译训练部分(3)转换部分编译(4)量化模型编译编译需要依赖cmake、gcc、lib和protobuf一般前三个库是安装好了,因此这里就只安装protobufgit clone https://github.com/google/protobuf.gitcd protobufgit submodule update --init --recursive./autogen.sh./configuremakema原创 2021-01-07 16:35:02 · 1331 阅读 · 0 评论 -
pytorch训练的模型在onnx和mnn中的使用(python+cpp调用)
pytorch自身部署较麻烦,一般使用onnx和mnn较为实用训练模型的代码:import torchimport torch.nn as nnimport torchvisionimport torchvision.transforms as transformsimport torch.optim as optimfrom torch.optim import lr_schedulerimport torch.onnxif __name__ == '__main__':原创 2020-12-30 15:30:52 · 3182 阅读 · 4 评论 -
vs2019离线安装OnnxRuntime
onnx作为一个非常优秀的跨平台的深度学习工具,其他框架训练的模型均可在上进行使用部署,作为cpu平台部署的利器,因为不像gpu平台,英伟达提供了tensorrt进行假如部署这里是在win10上面进行安装编译这个平台不过,由于网络问题,根本没法在vs2019的nuget里面检索到onnx于是只能选择离线的安装方式具体也不复杂(1)去下载安装包https://www.nuget.org/检索onnx下载红色框出来的部分,具体下载也很简单,点击就能看到点击就会出现下载链.原创 2020-12-29 11:23:36 · 3763 阅读 · 1 评论 -
win10下编译和使用mnn
mnn在win上进行编译并不如意,因为官方提供的文档根本很难成功进行编译,各种bug报个不停因此打算记录一下较简单的编译方式:(1)去github下载mnn源码git clonehttps://github.com/alibaba/MNN(2)打开vs2019专用的命令行窗口因为我是64位的系统,因此选择的x64 native tools command prompt for vs2019(3)cd到mnn源码的路径里(4)mkdir build(5)cd bui...原创 2020-12-28 17:05:47 · 3912 阅读 · 4 评论 -
c++读取mnn模型
之前写了一篇文章训练了一个模型,并转换成mnn模型 ,并且使用了python进行调用不过并没有使用c++进行调用模型还是使用那篇文章的模型,调用代码如下:#include <iostream>#include<opencv2/core.hpp>#include<opencv2/imgproc.hpp>#include<opencv2/highgui.hpp>#include<MNN/Interpreter.hpp>#incl原创 2020-12-28 16:37:37 · 2152 阅读 · 4 评论 -
mnn模型从训练-转换-预测
之前写过一个文章转换mnn模型但是没有从头开始,而是直接使用的一个模型,本文想直接从头到尾直接做一下训练:import matplotlib.pyplot as pltimport numpy as npimport osimport PILimport tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layersfrom tensorflow.keras.models impor原创 2020-12-22 17:54:45 · 2642 阅读 · 2 评论