![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
神遁克里苏
这个作者很懒,什么都没留下…
展开
-
x265安装与运行
Win10下x265安装与运行原创 2023-12-13 11:22:46 · 294 阅读 · 0 评论 -
【ffmpeg】修改YUV分辨率
【ffmpeg】修改YUV分辨率原创 2024-03-22 17:48:07 · 206 阅读 · 0 评论 -
UE5安装报错ERROR:MSB3073
UE5安装报错ERROR:MSB3073原创 2024-03-18 14:54:08 · 177 阅读 · 0 评论 -
学习笔记:帧率转换之三维递归搜索块匹配算法
帧率转换之三维递归搜索块匹配算法原创 2022-10-03 21:41:31 · 193 阅读 · 0 评论 -
YOLO学习笔记
YOLO学习笔记原创 2022-10-02 11:25:35 · 1930 阅读 · 1 评论 -
【VTM10.0】反量化之DQ技术
DQ反量化时,会把初始状态设置为0,然后根据level(也就是k)来进行下个点的state判断,如下图所示:反DQ的函数是dequantBlock函数,个人理解见注释:void Quantizer::dequantBlock( const TransformUnit& tu, const ComponentID compID, const QpParam& cQP, CoeffBuf& recCoeff, bool enableScalingLists, int* piDequ原创 2021-06-05 15:47:12 · 532 阅读 · 0 评论 -
【VTM10.0】量化之一般量化技术
量化公式:其中:函数是quant函数,个人理解见注释:void Quant::quant(TransformUnit &tu, const ComponentID &compID, const CCoeffBuf &pSrc, TCoeff &uiAbsSum, const QpParam &cQP, const Ctx& ctx){ const SPS &sps = *tu.cs->sps; const原创 2021-06-05 15:22:22 · 747 阅读 · 0 评论 -
【VTM10.0】反量化之RDOQ、一般量化
RDOQ与一般量化的过程虽然不同,但是解码的步骤时在相同的,如下:解码都调用的dequant函数:该函数主要完成写下面的公式,进行反量化。void Quant::dequant(const TransformUnit &tu, CoeffBuf &dstCoeff, const ComponentID &compID,原创 2021-06-05 11:57:56 · 532 阅读 · 1 评论 -
【VTM10.0】量化之RDOQ技术
其中第一步的量化与普通量化相同,步骤如下:代码理解见注释(仅个人理解,欢迎指正):void QuantRDOQ::xRateDistOptQuant(TransformUnit &tu, const ComponentID &compID, const CCoeffBuf &pSrc, TCoeff &uiAbsSum, const QpParam &cQP, const Ctx &ctx){ const FracBitsAccess&..原创 2021-06-05 11:44:40 · 639 阅读 · 0 评论 -
【VTM10.0】帧内之ISP技术
ISP(Intra Sub-Partitions,帧内子区域划分)依据CU的亮度块尺寸,将其沿水平或垂直方向划分成2个或者4个尺寸相同的子块,然后逐个子区域进行预测和重建。进行帧内ISP的最小CU尺寸为4 x 8或8 x 4(即4 x 4的CU不使用ISP),4 x 8或8 x 4的CU会被分成2个子区域,其他尺寸则被分成4个子区域,即每个子区域最少需要有16个像素。代码意思见注释void IntraPrediction::initIntraPatternChTypeISP(const Codi原创 2021-05-08 21:09:30 · 1593 阅读 · 4 评论 -
【VTM10.0】帧内之PDPC技术
PDPC (Position dependent intra prediction combination)一种对预测值的修正的技术。部分帧内模式在进行帧内预测之后,进行PDPC的加权平均计算,得到最终预测值。分为以下三种情况处理:Planar/DCHor/Ver角度模式 2~17 和 51~66(代码里好像所有角度都用了??m_ipaParam.applyPDPC &= m_ipaParam.angularScale >= 0;这一句是什么意思??是只有 2~17 和 5原创 2021-05-07 21:09:26 · 704 阅读 · 0 评论 -
【维特比算法】简单易懂讲解
最近看了一下维特比算法,是一种典型的动态规划算法。概念定义就不多说了,直接进入正题。对这样一个最短路径的问题,如何去求解?暴力法当然可以找到答案,但是很复杂,所以这个时候我们就要使用维特比算法了自己画了一张假设要从A到D,我们是不是一定会经过t2和t3时刻,就是一定会经过B和C,只不过现在要求的最短的路径经过的是哪一个B和C。我们可以分时刻来求解,对于t2时刻,是不是可以求出每个B的最短路径。t2时刻比如对于B1,到达B1的最短路径为5,记做L(B1)=5到达B2的最短路径L(B2)原创 2021-03-20 11:03:07 · 657 阅读 · 1 评论 -
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 评论 -
理解全连接层与GAP
全连接层讲解可以参照这牌你文章,里边全连接层讲的非常好。全连接层缺点:参数量过大,会导致过拟合。所以现在会用一种GAP(全局平均池化)来代替全连接层。GAP就是让一个H×W×C的输入变成一个1×1×C的输出,每个输出都是该层的像素的平均值。假设卷积层的最后输出是h × w × d 的三维特征图,具体大小为6 × 6 × 3,经过GAP转换后,变成了大小为 1 × 1 × 3 的输出值,也就是每一层 h × w 会被平均化成一个值。...原创 2020-10-20 17:24:07 · 1536 阅读 · 0 评论 -
【WPS】未安装VBA支持库,无法运行文档中的宏。如需要启用宏功能,请点击这里了解详情。
亲测有效!链接:https://pan.baidu.com/s/1rmByVLKp80n5evi070zORA提取码:whjr下载后双击运行,然后关闭WPS,再次打开打开,问题解决。原创 2020-10-20 16:53:18 · 46967 阅读 · 18 评论 -
激活函数(sigmoid和ReLU)
激活函数给神经元引入了非线性因素,如果不用激活函数,神经网络每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。激活函数使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。sigmoidsigmoid函数的定义为:sigmoid函数的图像如下:优点:sigmoid函数可以将实数映射到 [公式] 区间内。平滑、易于求导。缺点:1. 激活函数含有幂运算和除法,计算量大;2. 反向传播时,很容易就会出现梯度消失的情况,从而无法完成原创 2020-10-20 10:49:05 · 5534 阅读 · 0 评论 -
shortcut和残差连接
最近搜索了下这几个概念,记录一下个人理解。shortcutx、y是相邻两层,通过W_H连接,通过将多个这样的层前后串接起来就形成了深度网络。其中H表示网络中的变换。为了解决深度网络的梯度发散问题,Highway(人名)在两层之间增加了(带权的)shortcut。其中C=1-T。残差连接(skip connect)若没有加入identity分支,那么就是用非线性变化函数来描述一个网络的输入输出,即输入为X,输出为F(x),F通常包括了卷积,激活等操作。但是当我们强行将一个输入添加到函原创 2020-10-20 10:28:43 · 10210 阅读 · 1 评论 -
【下载报错】distributed 1.21.8 requires msgpack, which is not installed.
下载tensorflow时报错distributed 1.21.8 requires msgpack, which is not installed.然后就出现一堆的红色。在网上查到的是pip install msgpack-python然后pip install msgpack但是我先用pip install msgpack-python时,依然会报distributed 1.21.8 requires msgpack, which is not installed.这个错。然后我试了试先原创 2020-10-16 19:19:11 · 564 阅读 · 0 评论 -
‘conda‘ 不是内部或外部命令,也不是可运行的程序
输入path后未出现Anaconda3所以用set path=%path%;C:\ProgramData\Anaconda3set path=%path%;C:\ProgramData\Anaconda3\Scripts再次输入conda --version不再报错,再次输入path后出现;C:\ProgramData\Anaconda3;C:\ProgramData\Anaconda3\Scripts,安装成功。...原创 2020-09-22 11:43:22 · 1126 阅读 · 1 评论 -
超分辨率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 评论 -
matplotlib单(多)组数据直接生成折线图
最近做毕业设计,把实验数据都做成表格后,老师要求改成图片形式,但是又不响在重新训练和测试,所以就直接用 matplotlib的画图功能将数据直接做成图片形式了。只有一组数据(不用对比显示)from matplotlib import pyplot as pltfrom matplotlib import font_manager# 设置图片大小和分辨率fig=plt.figure(figsize=(8, 6), dpi=160)#ResNet18不冻结数据a1=[0.94,0.93,原创 2020-05-26 11:53:12 · 4847 阅读 · 0 评论 -
【pytorch】ResNet中间层可视化
这里用到的是我之前训练好的ResNet18,或者可以将代码的model = torch.load(‘model_params(RES_best).pkl’)这一排改为model_ft = models.resnet18(pretrained=True)就可以直接下载ResNet18了。import torchfrom torch import nnfrom torchvision ...原创 2020-04-23 14:32:46 · 2981 阅读 · 4 评论 -
【Pytorch】AlexNet图像分类实战
这里是提前下载的AlexNet,具体方法可以参见AlexNet下载方式完整代码:from __future__ import print_function, divisionfrom torchvision.datasets import ImageFolderfrom torch.utils.data import DataLoaderimport torch.nn as nnim...原创 2020-04-21 18:10:07 · 1779 阅读 · 3 评论 -
【pytorch迁移学习】Resnet实战
使用resnet18对含有4中分类的6000多张图像进行迁移学习,整体程序如下:from __future__ import print_function, divisionfrom torchvision.datasets import ImageFolderfrom torch.utils.data import DataLoaderimport torch.nn as nnimp...原创 2020-04-17 11:04:00 · 562 阅读 · 0 评论 -
如何查看神经网络中的层是否被冻结
from __future__ import print_function, divisionimport torchmodel1 = torch.load('model(frozen).pkl')#print('original parameters:\n', list(model1.parameters()))for k,v in model1.named_parameters()...原创 2020-04-17 10:40:49 · 2896 阅读 · 0 评论 -
【pytorch】冻结、固定部分参数
我这里用resnet18举例,加入这一块代码即可。如果不知道你的神经网络模型中有哪些层,可以像我一样先print(model_ft)看看。比如我这里冻结了前1、2、3层,你也可以冻结其他的层。 print(model_ft) frozen_layers = [model_ft.layer1,model_ft.layer2,model_ft.layer3] for lay...原创 2020-04-17 10:15:59 · 4192 阅读 · 0 评论 -
【pytorch图像分类】批量图像窗口显示、测试结果可视化
深度学习模型搭建好之后,想在测试时显示每张图像的预测类别和真实类别。查资料后,我找到了这个方法,每张图片都能显示出来,效果如下:(这里我的4种类别分别用的0、1、2、3代替)在程序中加入这个函数def imshow(inp, title, ylabel): """Imshow for Tensor.""" inp = inp.numpy().transpose((1, 2...原创 2020-04-17 10:01:18 · 5008 阅读 · 6 评论 -
Pytorch离线下载预训练模型方法(VGG,RESNET等)
就拿Resnet18举例在程序中输入from __future__ import print_function, divisionfrom torchvision import modelsmodel_ft = models.resnet18(pretrained=True)然后运行,就会出现如下内容再将这个网址复制到浏览器中,就可以直接下载Resnet18模型。下载结束后,将下...原创 2020-04-03 12:12:57 · 8862 阅读 · 4 评论 -
pycharm有效期
首先下载jetbrains-agent.jar文件https://pan.baidu.com/s/1rnjRhp3Y2ZLg4Lu_8-lNdQ)提取码:bhdk将该文件放置在你的pycharm的bin中找到你的pycharm64.exe.vmoptions,用记事本打开。在最后一排加上-javaagent:你下载的那个文件存放的位置。比如我的是-javaagent:D:\zhouy...原创 2020-03-12 12:18:16 · 2915 阅读 · 15 评论 -
查看pycharm有效期方法
查看pycharm有效期进入pycharm后,点击help。点击help下的Register然后就可以看到你的pycharm有效期了原创 2020-03-11 14:34:25 · 28412 阅读 · 1 评论 -
数据集太少怎么办?数据集扩充方法
我学习深度学习写代码的时候,数据集图像太少只有1406张还分4个类别,一个类别只有300来张,再分为train、valid和test,图像就更少了,训练的图像少,深度学习的准确度就会不高。这里是我找到的扩充数据集的方法,对图像进行亮度增强、对比度增强、水平翻转和随机方向旋转,我的1406张图扩充到了7030张。变换程序from PIL import ImageEnhanceimport...原创 2020-03-09 13:43:05 · 24120 阅读 · 24 评论