![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习任务
神遁克里苏
这个作者很懒,什么都没留下…
展开
-
H5文件读取
H5文件读取:import torch.utils.data as dataimport torchimport h5pyclass DatasetFromHdf5(data.Dataset): def __init__(self, file_path): super(DatasetFromHdf5, self).__init__() hf = h5py.File(file_path) self.data = hf.get('data')原创 2021-01-16 11:44:11 · 2043 阅读 · 0 评论 -
python对yuv图像裁剪
首先读取yuv图像,从图像的命名中读出图像的长和宽,可能要跟你的yuv文件命名方式来做修改。这是我的yuv图像的命名方式。达到长和宽之后就可以读取图像的像素值了,我这里设置的是裁剪成40的倍数,这两句是得到裁剪后的长和宽。 Height_Y = Height_Y // cropc * cropc Width_Y = Width_Y // cropc * cropc裁剪 current_Y = Y[0:Height_Y, 0: Width_Y ] current_U = U[原创 2021-01-16 11:20:57 · 846 阅读 · 0 评论 -
Python计算yuv图像PSNR
计算PSNR计算PSNR函数:def PSNR(pred, gt,height,width): pred = np.array(pred) gt = np.array(gt) pred=pred.reshape(-1,height* width) gt = gt.reshape(-1, height* width) res = np.mean((pred - gt) ** 2, axis=1) res=res.reshape(-1,1) res=原创 2021-01-16 10:59:28 · 1394 阅读 · 0 评论 -
三个list分量合成YUV文件
把list类型存储的Y、U、V分量合成一张yuv文件。这里output_Y,output_U,output_V是三个list类型的列表。'I:/png/123.yuv’是这个yuv图像存放的位置。with open('I:/png/123.yuv'','wb+') as fp: fp.write(np.array(output_Y, dtype=np.uint8).tobytes()) fp.write(np.array(output_U, dtype=np.uint8).tobytes(原创 2021-01-10 13:34:04 · 401 阅读 · 0 评论 -
yuv图像分量list读取
读取YUV文件,三个分量Y,U,V分别放在list类型的YUV[0]、YUV[1] 和YUV[2]中YUV = [[],[],[]]fp1 = open('I:/png/1/' + 'f' + str(1).zfill(3) + '.yuv', 'rb')YUV[0] = list(np.frombuffer(fp1.read(Height_Y * Width_Y * 2//2), np.uint8).reshape((Height_Y*Width_Y)))YUV[1] = list(np.from原创 2021-01-10 13:24:05 · 356 阅读 · 0 评论 -
超分辨率FSRCNN理解(附pytorch代码)
代码:基于pytorch的FSRCNNFSRCNN改进了SRCNN在速度上存在的缺陷:1.SRCNN在将低分辨率图像送进网络之前,会先使用双三次插值法进行插值上采样操作,产生与groundtruth大小一致的低分辨率图像,这样会增加了计算复杂度,因为插值后的图像相比原始的低分辨率图像更大,于是在输入网络后各个卷积层的计算代价会增大,从而限制了网络的整体速度。2.非线性映射层的计算代价太高。FSRCNN在SRCNN基础上做了如下改变:1.FSRCNN直接采用低分辨的图像作为输入,不同于SRCNN需要原创 2020-09-04 18:26:04 · 5035 阅读 · 2 评论 -
超分辨率SRCNN理解(附pytorch代码)
代码:基于Pytorch的SRCNN图像会先经过预处理,进行缩小,然后放大。使用的是双三次插值法。这样生成的图,虽然大小相同,但是还是称它为LR低分辨率图像。def init(self, num_channels=1):super(SRCNN, self).init()self.conv1 = nn.Conv2d(num_channels, 64, kernel_size=9, padding=9 // 2)self.conv2 = nn.Conv2d(64, 32, kernel_size=原创 2020-09-04 17:37:34 · 9572 阅读 · 15 评论 -
numpy手动实现卷积代码
import numpy as npimport torchdef ZY_Conv(img, in_channels, out_channels, kernels, bias, stride=1, padding=0): # 得到参数 N, C, H, W = img.shape kc,kci,kh, kw = kernels.shape p = padding #四周填充 if p: img = np.pad(img, ((0, 0)原创 2020-10-23 16:23:26 · 587 阅读 · 0 评论 -
numpy手动实现反卷积代码
反卷积代码import numpy as npimport torchdef zy_deconv(img, in_channels, out_channels, kernels,bias, stride=1, padding=0,output_padding=0): #得到参数 N, C, H, W = img.shape kc,kc_in,kh, kw = kernels.shape p = padding #间隔填充 if stride>原创 2020-10-23 16:23:43 · 1115 阅读 · 0 评论 -
nn.ConvTranspose2d中output_padding参数理解
比如图片尺寸6×6,步长为2,卷积核为3×3,padding=1,输出的图片尺寸应为(6+2-3)/2+1 = 3。如果输入图片是5×5,步长为2,卷积核为3×3,padding=1,那么输出为(5+2-3)/2+1=3,也是3*3。这样的话使用反卷积还原图像尺寸时就会争议。解决争议的办法就是使用output_padding参数,output_padding的值默认为stride-1,这样还原得到的图像尺寸就为输入的stride倍,也就是out_size=stirde×in_size。比如这里的3×3原创 2020-09-04 18:29:53 · 4890 阅读 · 2 评论 -
numpy.pad()函数用法
numpy.pad()方法参数:pad(array, pad_width, mode, **kwargs)方法返回:填充后的数组参数解释:array:表示需要填充的数组;pad_width:表示每个轴(axis)边缘需要填充的数值数目。参数输入方式为:((before_1, after_1), … (before_N, after_N)),其中(before_1, after_1)表示第1轴两边缘分别填充before_1个和after_1个数值。mode:表示填充的方式(取值:str字符串或用原创 2020-08-28 16:00:16 · 1723 阅读 · 0 评论