- 博客(35)
- 收藏
- 关注
原创 数据压缩笔记[5] 视频解码器缓冲区防止下溢条件推导
端到端视频编码传输系统模型可抽象为如下部分:在恒定速率信道(CBR)的假设下,缓冲区模型为:其中:A为发送端缓冲区中积累的比特数;B为解码端缓冲区移出的比特数;C为从比特传输速率;Encoder transmit delay为编码器发送延迟;Decoder decoding delay为解码器解码延迟;对于编解码器的缓冲区而言存在四种溢出状态:编码缓冲区上溢,A-C>编码器缓冲区上限;编码缓冲区下溢,A-C=0;解码缓冲区上溢,C-B>解码器缓冲区上限;解码缓冲
2021-12-13 21:55:29
2012
2
原创 数据压缩实验[4] H264参考编码器模式选择及运动矢量信息
实验内容熟悉H.264参考编码器JM software编码参数(本文采用JM18.6);输出foreman_qcif序列第0、1帧指定宏块如下信息:编码模式(mode);运动矢量(MV);量化参数(QP);H264参考编码器参数设置JM编码器的参数通过cfg文件设置,运行编码器时调用配置文件的命令(以Windows平台的vs项目为例)为:-d [配置文件路径]示例:配置文件encoder.cfg的关键参数为:InputFile = "foreman
2021-12-05 20:57:10
1028
原创 强化学习基础知识笔记[7] - Policy Gradient
参考资料[1] 强化学习进阶 第六讲 策略梯度方法本文主要是对该资料学习的笔记,并且加入了一些自己的想法,如有错误欢迎指出。Value based 与 Policy basedValue based值函数方法包括策略评估与策略改善两个步骤。最典型的为前面学习的DQN方法。其优化目标为:寻找最优θ,拟合值函数Qθ(s,a)Q_{\theta}(s,a)Qθ(s,a)(策略评估);在值函数基础上选择最佳策略argmaxaQθ(s,a)argmax_a Q_{\theta}(s,a)argma
2021-11-13 20:58:09
969
原创 数据压缩实验[3]:量化器调试
均匀标量量化示例程序调试与运行均匀标量量化编码器uqimg_enc以量化索引比特数确定量化等级数,输入值范围[0,255],此时运行参数为:-i [输入img图像文件路径] -o [输出量化索引文件路径] -b [量化比特数]例如:-i ../images/sena.img -o ../images/quantized_img/sena_6bit.quan -b 6其余情况见程序中usage()函数。均匀标量量化解码器uqimg_dec运行参数为:-i [输入量化索引文件路径] -o
2021-11-13 15:48:13
779
原创 强化学习基础知识笔记[6] - DQN
参考资料[1] 深度强化学习系列 第一讲 DQN本文主要是对该资料学习的笔记,并且加入了一些自己的想法,如有错误欢迎指出。DQN算法引入DQN算法在Q-Learning算法上改进而来,具体改进三点:利用卷积神经网络逼近行为值函数该逼近方法属于非线性逼近。此处的值函数对应一组参数,为神经网络中每层网络的权重,用θ表示。此时值函数记为:Q(s,a;θ)Q(s,a;\theta)Q(s,a;θ)。DQN所用神经网络为三个卷积层加两个全连接层。利用经验回放训练强化学习过程DQN中Agent
2021-11-09 16:49:16
997
原创 HEVC码率控制
参考资料:[1]万帅,杨付正编著. 新一代高效视频编码H.265/HEVC 原理、标准与实现[M]. 北京:电子工业出版社, 2014.12.上一章:HEVC率失真优化码率控制概述码率控制的主要工作是建立编码速率R与量化参数QP的关系,公式化描述为:Q∗=(Q1∗,⋯ ,QN∗)=argmin(Q1,⋯ ,QN)∑i=1NDi s.t.∑i=1NRi≤Rc(1)Q^* = (Q^*_1,\dotsb,Q^*_N)=argmin_{(Q_1,\dotsb,Q_N)}\sum_{i=1}^
2021-10-29 10:21:32
364
原创 HEVC率失真优化方法
参考资料:[1]万帅,杨付正编著. 新一代高效视频编码H.265/HEVC 原理、标准与实现[M]. 北京:电子工业出版社, 2014.12.视频率失真曲线对于某一视频编码标准,其编码框架已经确定,在给定的编码框架中选择不同的编码参数可以获得不同的率失真性能。HEVC中可选的编码参数有CTU分割模式、预测模式、变换模式和量化参数等,不同的编码参数对应一组(R,D),称为一个可操作点。遍历所有编码参数组合,对于当前给定的视频序列和任意码率限制Rc,总可以找到一组编码参数最小化失真D。不同码率Rc下
2021-10-28 17:31:50
1224
原创 强化学习基础知识笔记[5] - 值函数逼近
参考资料[1] 强化学习入门 第五讲 值函数逼近本文主要是对该资料学习的笔记,并且加入了一些自己的想法,如有错误欢迎指出。强化学习的分类无模型强化学习 - 理论强化学习的核心问题强化学习的核心问题为:策略评估部分:值函数、状态-行为值函数的估计问题!策略改善部分:给定值函数下,π(a∣s)\pi(a|s)π(a∣s)的选取问题!回报函数、值函数定义累计回报函数Gt=Rt+1+γRt+2+...=∑k=0∞γkRt+k+1(1.1) G_t = R_{t+1} + \gamma
2021-10-19 11:13:33
426
原创 强化学习基础知识笔记[4] - 时间差分法
参考资料[1] 强化学习入门 第四讲 时间差分法(TD方法)本文主要是对该资料学习的笔记,并且加入了一些自己的想法,如有错误欢迎指出。强化学习的分类无模型强化学习 - 理论强化学习的核心问题强化学习的核心问题为:策略评估部分:值函数、状态-行为值函数的估计问题!策略改善部分:给定值函数下,π(a∣s)\pi(a|s)π(a∣s)的选取问题!回报函数、值函数定义累计回报函数Gt=Rt+1+γRt+2+...=∑k=0∞γkRt+k+1(1.1) G_t = R_{t+1} +
2021-10-11 21:30:53
596
原创 数据压缩实验[2]:Huffman编码学习及实验
Huffman算法概述Huffman编码的分类静态统计模型码表根据训练数据得到,不同信源利用同一个概率表无需传送Huffman码表/码树半自适应统计模型对每个输入信源符号,计算其概率需要对输入进行两边扫描,无法适应于实时传输必须传送Huffman码表和压缩流自适应/动态统计模型一遍扫描当频率改变时,改变Huffman码表/树半自适应统计模型的Huffman码表生成算法:第一次计算所有符号的频率/概率对所有符号按其概率排序将符号集合划为为两个概率差异最小集
2021-10-09 22:17:41
1279
原创 强化学习基础知识笔记[3] - 蒙特卡罗方法
参考资料[1] 强化学习入门 第三讲 蒙特卡罗方法[2] 重要性采样本文主要是对该资料学习的笔记,并且加入了一些自己的想法,如有错误欢迎指出。强化学习的分类无模型强化学习 - 理论在之前的学习中,若已知模型时,马尔科夫决策过程可以利用动态规划求解。其过程无非为两大部分:策略评估和策略改善。基于模型的强化学习值函数计算vk+1(s)=∑a∈Aπ(a∣s)(Rsa+γ∑s′Pss′avk(s′))(1) v_{k+1} (s) = \sum_{a \in A} \pi(a|s)\left(
2021-10-07 22:08:36
309
原创 强化学习基础知识笔记[2] - 基于模型的动态规划
参考资料[1] 强化学习入门 第二讲 基于模型的动态规划方法强化学习的分类分类如上图所示,需要说明的是基于模型的动态规划方法知道转移概率PPP、立即回报函数RRR、衰减因子γ\gammaγ,而无模型的强化学习不知道。动态规划的理解动态-状态的变化;规划-优化方法。动态规划可解决的问题的两个条件:可分解为多个子问题子问题的解可存储并重复利用v∗(s)=maxaRsa+γ∑s∈SPss′av∗(s′)(1.1) v^*(s) = max_{a}R^a_{s} + \gamma\sum_
2021-10-06 17:34:47
217
原创 强化学习基础知识笔记[1] - 马尔可夫决策过程
强化学习基本原理智能体通过动作A与环境进行交互,形成状态S->S’的改变并得到回报R。在不断的交互过程中,强化学习利用交互得到的数据修正自身的动作策略,最终习得该环境下完成相应任务的最优策略。参考资料[1] 强化学习入门 第一讲 MDP预备知识 - 马尔可夫概念马尔可夫性马尔可夫性指系统下一状态St+1S_{t+1}St+1仅与当前状态sts_{t}st有关,与以前的状态无关,当前状态可以反映所有历史状态。公式描述:P[st+1∣st]=P[st+1∣s1,s2,...,st](1
2021-10-04 18:02:01
463
原创 强化学习算法[1] Q-Learning笔记
Q-learning 解决的问题Q-Learning解决决策问题,即在目前所处的环境下,采取何种行动才能获得最大收益。需要注意的是,采取Q-Learning算法求解问题时需要保证所处的状态S为有限可列个,在每种状态下采取的行动a也为有限可列个!Q-learning 算法简介Q-Learning是一种强化学习中的value-based的算法,即根据目前所处状态下每个可采取行动的value,即Q值,Q(S,a)决策下一步行动。该算法实现的关键在于Q-table的建立与更新,该表如下所示:a
2021-10-03 14:58:28
337
原创 JM编码器码率控制算法笔记:以JVT-G012r1为例
应用率失真优化需要三个算法/模型根据信源输入及选择的编码框架,建立合适的R-D模型(通常是R-Q、D-Q关系);根据给定的码率R以及缓冲区状态,为每个编码单元分配比特并带入R-D模型求解Q,并在编码完成后更新模型参数;针对给定的λ,求解最佳编码参数;分析应用率失真优化的过程,会发现如下悖论:建立的R-D模型中往往存在与图像内容相关的参数,而这部分参数需要在RDO优化后得到;在比特分配后,求得相应的Qp需要使用该R-D模型,而此时图像尚未进行RDO优化,模型参数无法更新;因此,部分码率控
2021-10-02 21:50:53
1156
原创 数据压缩实验[1]:不同类语音信号的时频特性分析
实验目的了解不同类型的语音信号产生方式观察不同类型语音信号的时域、频域特性知识储备:语音信号的形成与分类声母表声母读音声母读音b玻p坡m摸f佛d得t特n讷l勒g哥k科h喝j基q欺x希zh知ch吃sh诗r日z资c雌s思y医w屋发声过程如上图所示,气流从肺部流出驱动声带发生,经过声道后通过口腔、鼻腔发出,可以看作声带产生的信号经
2021-10-02 21:06:33
622
原创 windows下编译x264编码器
做毕业设计,对x264编码器做了一些修改准备进一步开发,但在linux下开发对makefile这块一窍不通(说白了还是懒),于是准备将修改好的x264编码器换到Windows环境下来做。接下来就是踩过的一些坑和大家分享下:MinGW安装这个就不多说了,网上教程大把。这里说下GNU环境的配置,我没有使用MSYS2,用的是mingw installation manager中安装的msys,里边勾选了如下选项(说实话这里我不是很懂,很多瞎点的):安装完成后来到MinGW安装目录,会看到msys文件夹,
2021-01-06 16:38:02
682
2
原创 数据结构笔记[3] Dijkstra算法
Dijkstra算法Dijkstra算法用于求解连通图中的最短距离问题,对于指定一点,该算法可求解其到其余各点的最短距离。该算法需要两个辅助数组distance[MAXVEX], last_vertex[MAXVEX],前者用于存储各点到所求点的最短路程,后者用于存储其他的点到所求点路径的上一点。基本步骤可以概括为:初始化,distance[ ]数组为v[i]到v0的距离, last_vertex[]数组为v0(起始点)查找距v0最近的点k,将其标记为已找到最短路径计算未被标记的点经由k点到v
2020-12-20 22:13:38
287
原创 数据结构笔记[2] Kruskal算法
Kruskal算法同Prim算法,Kruskal算法用于求解连通图中最小生成树问题。该算法从直观上比较好理解,其过程为:将图中的所有边按照权值大小从小到大排序依次选择最小的边,只要该边加入生成树中不会成环,就将这条边加入生成树Kruskal算法的实现实现分辨顶点加入树中是否会导致成环的方法是将所有顶点分类,在一棵树中的为同样一类,其过程见http://data.biancheng.net/view/41.html这里用的方法和上边资料的方法相同但在表述上稍有差别。建立一个数组,命名为p
2020-12-17 21:57:28
327
原创 数据结构笔记[1] Prim算法
Prim算法Prim算法用于求解连通图中最小生成树问题。即在一个n个顶点的连通图中找出n-1条边,形成一棵树并使所有边的权值之和最小。Prim算法的核心是将顶点集分类,分为加入生成树的点(记为集合A)和剩余的点(记为集合B)。在迭代的过程中,不断将B中到A权值最小的一点加入A中(即遍历B中所有点,对每一点遍历其到A中所有点的权值,挑权值最小的那一点加入A),直至全部顶点加入集合A以下图为例:其生成过程为:Prim算法的实现在Prim算法中,关键在于两个数组,adjvex、lowcost。刚
2020-12-14 21:46:27
1091
原创 数据压缩学习实验(八)H264编码器调试
实验内容调试JM18.6 H264编解码器,将输入的Annex B格式码流解码至YUV文件调整编码器参数,将解码后的YUV文件编码至不同格式的H.264文件用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息用播放器观看所生成码流的质量生成率失真曲线实验过程及结果解码.264文件(Annex B码流)至YUV 420文件在H.264中,编码后的比特流将被NAL( Network Abstraction Layer)打包形成NAL Unity:NAL Unity由一个字节的头
2020-07-07 16:53:46
809
原创 数据压缩学习笔记(四)语音参数编码与随机信号的AR模型参数建模
语音信号的特征浊音(Voiced sounds):声带振动,引起声门的打开和关闭,从而发送压力变化的脉冲到声道,在声道形成声波。清音(Unvoiced sounds):清音是声门保持打开并将气体压进一个收缩声道的结果。清音样本表现出很少的相关性,是随机的或接近随机的。爆破音(Plosive sounds):声道关闭之后产生的压缩空气然后突然打开声道所发出的音。因此语音信号的生成可以被归为两大类:在话音生成模型中,声道被等效成一个随时间变化的滤波器,它由白噪声—清音话音段激励,或者由脉冲串——浊音
2020-06-19 22:07:58
1105
1
原创 数据据压缩实验(七)MPEG音频编码器分析及调试
实验目的理解感知音频编码的基本思想理解心理声学模型的实现过程理解MPEG layer2音频编码器的整体框架理解码率分配的实现思路调试编码器,编码不同音频文件,选择一个音频帧并输出如下关键信息:该帧分配的比特数该帧的比例因子该帧的比特分配结果实验原理子带编码三个重要组成部分:分析—综合滤波器组比特分配机制编码机制不同子带运载不同数量的感知信息,不太重要的子带可以用较低码率下采样,且可以采用较粗糙的量化粗量化,运载最重要信息的子带用高质量编码。MPEG layer2音频
2020-06-05 11:25:17
641
原创 数据压缩预备知识(三)完全重建滤波器实验和频域、时域分辨率
完全重建滤波器完全重建滤波器QMFB将输入信号经由不同通带的滤波器组滤波之后输出,在接收侧通过综合滤波器将各子带综合为恢复信号。完全重建滤波器可以根据每个子带的不同特征分别进行处理,而插值和合成可以一定程度上消除信号失真以及降低样值数目从而数据码率。两通道正交镜像滤波器图中,希望满足的条件为:此时,输出信号仅在幅度、时延与原始信号不同。其频域表达式:两通道正交镜像滤波器组所需满足的条件是:其幅频特性为:一般而言H0为低通滤波器,H1为高通滤波器。从时域上进行最简单的推导:设低通
2020-05-26 05:50:36
1063
原创 数据压缩学习实验(六)JPEG原理分析及JPEG解码器的调试
实验目的掌握JPEG编解码系统的基本原理。初步掌握复杂的数据压缩算法实现,并能根据理论分析需要实现所对应数据的输出。实验原理JPEG编码原理色彩空间:JPEG标准本身并没有规定具体的颜色空间,只是对各分量分别进行编码。实现中通常将高度相关RGB颜色空间转换到相关性较小的YUV颜色空间,并根据人眼对色度不敏感的视觉特性进行色度下采样,如4:2:2、4:2:0等。零偏置:对于灰度级是2n的像素,通过减去2n-1,将无符号的整数值变成有符号数,从而使像素的绝对值出现3位10进制的概
2020-05-26 01:09:01
677
原创 数据压缩学习笔记(三)最小二乘法、梯度下降法、牛顿法、高斯牛顿法原理
最小二乘法最小二乘法的目标是解决函数拟合的问题,对于给定的多组(x,y):(x1,y1),(x2,y2),(x3,y3)……,(xk,yk)求得最佳拟合函数的关系。一般地,这个函数的非线性表示形式为:其线性方程组表示为Y=XA,记作矩阵:在算法中,优化的目标是让残差平方和最小,即:此时的残差平方和又可称为损失函数。最小二乘法求解最优化A矩阵的思想就是对每一个系数的导数求导并使其置零。其求解结果为:对于线性关系,方程为:求解结果不变仍为最小二乘法在DPCM预测器设计中确定预测系
2020-05-14 22:02:40
961
原创 数据压缩学习实验(五)均匀量化器设计即DPCM编码的C++实现
实验目的掌握DPCM编解码系统的基本原理。设计均匀量化器对误差图像进行量化,观察分析量化及预测结果;使用Huffman编码程序对原始图像和预测误差图像进行编码,统计符号概率并分析其压缩效率。实验内容DPCM编解码原理在预测编码DPCM中,先根据前几个抽样值计算出一个预测值,再取当前抽样值和预测值之差。将此差值编码并传输。此差值称为预测误差。由于抽样值及其预测值之间有较强的相关性,即抽...
2020-05-01 22:16:18
1644
1
原创 数据压缩学习实验(四)LZW压缩算法的C++实现及其效率分析
实验目的:掌握词典编码的基本原理,阅读C语言实现的LZW算法并用C++按自己理解实现LZW解码器并分析编解码算法,以及LZW算法对不同文件的压缩效果。LZW算法原理:关于更具体的图解LZW编解码可以参考:超级简单的数据压缩算法—LZW算法编码部分:简单地讲,LZW的编码就是不断将目前字符‘c’与上一个字符串P串成一个新串,并与词典中已有串进行不断比对,若新串P+‘c’在词典中,则将P+...
2020-04-23 15:53:36
2246
1
原创 数据压缩学习实验(三)PNG文件读取及转换至YUV色彩空间的C++实现
实验目的学习PNG文件格式,为随后学习图像的压缩做准备。编程读取PNG文件中的外围解析,使用lodepng库解码被压缩的图像内容。将文件内容转换至YUV色彩空间。实验原理PNG文件格式初步了解:数据压缩学习笔记(二)以PNG为例探讨设计思想和理解YUV色彩空间的转换:数据压缩学习实验(一)RGB与YUV色彩空间转换的C++实现及误差分析使用lodepng库对压缩图像进行解码:L...
2020-04-10 23:06:29
814
原创 数据压缩学习实验(二)BMP文件读取及转换至YUV色彩空间的C++实现
实验目的熟悉BMP文件结构,进一步学习多媒体文件结构设计的思想。编程读取BMP文件,要求程序可以处理1、2、4、8、24、32bit色深。实践RGB与YUV色彩空间的转换,将BMP文件转换至YUV色彩空间。实验原理RGB与YUV空间的相互转换:由电视原理可知,亮度和色差信号的构成如下:Y=0.2990R+0.5870G+0.1140BR-Y=0.7010R-0.5870G-0....
2020-04-05 22:05:49
1040
3
原创 数据压缩学习笔记(二)以PNG为例探讨设计思想和理解
一、PNG文件的组成Png文件构成方式如下:其中:PNG文件署名固定8字节为89 50 4E 47 0D 0A 1A 0A每个数据块由四部分构成:名称字节数说明Length(长度)4Bytes指定数据块中数据长度,不超过(231-1)字节Chunk Type Code(类型码)4Bytes由ASCII字母(A-Z和a-z)构成Chunk Dat...
2020-03-28 22:37:31
329
1
原创 数据压缩学习实验(一)RGB与YUV色彩空间转换的C++实现及误差分析
实验目的编写程序将RGB图片文件转换为YUV色彩空间。其中,RGB文件各像素以BGR顺序按行依次排列存储,YUV文件按全部Y数据、全部U数据、全部V数据存储,均为8bit量化。编写程序将图片从YUV色彩空间转换回RGB色彩空间,并于原RGB文件进行比较,分析误差。实验原理RGB与YUV空间的相互转换:由电视原理可知,亮度和色差信号的构成如下:Y=0.2990R+0.5870G+0...
2020-03-19 23:49:16
1411
原创 数据压缩学习笔记(一)RGB文件读取及RGB分量的概率分布统计
实验目的使用C++读取未压缩的,分辨率为256*256的RGB文件,并分别输出该文件R、G、B三个分量的概率分布示意图和熵。信息熵在这里表示R,G,B三个通道每像素分别平均携带的信息量。实验过程示例图片如下:对于上述示例图片的RGB文件,其每个像素的三种颜色为8bit,以BGR的顺序逐像素一行一行地储存在文件中。(这个RGB文件基本可视作去掉头部的24bit bmp文件)。使用C++...
2020-03-12 23:17:35
685
原创 数据压缩预备知识(二)主成分分析法及其python实现
一、概述主成分分析法(PCA)主要应用于数据降维。其思想是使用较少的变量来取代原先较多的变量,以实现节省数据量的效果。需要指出,若原始变量之间互相正交,即线性无关,则主成分分析法没有效果。二、原理假定有n个样本,每个样本有p个变量描述,则所有数据构成了一个n*p阶的矩阵XX = [[dat1], [dat2], ..... [datn]]但我们希望通过q个变量来描述这些数据...
2020-02-19 17:47:46
696
原创 数据压缩预备知识(一)数据类型及常见表示方法
数据类型基础一、二进制及其运算在计算机中,数据以二进制的形式表示。〖(XXX)〗_b ,如〖(1011.11)〗_b。 其权值为2^i,基数为2,系数为0与1。二进制按权展开相加得十进制数值,十进制整数部分除2取余,小数部分乘2取整得二进制数值。如:二进制数分为有符号数和无符号数。其中,有符号数的最左位表示符号,0+,1-。有符号数表示方法分为原码,反码和补码。正数三码相同,负...
2020-02-16 23:27:48
433
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人