深度学习
撒旦即可
研究CV的菜狗
展开
-
nn.Pixelshuffle的转化规则
简单来说,例如nn.Pixelshuffle(2),他会将前4个通道,拼在第一个通道的空间中,然后将接下来4个通道拼在输出的第二个通道的空间中,依次类推,见下面的实验就懂了实验代码import torchimport torch.nn as nnps = nn.PixelShuffle(2)c=8h=4w=4input = torch.range(1,c*h*w).view(1,c,h,w)print(input.shape)output = ps(input)print("ou原创 2022-04-03 18:41:33 · 3181 阅读 · 0 评论 -
permession denied
当运行mm时permession denied可以运行chmod777dist_train.sh进行授权原创 2021-05-24 17:34:47 · 320 阅读 · 0 评论 -
可形变卷积的CUDA实现及编译
代码详见我上传的资料。经过我的测试cuda10.2下torch1.7和torch1.5都编译失败了只有torch1.4 cuda10版本编译通过。编译时记得把build文件删除,不然会影响本地环境的编译。编译就运行 python setup.py develop即可。...原创 2021-03-31 16:47:06 · 434 阅读 · 0 评论 -
Focal length in pixels的计算方法
一般来说,我们采用针孔相机模型,也就是认为它用到的是小孔成像原理。在相机坐标系下,一般来说,我们用到的单位长度,不是“米”这样的国际单位,而是相邻像素的长度。而焦距在相机坐标系中的大小,是在图像处理领域的一个非常重要的物理量。假设我们已经根据相机参数,得到镜头的物理焦距大小(focal length),和相机胶片的宽度(CCD width),以及照片的横向分辨率(image width),则具体计算公式为:Focal length in pixels = (image width in p...原创 2021-03-18 15:19:49 · 2211 阅读 · 0 评论 -
神经网络不同Norm之间的差别
神经网络不同Norm之间的差别原创 2021-01-26 19:36:56 · 605 阅读 · 0 评论 -
使用grid_sample和fold提取块的操作
使用grid_sample和fold提取块的操作import torchimport numpy as npfrom imageio import imread, imsavefrom PIL import Imageimport torch.nn.functional as Ffrom Patch_model.DeformSearch import DeformSearchRef = imread("0.png")Ref = Ref.astype(np.float32)Ref = R原创 2020-09-14 20:18:14 · 372 阅读 · 0 评论 -
torch group的用处
详见:https://www.jianshu.com/p/20ba3d8f283c概括:其实就是将in_channel的个数group等分,每个等分都使用相同参数的kernel,也就是说将kernel的参数个数变为1/group了,但这么做的后果就是out_channel也必须为group的整数倍。...原创 2020-08-25 20:51:51 · 372 阅读 · 0 评论 -
pytorch的求导计算以及处理不可微方法
一.pytorch求导计算法就是普通的微分求导,详见https://zhuanlan.zhihu.com/p/51385110二.pytorch处理不可微的方式没有被选择到的直接归零import torch#x = torch.tensor([[1.,2.,3.],[4.,5.,6.]],requires_grad=True)x= torch.randn(2,3,requires_grad=True)y = torch.add(x,1)print(y)z = 2*torc.原创 2020-08-23 18:28:47 · 1936 阅读 · 1 评论 -
pytorch 状态字典:state_dict命名规则
摸个类中的名称就在def __init__(self)中定义,名字就是self中的定义名称,若在类中还是用了其他的类,那么名称则为实例化的变量名称.其他类中的命名规则实验代码:# encoding:utf-8import torchimport torch.nn as nnimport torch.optim as optimimport torchvisionimport numpy as mpimport matplotlib.pyplot as pltimport torch原创 2020-08-03 22:51:57 · 1010 阅读 · 0 评论 -
Python类初始化的一些整合
1.如果一个类没有定义__init__(),那么会自动调用其父类,也就是说如果父类的__init__()需要传入参数,而调用时没传则会报错。class A(object): def __init__(self,name): self.name=name def getName(self,name): return 'A '+nameclass C(A): # def __init__(self,name): # ...原创 2020-07-29 22:25:14 · 257 阅读 · 0 评论 -
torch.functional.unfold
unfold其实功能很简单就是在N*C*H*W的H*W平面上取块,然后堆叠,主要用于CV中的patch提取。fold的功能与unfold相反,但具体计算规则没有搞明白,因为我看处理后的矩阵出现了输入没有的数字。import torchfrom torch.nn import functional as fx = torch.arange(0, 1 * 3 * 15 * 15).float()x = x.view(1, 3, 15, 15)x1 = f.unfold(x, kernel_原创 2020-07-27 23:05:51 · 1381 阅读 · 0 评论 -
tensorboard远程连接
首先打开Xshell然后打开chrome,输入网址http://127.0.0.1:16006/就行了原创 2020-07-25 10:16:29 · 352 阅读 · 0 评论 -
torch.Tensor.requires_grad
用torch.Tensor创建的变量的requires_grad默认为False原创 2020-03-09 14:56:49 · 1035 阅读 · 0 评论 -
Firefox is already running(linux) 解决方法
英文版显示:Firefox is already running, but is not responding. To open a new window, you must first close the existing Firefox process, or restart your system.”解决方法如下:在linux的终端输入:firefox -profilemanager...转载 2020-03-02 15:01:57 · 743 阅读 · 0 评论 -
网络融合
将结构相同,权值不同网络融合的办法 opt = parser.parse_args() UPSCALE_FACTOR = opt.upscale_factor CROP_SIZE = opt.crop_size NUM_EPOCHS = opt.num_epochs CUDA_NUM=opt.cuda_num learning_rate=opt....原创 2020-02-18 17:28:56 · 648 阅读 · 0 评论 -
语义分割是如何做到颜色分明的
语义分割做法:之前一直疑惑语义分割是怎么做到颜色这么分明的,后来看了代码。我这边这个语义分割是8类的分割,所以图片经过语义分割后输出的网络是8*H*W的,里面的8就代表8类,然后用torch.max选出每个位置上值最大的索引,然后根据索引对那个位置的像素图上对应的颜色。...原创 2020-02-15 12:17:02 · 2497 阅读 · 4 评论 -
torchvision.transforms中 ToTensor, ToPILImage的探究
1.不使用ToTensor, ToPILImage的相互转换from PIL import Imageimport cv2import numpyfrom torchvision.transforms import ToTensor, ToPILImages=Image.open("C:/Users/xiabin/Desktop/tupain/img1.png")img = c...原创 2020-02-13 18:09:13 · 2280 阅读 · 0 评论 -
perceptual loss 和adversial loss
perceptual loss它是将真实图片卷积得到的feature与生成图片卷积得到的feature作比较,使得高层信息(内容和全局结构)接近,也就是感知的意思。在超分辨中也有用。这个内容感知损失主要是保证语义的正确性风格损失,使用Gram矩阵,保证的是两个图片语义类似的块的风格也相近(纹理,颜色)adversial loss:我做实验的时候,感觉能保证更细致的纹理生...原创 2020-02-07 23:28:45 · 1486 阅读 · 1 评论 -
pytorch optimzer的几点说明
说明几点1.model.zerp_grad()和optimzer.zero_grad(model.parameter())等效2.optimzer只会优化model.parameter()的权值3.遇到require_grad=False或者violatile=True的则由于根本就不求梯度,所以也不优化...原创 2020-02-07 00:21:52 · 239 阅读 · 0 评论 -
pytorch 中retain_graph==True的作用
总的来说进行一次backward之后,各个节点的值会清除,这样进行第二次backward会报错,如果加上retain_graph==True后,可以再来一次backward。retain_graph参数的作用官方定义:retain_graph (bool, optional) – If False, the graph used to compute the grad will ...转载 2020-01-31 23:05:45 · 33006 阅读 · 1 评论 -
Nvidia的一些指令
二、实时查看显卡占用情况watch -n 1 -d nvidia-smiwatch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。1.命令格式:watch[参数][命令]2.命令功能:可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令3.命令参数:-n或...转载 2020-01-14 19:50:35 · 786 阅读 · 0 评论 -
pytorch detach().numpy()
for epoch in range(EPOCH): sum_D = 0 sum_G = 0 for step, (images, imagesLabel) in enumerate(train_loader): print(step) G_ideas = t.randn((BATCH_...原创 2020-01-14 15:16:37 · 13577 阅读 · 0 评论 -
关于python argparse的一些总结
import argparseparser = argparse.ArgumentParser()parser.add_argument("--task", default="pre-trained", help="path to folder containing the model")parser.add_argument("--data_syn_dir", default=""...原创 2020-01-14 13:49:44 · 245 阅读 · 0 评论 -
关于pytorch中的转置卷积参数认识
转置卷积的输出大小是out=(inut-1)*stride-2*padding+kernelsize一开始我感觉很疑惑,padding不是应该增大输出的大小吗?为么反而会让它减小。后来看了一下公式,我觉得,此处的padding对应的是卷积时原本图像大小上加上padding所得的,所以反卷积时,就变成负数了。可能是错的,目前还在调代码阶段,等以后正式上研,一定疯狂补理论!...原创 2019-11-16 16:09:57 · 668 阅读 · 2 评论 -
Batch Normalization 的原理解读
原文地址:http://blog.csdn.net/hjimce/article/details/50866313作者:hjimce 一、背景意义 本篇博文主要讲解2015年深度学习领域,非常值得学习的一篇文献:《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covar...转载 2018-10-14 23:21:55 · 788 阅读 · 0 评论 -
PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION Tero Karras
论文为:PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION摘要:1.提出了一种新的训练对抗神经网络的方法。核心思想是逐步训练生成器和分别器:从低分辨率开始,随着训练进程推进,逐步增加新的层来提炼细节。这种方法不仅加快了训练速度并且更加稳定,可以产生高质量的图像2.提出了一些实施的细节对...原创 2018-10-13 15:52:35 · 2621 阅读 · 0 评论 -
minibatch
转自:https://testerhome.com/topics/10877回顾之前我们讲到了一些在训练模型的时候用到的超参数,例如上一次说的L2 正则, 在过拟合的场景中增加L2的值有助于减小网络的复杂度。 还有诸如学习率, 在梯度下降中,每一次迭代的下降的步长是学习率乘以成本函数对w的导数。所以如果我们想让算法训练的快一点,调高学习率可以有效的减少迭代次数。 诸如此类的还有迭代次数,激...转载 2018-10-13 15:49:08 · 18414 阅读 · 2 评论 -
vggnet网络的搭建
参考了网上的一些vgg tensorflow 的代码,然后自己搭了一个网络。然后用这个网络来进行四种花的分类,训练了150代后,分类成功率竟然只有26%,也就比猜稍微高了一点点吧。而且到最后权重基本上就不变化了。回头尝试加一下batch_norm来试试看吧。可能是我迭代的次数少,vgg收敛比较慢,又或者是过拟合了吧。vgg_net.pyimport numpy as npimport ...原创 2018-10-13 09:23:51 · 2905 阅读 · 0 评论 -
迁移学习
深度神经网络,相比于之前的传统机器学习方法,可以看成是一个全新的物种,这背后的原因,最明显的还是深度学习对机器算力的巨大需求,在深度学习入门最少需要知道什么?中介绍了深度学习所需的显卡资源,而当前大内存的机器不贵,而高性能,大显存的显卡就没那么便宜了。这使得使用深度学习去处理实际生活中遇到的问题,例如图像和语音的识别时,需要消耗大量的资源。而迁移可以改变这一切,显著的降低深度学习所需的硬件资源。...转载 2018-10-05 17:43:54 · 175 阅读 · 0 评论 -
Normalization的作用
转自https://www.cnblogs.com/guoyaohua/p/8724433.htmlBatch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性。虽然有些细节处理还解释不清其理论原因,但是实践证明好用才是真的好,别忘了DL从Hinton对深层网络做Pre-Train开始就是一个经验领先于理论分析的偏经验的一门学问。本文是对论文《Batc...转载 2018-10-09 17:44:45 · 2280 阅读 · 0 评论 -
Single Image Reflection Removal
以下分析来源:Seeing Deeply and Bidirectionally: A Deep Learning Approach for Single Image Reflection Removal这篇文章说它提出了级联深度神经网络(cascade deep netural network),尽管每个深度学习都是这种网络。来估计背景图片和反射图片。首先是构造有反射的图片,对反...原创 2018-10-09 16:50:25 · 1970 阅读 · 0 评论 -
激活函数
激活函数”能分成两类——“饱和激活函数”和“非饱和激活函数”。sigmoid和tanh是“饱和激活函数”,而ReLU及其变体则是“非饱和激活函数”。使用“非饱和激活函数”的优势在于两点: 1.首先,“非饱和激活函数”能解决所谓的“梯度消失”问题。 2.其次,它能加快收敛速度。 Sigmoid函数需要一个实值输入压缩至[0,1]的范围 σ(x) = 1 / (...转载 2018-10-09 17:47:28 · 303 阅读 · 0 评论 -
Multi-Scale Guided Concurrent Reflection Removal Network
gradient inference network(GiN):输入是4通道张量,它是输入混合图像及其对应梯度的组合.The image inference network (IiN):以混合图像为输入,提取描述全局结构和高层语义信息的背景特征表示来估计B和R。GIN网络用的是一个镜像框架结构,即首尾结构对称(分别对应编码和解码结构)。编码结构由五个卷积层构成,先一个步长1...原创 2018-10-09 21:56:07 · 372 阅读 · 0 评论 -
具有感知损失的单图像反射分离
论文:Single Image Reflection Separation with Perceptual Losses这篇文章是从损失函数的角度入手的,网络结构上没有太多创新。他定义了三个损失函数,分别衡量的是特征损失Lfeat(还原后无反射图像的信息的特征准确度),Ladv,对抗损失,其实用的只是GAN的descirmator衡量图像真实性的值来做损失函数,Lexcl,衡量去反射的...原创 2018-10-16 16:22:22 · 863 阅读 · 0 评论 -
关于tf.train.batch和tf.train.string_input_producer的区别(输入流程简介)
前面其实对输入tensorflow数据集的构造和输入那一块的认知比较模糊,所以抽了点时间解析了一下官方代码。大概顺序如下:1.输入所需图片的地址,然后放到tf.train.string_input_producer中进行管理,注意tf.train.string_input_producer中只是图片的地址,不是图片的值。2.然后用各种读取器读取地址中的数据(图片,标签),用的是...原创 2018-11-07 22:40:53 · 1235 阅读 · 0 评论 -
To learn image super-resolution, use a GAN to learn how to do image degradation first
To learn image super-resolution, use a GAN to learn how to do image degradation first(超分辨率人脸) 作者提出的问题是现在获得的样本图片都是通过简单的线性降采样,或者模糊得到的图片,这和现实的模糊图片是不符合的。因为现实世界中的低分辨率图片通常要考虑这些因素(模糊(例如运动或散焦),压缩伪影,颜色和传感...原创 2018-12-26 00:27:37 · 1608 阅读 · 0 评论 -
激活函数特点分类
sigmoid和tanh是“饱和激活函数”,而ReLU及其变体则是“非饱和激活函数”。使用“非饱和激活函数”的优势在于两点: 1.首先,“非饱和激活函数”能解决所谓的“梯度消失”问题。 2.其次,它能加快收敛速度。 Sigmoid函数需要一个实值输入压缩至[0,1]的范围 σ(x) = 1 / (1 + exp(−x)) tanh函数需要讲一个实值输...转载 2019-08-13 10:37:08 · 1095 阅读 · 0 评论 -
关于weight_decay的设定
转载至https://www.cnblogs.com/YouXiangLiThon/p/8885742.html刚开始训练一个模型,自己就直接用了,而且感觉训练的数据量也挺大的,因此就没有使用正则化,可能用的少的原因,我也就不用了,后面,训练到一定程度,accuracy不上升,loss不下降,老是出现loss=nan,输出的结果也就直接不预测,比如训练二分类器,直接判断固定为某一类...转载 2018-10-04 17:24:36 · 44454 阅读 · 17 评论