- 博客(29)
- 资源 (2)
- 收藏
- 关注
原创 静态变量static
2、静态全局变量:全局作用域,但是如果程序包含多个源文件,那么这个静态全局变量只能在定义它的文件中用,其他源文件不可访问。每次调用test函数,a是局部变量,所以函数调用结束后就被销毁,再次调用重新初始化为0,而cnt是静态局部变量,程序运行过程中,从第一次被初始化之后就一直存在,所以会一直累加。全局变量:全局作用域,在一个源文件中定义,在其他源文件中也可以引用,只不过用extern关键词再次声明即可。局部变量:具有局部作用域,函数调用一次初始化一次,函数调用结束后被销毁释放。
2023-11-11 21:38:45
164
原创 深度学习中的优化器原理(SGD、RMSProp、Adam)
AdaGrad的累积平方梯度是累加之前所有的梯度平方,乘上衰减系数后,多次更新之后,之前的梯度的影响就会变小,(比如取p = 0.99,100次更新之后 p**100 = 0.36...),从而又可以根据当前的梯度来调节梯度。v会累积之前的梯度,那在梯度变化大的地方会抵消(震荡过程中,梯度一正一负,累加就会抵消),梯度幅度小的地方会累加 (梯度幅度小的地方,梯度方向一直保持不变,累加就会增大)刚才动量的累积让梯度变化大的地方梯度抵消,从而参数变化小,也可以让它在梯度变化大的地方更新步长(学习率)小。
2023-11-11 17:11:33
309
原创 在神经网络中,批次中的单个梯度是求和还是求平均值
另一个直观的例子是,通过平均损失,我们将损失输出归一化,这也有助于稳定训练,因为我们的网络对学习率变得不那么敏感。如果我们使用sum,我们。如果我们将交叉熵损失输出相加,我们会产生与批量大小成比例的损失,因为在训练期间,我们的损失与小批量大小成比例增长。这取决于你想要实现什么。损失函数作为训练神经网络的指南,使其在任务中变得更好。然而,如果我们取平均值,我们的损失与批量大小无关,因为我们取平均值。,这迫使我们使用低得多的学习率,从而使我们的网络对超参数值更加敏感。对于您的用例,我建议取平均值,
2023-09-18 11:02:04
415
原创 TypeError: Scalar tensor has no `len()`
我出错的原因是:利用nn.MSELoss()计算时,输入给的是eagerTensor格式,要求是torch里的tensor格式。首先我利用了keras调用的vgg预训练模型。vgg的输入是numpy,输出是eagerTensor格式(与pytorch的tensor格式不一致),所以需要将eagerTensor转为numpy再torch.tensor转为pytorch接受的格式。...
2022-05-30 12:34:08
1320
原创 torchvision.transforms.ToTensor
把图像转化为[0,1]的torch.float32类型,并改为channel firsttorch.tensor()只是把数据类型转化为tensor,并没有改变数值范围例如:from torchvision.transforms import ToTensorfrom PIL import Imageimport numpy as npimg = Image.open()print(img)>>> <PIL.PngImagePlugin.PngImageF
2022-05-19 16:38:28
2360
原创 All-In-One Image Restoration for Unknown Corruption
2022cvpr的一篇图像修复主要优点就是一个模型可以修复不同种类的图像退化,比如,noise,haze,rain主要思想:输入退化图像x,然后得到潜在退化表示(latent degradation representation) z,然后z与x一起恢复图像。一共有两个自网络CBDE(contrastive-based degradation encoder)和DGEN(Degradation-Guided Restoration Network)1、得到z的结构就是CBDE利用
2022-05-18 22:12:04
1383
原创 Invertible Denoising Network: A Light Solution for Real Noise Removal
2021 cvpr的一篇去噪文章与传统CNN相比,可逆网络:更轻便,适合小设备,information-lossless(信息无损失),save memory原理:利用可逆网络把noisy image分成low-resolution(LR)和high-frequency(HF)部分,因为可逆网络是无损的,所以如果LR部分与clean image的LR相同,那么噪声只在HF中存在,HF中就有可用信息和噪声,但是从HF中分离噪声又是很困难的,所以直接把HF舍弃,用代替HF,然后与LR部分一起
2022-05-17 16:44:48
697
原创 Adaptive Consistency Prior based Deep Network for Image Denoising
这是2021cvpr的一篇去噪的文章,讲的是利用神经网络来实现传统模型,把传统算法模型中的一些函数用神经网络代替。一、模型架构它提出了一个自适应一致性先验的去噪框架(Adaptive Consistency Prior,ACP),首先给出一致性先验模型:为了方便讨论将上式改写为:可以理解这是先将图像x先用线性相似性矩阵W进行滤波,然后拟合偏差(x-Wx)再被I一致约束。然后他们进行了改进:1、他们受BM3D启发,认为把图像变换到高维空间更多的特征能更有利于细节恢复,所以先利用
2022-04-10 16:55:42
4067
原创 numpy.transpose()
转换图像的通道位置的时候会用到例如:对于256*256的三通道彩色图像,cv2以及PIL.Image等读出的numpy格式图像,通道数都在最后(256,256,3)而有时候会需要channel first,(3,256,256)就可以使用np.transpose(img,(2,0,1))相当于从(0,1,2)到(2,0,1)...
2022-04-10 11:13:01
3002
原创 numpy和torch读彩色图像区别
numpy是channel放在最后,torch是放在前面(channel first)举个例子:import numpy as npfrom PIL import Imageimport torchvision#一张彩色图像的路径path3='/content/drive/MyDrive/Unet/dataset/testing/00001.png'#Image读后转为numpy格式print(np.array((Image.open(path3))).shape)#转为tor
2022-04-10 10:36:04
2277
原创 下载文件到google drive
!wget https://github.com/NathanUA/U-2-Net.git -P '/content/drive/MyDrive/Unet/'!wget [文件url] -P [要保存文件的目录]更多命令可参考!wget命令将github的项目clone到google drive!git clone https://github.com/chaoren88/DeamNet.git...
2022-03-20 09:40:09
594
原创 设置在哪张显卡上运行程序python
通过下面语句查看GPU情况Gpus=tf.config.list_physical_devices(device_type='GPU')print(Gpus)第一种import tensorflow as tftf.config.set_visible_devices(devices=Gpus[0:2],device_type='GPU')第二种import osos.environ['CUDA_VISIBLE_DEVICES'] = "0,1"...
2022-02-27 16:09:20
1119
原创 灰度图像划分比特平面matlab
f=imread('cman.tif');%读图[m,n]=size(f);img=zeros(m,n,8);%储存比特平面(二值图像)for i=1:m for j=1:n p=dec2bin(f(i,j),8);%十进制灰度值转为二进制 for k=1:length(p) if p(k)=='0' img(i,j,9-k)=0; else i.
2021-09-21 16:47:56
368
原创 空间滤波matlab
1、线性空间滤波imfilter函数的应用:g=imfilter(f,w,filtering_mode,boundary_options,size)f是输入图像,w是模板,滤波模式有‘corr’相关和‘conv’卷积两种,卷积其实就是将模板进行中心旋转180度之后再相关运算。size有‘full’和填充之后的输入矩阵相同大小,‘same’和填充之前的相同大小。函数rot90可以旋转运算。imfilter会输出与输入图像相同的类型图像,如果使用uint8类型,运算过程中超过255的灰度将会
2021-08-20 10:20:34
1251
原创 分水岭变换的分割,watershed函数
关于分水岭分割的理解可以看这篇文章图像分割之分水岭,比较形象。分水岭变换函数:watershed函数下面这是matlab官方给的watershed函数例子。clear all; clc; close all; center1 = -40;%第一个圆圆心的横坐标 center2 = -center1;%第二个圆圆心的横坐标 dist = sqrt(2*(2*center1)^2);%计算两个圆心之间的距离 radius = dist/2 * 1.4;%圆的半径为两者距离的一
2021-08-18 21:57:29
565
1
原创 基于区域的图像分割matlab
1、区域的分离和聚合步骤:1)根据条件判断是否将当前图像块进行四分,开始时是整张图像,(进行的是平均四分,所以图像大小需要是2的幂次),然后是小图像块,进行不断划分,知道满足停止条件。2)对相邻小块像素进行合并,imreconstruct用于此,知道不能合并qtdecomp函数是用来分解图像的,(四叉树分解),Z=qtdecomp(f,@split_test,parameters),将f传入到函数split_test中,split这个函数其实就是起到调用predicate函数的作
2021-08-18 15:24:05
5855
1
原创 阈值法进行边缘检测matlab
1、基于全局阈值处理1)选择初始阈值T2)用T分割图像,分别是大于T的像素集合和小于T的像素集合。3)计算两集合的平均灰度m1,m24)计算新阈值T=(m1+m2)/25)重复上述步骤,直至两次迭代的T的变化小于一定值6)利用函数im2bw分割图像例:clcclearf=imread('E:\桌面\数字图像matlab\DIP3E_CH10_Original_Images\DIP3E_Original_Images_CH10\Fig1038(a)(noisy_finge
2021-08-14 23:34:32
4186
5
原创 边缘检测matlab
1、线检测水平:-1 -1 -1 2 2 2 -1 -1 -1 +45°:2 -1 -1 -1 2 -1 -1 -1 2 垂直:-1 2 -1 -1 2 -1 -1 2 -1 当上面的模板在图像上移动时,就会对线(一个像素宽)的响应更加强烈。对于恒定的背景,使用第一个模板时,当水平线通过模板的中间一行可能产生更大的响应。响应,即...
2021-08-13 11:24:28
1889
原创 灰度变换matlab
1、mat2gray将(图像)矩阵(几个通道的都可以)归一化到[0,1]范围内,图像类型转为double类型2、im2uint8将矩阵值限定在[0,255]之间,图像类型转化为uint8
2021-08-13 09:32:27
1342
原创 matlab小波变换,图像处理
1、dwt2函数进行一次离散小波变换(DWT),可直接用dwt2函数,应用格式为:[cA,cH,cV,cD]=dwt2(X,'wname');其中X为输入图像,wname为小波函数名称,例如haar,cA,cH,cV,cD分别为,一次小波变换的近似图像,水平方向细节,竖直方向细节,对角方向细节。2、wavedec2函数进行N次分解[C,S]=wavedec2(X,N,Lo_D,Hi_D)其中X为输入图像,N为分解次数,Lo_D,Hi_D为分解滤波器也可以用现有小波函数,w
2021-08-12 11:26:14
3496
原创 matlab灰度变换函数imadjust、stretchlim
1、imadjustg=imadjust(f,[low_in,high_in],[low_out,high_out],gamma)f为输入灰度图像,将low_in和high_in之间的灰度值映射到low_out到high_out之间gamma大于1,映射函数下凸;小于1,上凸;gamma默认为1,线性映射...
2021-08-11 22:22:28
4224
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人