精华内容
参与话题
问答
  • 矢量量化(VQ

    千次阅读 2017-05-31 23:17:00
    作者:桂。 时间:2017-05-31 21:14:56 ...VQ(Vector Quantization)是一个常用的压缩技术,本文主要回顾:  1)VQ原理  2)基于VQ的说话人识别(SR,speaker recognition)技术 〇、分...

    作者:桂。

    时间:2017-05-31  21:14:56

    链接:http://www.cnblogs.com/xingshansi/p/6925955.html


    前言

    VQ(Vector Quantization)是一个常用的压缩技术,本文主要回顾:

      1)VQ原理  

      2)基于VQ的说话人识别(SR,speaker recognition)技术

    〇、分类问题

    说话人识别其实也是一个分类问题:

    说话人识别技术,主要有这几大类方法:

    •  模板匹配方法

    这类方法比较成熟,主要原理:特征提取、模板训练、匹配。典型的有:动态时间规整DTW,矢量量化VQ等。

    DTW利用动态规划的思想,但也有不足:1)过分依赖VAD技术;2)没有充分利用语音的时序动态特性,所以被HMM取代也就容易理解了。

    VQ算法是数据压缩的方法。码本简历、码字搜索是两个基本问题,码本简历是从大量信号样本中训练出比较好的码书,码字搜索是找到一个和输入最匹配的码字,该方法简单,对小系统、差别明显的声音较合适。

    • 基于统计模型的分类方法

    该类方法本质仍是模式识别系统,都需要提取特征,然后训练分类器,最后分类决策,典型框架:

    常用的模型有:GMM、HMM、SVM、ANN、DNN或者各种联合模型等。

    GMM基本框架:

    类似的还有GMM-UBM(Universal background model)算法,其与GMM的区别在于:对L类整体样本训练一个大的GMM,而不像GMM对每一类训练一个GMM模型。SVM的话MFCC作为特征,每一帧作为一个样本,可以借助VAD删除无效音频段,直接训练分类。近年来也有利用稀疏表达的方法:

    一、VQ原理

    此段摘自Pluskid博客。      

         Vector Quantization 这项技术广泛地用在信号处理以及数据压缩等领域。事实上,在 JPEG 和 MPEG-4 等多媒体压缩格式里都有 VQ 这一步。

      Vector Quantization 这个名字听起来有些玄乎,其实它本身并没有这么高深。大家都知道,模拟信号是连续的值,而计算机只能处理离散的数字信号,在将模拟信号转换为数字信号的时候,我们可以用区间内的某一个值去代替着一个区间,比如,[0, 1) 上的所有值变为 0 ,[1, 2) 上的所有值变成 1 ,如此类推。其这就是一个 VQ 的过程。一个比较正式一点的定义是:VQ 是将一个向量空间中的点用其中的一个有限子集来进行编码的过程。

      一个典型的例子就是图像的编码。最简单的情况,考虑一个灰度图片,0 为黑色,1 为白色,每个像素的值为 [0, 1] 上的一个实数。现在要把它编码为 256 阶的灰阶图片,一个最简单的做法就是将每一个像素值 x 映射为一个整数 floor(x*255) 。当然,原始的数据空间也并不以一定要是连续的。比如,你现在想要把压缩这个图片,每个像素只使用 4 bit (而不是原来的 8 bit)来存储,因此,要将原来的 [0, 255] 区间上的整数值用 [0, 15] 上的整数值来进行编码,一个简单的映射方案是 x*15/255 。

      不过这样的映射方案颇有些 Naive ,虽然能减少颜色数量起到压缩的效果,但是如果原来的颜色并不是均匀分布的,那么的出来的图片质量可能并不是很好。例如,如果一个 256 阶灰阶图片完全由 0 和 13 两种颜色组成,那么通过上面的映射就会得到一个全黑的图片,因为两个颜色全都被映射到 0 了。一个更好的做法是结合聚类来选取代表性的点。

    实际做法就是:将每个像素点当作一个数据,跑一下 K-means ,得到 k 个 centroids ,然后用这些 centroids 的像素值来代替对应的 cluster 里的所有点的像素值。对于彩色图片来说,也可以用同样的方法来做,例如 RGB 三色的图片,每一个像素被当作是一个 3 维向量空间中的点。

    用本文开头那张 Rechard Stallman 大神的照片来做一下实验好了,VQ 2、VQ 10 和 VQ 100 三张图片分别显示聚类数目为 2 、10 和 100 时得到的结果:

    传统LBG算法就是K-means,基于分裂的LBG称为LBG-VQ,LBG-VQ算法以及K-means:

     二、基于VQ的说话人识别技术

    基于VQ方法:例如N个说话人,每个说话人建立一个码本,共N个码本。每个码本如何建立呢?以MFCC为例,M帧的MFCC,每一帧都是一个多维N的样本点,训练数据量通常较大MxN,聚类成K类是容易实现的(K<<M),LBG-VQ的思路则是利用分裂的思想,通常按倍数递增,知道码本数量增加到:码本的误差达到预设值停止,最终的结果相当于降维:KxN,也就是码本的维度。

    总结一下基于VQ的说话人识别的基本思路:

    1)训练:分别针对每个说话人提取特征,利用特征训练码本(Kmeans/LBG-VQ等方法);

    2)识别:提取测试数据的特征,与码本匹配,误差距离归一化并求和,最小值即为对应的说话人;

    VQLBG代码

    %% VQLBG Vector quantization using the Linde-Buzo-Gray algorithm
    % VQLBG Vector quantization using the Linde-Buzo-Gray algorithm
    %
    % Inputs: d contains training data vectors (one per column)
    % k is number of centroids required
    %
    % Output: r contains the result VQ codebook (k columns, one for each  centroids)
    
    function r = vqlbg(d,k)
    e = .01;
    r = mean(d, 2);
    dpr = 10000;
    for i = 1:log2(k)
        r = [r*(1+e), r*(1-e)];
        while (1 == 1)
            z = disteu(d, r);
            [m,ind] = min(z, [], 2);
            t = 0;
            for j = 1:2^i
                r(:, j) = mean(d(:, find(ind == j)), 2); %#ok<FNDSB>
                x = disteu(d(:, find(ind == j)), r(:, j)); %#ok<FNDSB>
                for q = 1:length(x)
                    t = t + x(q);
                end
            end
            if (((dpr - t)/t) < e)
                break;
            else
                dpr = t;
            end
        end
    end
    end
    
    %% DISTEU Function
    % DISTEU Pairwise Euclidean distances between columns of two matrices 
    % 
    % Input: 
    % x, y: Two matrices whose each column is an a vector data. 
    % 
    % Output: 
    % d: Element d(i,j) will be the Euclidean distance between two 
    % column vectors X(:,i) and Y(:,j) 
    % 
    % Note: 
    % The Euclidean distance D between two vectors X and Y is: 
    % D = sum((x-y).^2).^0.5 
    
    function d = disteu(x, y) 
    [M, N] = size(x); 
    [M2, P] = size(y); 
    if (M ~= M2) 
    error('Matrix dimensions do not match.') 
    end 
    d = zeros(N, P);
    % if (N < P) 
    % copies = zeros(1,P); 
    % for n = 1:N 
    % d(n,:) = sum((x(:, n+copies) - y) .^2, 1); 
    % end 
    % else 
    % copies = zeros(1,N); 
    % for p = 1:P 
    % d(:,p) = sum((x - y(:, p+copies)) .^2, 1)'; 
    % end 
    % end 
    % d = d.^0.5; 
    for ii=1:N 
    for jj=1:P 
    %d(ii,jj)=sum((x(:,ii)-y(:,jj)).^2).^0.5; 
    d(ii,jj) = mydistance(x(:,ii),y(:,jj),2); 
    end 
    end
    %-------------------------------------------------------------------------- 
    %--------------------------------------------------------------------------
    end
    

      识别的主要code:

    v = mfcc(str{classe},fstr{classe});
    % Current distance and sound ID initialization
    distmin = Inf;
    k1 = 0;
    for ii=1:sound_number
    	d = disteu(v, code{ii});
    	dist = sum(min(d,[],2)) / size(d,1);
    	if dist < distmin
    		distmin = dist;
    		k1 = ii;
    	end
    end
    min_index = k1;
    

        

    参考

    • http://blog.pluskid.org/?p=57
    • http://blog.csdn.net/momosp/article/details/7626971
    展开全文
  • VQ-VAE

    千次阅读 2019-08-12 18:59:18
    Generating Diverse High-Fidelity Images with VQ-VAE-2 摘要 本文主要研究VQ-VAE在大尺度图像生成器上的应用,我们改进了自回归的先验来生成比以前更加优秀的图片,本文使用的是简单的编码和解码器,他们的速度...

    Generating Diverse High-Fidelity Images with VQ-VAE-2

    摘要

      本文主要研究VQ-VAE在大尺度图像生成器上的应用,我们改进了自回归的先验来生成比以前更加优秀的图片,本文使用的是简单的编码和解码器,他们的速度比较快,VQ-VAE需要一个在潜在空间自回归的模型,他的速度要快于像素空间回归,

    多层次结构的VQ-VAE能够产生强大的先验,这样会使生成图片的质量在多脸图像中要优于其他的,并且不会产生模型塌陷,多样性缺失的问题。

     

    文中使用,有损压缩的方式,将生成模型从非必要的信息中解放出来,首先将图片压缩到一个离散的编码空间中,这样的话使得信息的表示少了30倍,并且能够使得解码器从这个空间中重新构成图片,压缩图片模型可以使用PixelSnail的算法,使用的是带有Attention的pixelCNN实现的。经过采样,图像的重构依然能够保持很好的质量。同时这类模型的训练和采样的速度也是基于像素模型的30倍。本文中的改进能够很好的保留原始VQ-VAE快速简单的特点。

    VQ-VAE

    1. VQ-VAE就是使用encoder将图像编码,然后使用decoder将图像解码,其中encoder和decoder共享一个code book,编码器将图像x编码成E(x),之后这个向量根据它和标准的向量之间的距离进行量化,然后就是讲E(x)转化成距离它最近的标准编码,并且将这种标准编码给decoder

    1. VQ-VAE接近对齐编码空间与codebook的标准向量还有两个附加步骤
    1. codebook-loss  应用到标准变量中,选择出和E(x)匹配的标准向量e。
    2. commitment-loss 之应用到encoder的权重,主要是为了在选择标准向量的时候,避免出现太多的抖动,

          其中sg表示终止梯度运算的算子

    1. 使用平滑指数的方法来代替codebook loss

    其中ni 表示E(X) mini_batch中使用ei标准码的数量,gamma是参数在0,1之间,

    1. 一般来说,PixelCNN是用概率模型来表示。

    算法

    文中的方法是两级方法,首先训练一个VQ-VAE来编辑头像到一个潜在空间,人后训练一个,然后在根据先验的潜在空间,训练一个PixelCNN

    训VQ-VAE编码器解码器

    生成图像

     

    从理解上来看,训练分成两步,第一步训练VQ-VAE,第二部训练先验。

    训练VQ-VAE包含训练两个编码器,将两个编码器的编码结果共同输入生成器用来生成图像。

     

    具体算法

     

    1. 这一部分使用的是分级算法,首先由一个Ebottom获得全局特征的latent map然后又有一个 Etop获取局部特征。其中会有一个残差链接。这样的分层结构能够使编码器提取到更多的图片特征,并且能够减少重构时候的错误。
    2. 对于256的图片有两层encoder,第一层生成的latent map是64,第二层生成的latent map是32。

    根据latent code学习先验

    1. 为了进一步的压缩图像,并且能够从第一步的训练模型中采样,使用神经网络训练先验分布,本文从latent code中学习一个先验模型,训练先验模型能够显著的提升编码器的表现。

    这种方式能够减少边缘部位与先验的差别。从训练好的先验分布中采样,有点类似于解码器在训练中探索一样,能够得出更加好的输出。训练先验的目的就是训练出这个分布。从而实现类似于图片的损失较小的压缩, 真实在的熵与训练熵的差别越小,那么解码器生成的图片就越真实。

    在VQ-VAE框架中,先验是由PixelCNN产生的,在训练的第二步中,top latent map的先验代表着图像的整体结构,本文将残差项应用于它,这样的话就能够捕捉到,与整体相互背离的局部特性,但是在bottom latent map中,使用残差项并不能起到很好的作用,但是我们发现使用来自上曾分布的条件栈,会有很好的表现。

    在训练的时候,训练top-level的先验,加入了attention机制,但是在训练bottom-level的时候没有用到这个机制。

     

    总体结构

    1. 第一训练一个编码器,然后让编码器解码器能够和好的复现图像。
    2. 第二部是推理过程使用自回归的方式到latent  map的空间中,然后到空间中随机采样,能够生成图片。

     

    展开全文
  • 附:VQ,PCA,NMF 通俗点说,VQ是用一张完整的图像直接代表源脸部图像; PCA是将几个完整人脸加减压成一张脸;而NMF是取甲的眼睛,乙的鼻子,丙的嘴巴直接拼成一张脸。这样解释虽然细节上略有不妥,但不失其概念上的...

    附:VQ,PCA,NMF

    通俗点说,VQ是用一张完整的图像直接代表源脸部图像; PCA是将几个完整人脸加减压成一张脸;而NMF是取甲的眼睛,乙的鼻子,丙的嘴巴直接拼成一张脸。这样解释虽然细节上略有不妥,但不失其概念上的意义。

    一。非负矩阵分解(NMF)

    1.原理,应用简介

    什么是?
    NMF是由Lee和Seung在自然杂志上提出的一种矩阵分解方法,它使得分解后的所有分量均为非负值,并且同时实现非线性的维数约减。传统的矩阵分解大矩阵被分解V = WH形式。这些方法的共同点是,因子W和H中的元素可为正或负,但负值元素在实际问题中往往是没有意义的。例如图像数据中不可能有负值的; 在文档统计中,负值也是无法解释的。  

    基本思想:
    对于任意给定的一个非负矩阵A,NMF算法能够寻找到一个非负矩阵U和一个非负矩阵V,使得满足,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积。

    基本原理: 
    给定矩阵,寻找非负矩阵W和非负矩阵H,使得V = WH。 
    非负矩阵分解,即是将非负矩阵V分解为两个更小的阵阵W和H相乘。这里只是数值上的近似解。  分解前后可理解为:原始矩阵的列向量的英文对左矩阵中所有列向量的加权状语从句:,而权重系数就是右矩阵对应列向量的元素,故称为基矩阵,为系数矩阵。情况一般下的选择要比小,即满足,这时用系数矩阵代替原始矩阵,就可以实现对原始矩阵进行降维,得到数据特征的降维矩阵,从而减少存储空间,减少计算机资源。

    原理详解

    可以解决什么问题?
    NMF已逐步成为信号处理生物医学工程模式识别计算机视觉图像工程等研究领域中最受欢迎的多维数据处理工具之一。 
    发现数据库中的图像特征,便于快速自动识别应用; 发现文档中的语法县官渡,用于信息自动索引和提取; 在DNA阵列中识别基因。发现数据库中的图像特征,便于快速识别应用,比如实现录入恐怖分子的照片,然后在安检口对可疑人员进行盘查。 

    2.例举典型例子说明原理(包括步骤)

    最左边的大矩阵由一系列的小图组成,这些小图是分析数据库中包含的2429个脸部图像的结果,每幅图

    NMF分解结果与我们部分形成整体的直觉是相一致的。NMF学习出一种基于部分的表达。 

    主成成分分析的步骤

    (1)矩阵分解

    (2) 最优化。1.确定目标函数:欧几里德巨鹿或KL散度2.假设噪声服从高斯分布3.得到最大似然函数4.采用梯度下降法一直迭代,直到结果收敛

    (3)(4)(5)

    最后总结(可包括优缺点,应用条件,更多应用场景等)
    NMF的广泛应用,源于其对事物的局部特性有很好的解释。在众多应用中,NMF能被用于发现数据库中的图像特征,便于快速自动识别应用;能够发现文档的语义相关度,用于信息自动索引和提取;能够在DNA阵列分析中识别基因等等(更多应用

    有缺点:NMF分解算法相比于传统的一些算法而言,具有实现上的简便性,分解形式和分解结果上的可解释性,以及占用存储空间少等诸多优点。为高效处理这些通过矩阵存放的数据,一个关键的必要步骤便是对矩阵进行分解操作通过矩阵分解,一方面将描述问题的矩阵的维数进行削减,另一方面也可以对大量的数据进行压缩和概括
     参考博客:  柚子皮

     

    二.sk学习库代码

    展开全文
  • VQ语音识别

    2018-01-12 20:23:46
    采用VQ进行单个词语语音识别。先把语音进行预处理(滤波,端点检测等),然后进行MFCC变换。之后就是采用LBG分裂得到码本,用码本进行识别。
  • ##1. 什么是视觉问答VQA(Visual Question Answering) 给定一幅图片及与图片相关的问题,系统通过理解图片回答这个问题,它涉及到图像识别和自然语言理解。 比如这些例子: ...它是计算机视觉和自然语言处理问题...

    ##1. 什么是视觉问答VQA(Visual Question Answering)

    给定一幅图片及与图片相关的问题,系统通过理解图片回答这个问题,它涉及到图像识别和自然语言理解。

    比如这些例子:

     

    它是计算机视觉和自然语言处理问题的高级综合,目前该技术对盲人世界有很大的帮助。

    ##2. 相关数据集:

    textVQA : https://textvqa.org/

    VQA-v2数据集:https://visualqa.org/

    VizWiz数据集:http://vizwiz.org/data/

     

     

    视觉对话VisualDialog 数据集:  https://visualdialog.org/

    ##3.相关模型

    Pythia模型(VQA 的冠军),Pythia是一个深度学习框架,支持视觉和语言领域的多任务处理。基于开源PyTorch框架,模块化即插即用设计使研究人员能够快速构建,复制和基准测试AI模型。Pythia专为视觉和语言任务而设计,例如回答与视觉数据相关的问题并自动生成图像标题。

    https://learnpythia.readthedocs.io/en/latest/index.html

    https://github.com/facebookresearch/pythia

    ##4.相关挑战赛

    VQA 2019 Challenge,https://visualqa.org/challenge.html

    Vizwiz Challenge 2018,http://vizwiz.org/data/#challenge

     

     

     

     

     

     

    展开全文
  • EM算法训练GMM的Matlab实现过程(总结) 中 的vq_flat代码
  • 通过代码学习 VQ-VAE

    千次阅读 2019-06-30 15:24:28
    VQ-VAE(Vector Quantised Variational AutoEncoder,矢量量化变分自动编码)是【1】提出的一种离散化VAE方案,近来【2】应用VQ-VAE得到了媲美于BigGan的生成模型。由此可见, VQ-VAE 有着强大的潜力,且【1】和【2...
  • 关于VQ图像压缩

    千次阅读 2014-12-18 10:51:54
    VQ压缩方法中包括三个主要的步骤,分别是码书(code book)的产生、VQ编码和VQ解压缩。 其中码书(codebook )CB是通过LBG( )分类方法得到。CB是由N个k维度的码字(codeword) 组成(N=256,k=16),i=1,2,3,....N-...
  • 矢量量化(VQ

    2017-06-05 10:57:33
    前言VQ(Vector Quantization)是一个常用的压缩技术,本文主要回顾: 1)VQ原理 2)基于VQ的说话人识别(SR,speaker recognition)技术〇、分类问题说话人识别其实也是一个分类问题:说话人识别技术,主要有这几...
  • 矢量量化(VQ

    2017-05-31 23:17:00
    作者:桂。 时间:2017-05-31 21:14:56 ...VQ(Vector Quantization)是一个常用的压缩技术,本文主要回顾:  1)VQ原理   2)基于VQ的说话人识别(SR,speaker recognition)技术 〇、分类问题 ...
  • zbit flash数据手册ZB25VQ32B
  • AI换脸技术再创新高度,DeepMind发布VQ-VAE二代算法

    千次阅读 多人点赞 2019-06-07 20:40:48
    近日DeepMind发布VQ-VAE-2算法,也就是之前VQ-VAE算法2代,这个算法从感观效果上来看比生成对抗神经网络(GAN)的来得更加真实,堪称AI换脸界的大杀器,如果我不说可能相信读者也很难想象到下面这几幅人脸图像都是AI...
  • zbit flash数据手册ZB25VQ64A
  • VQ-VAE-2

    2020-04-01 17:27:35
    原文链接:Generating Diverse High-Fidelity Images with VQ-VAE-2 加载速度慢点这里:中科院镜像 由于科研需要,最近在学习图像生成相关的文献知识,VQ-VAE-2是我目前了解到的比较新的生成模型,一开始搜索到的...
  • VQ-VAE-2: Deepmind论文解读

    千次阅读 2019-07-16 15:42:08
    根据科技媒体的报道,最近deepmind的新模型VQ-VAE-2的生成效果甚至超过了BigGAN,作为生成模型的初学者,我知道GAN,知道AE和VAE,但是却对这篇文章的VQ没有了解。“这会是一种新的生成模型吗”—这个问题使我想一探...
  • VQ基本原理 矢量量化(VQ)的基本原理是将若干个标量数据组成一个矢量(或者从一帧语音数据中提取的特征矢量)在多维空间给予整体量化,从而可以在信息量损失最小的情况下压缩数据量。假设有N个K维的特征向量X={X1,X2,...
  • 基于VQ的特定人孤立词语音识别设计,给出了设计全过程和MATLAB程序。
  • 基于矢量量化(VQ)的说话人识别实验 训练过程: 从训练语音中提取特征矢量,得到特征矢量集合 通过LGB算法生成码本 重复训练进化 存储码本
  • 最近在看论文的时候看到一个名词 Vector Quantization
  • Scipy.cluster.vq.kmeans

    千次阅读 2018-04-13 20:19:39
    博文首文,最近做毕设挺不顺利的,就来写篇博文吧。本来想用pyhton来时间K-means聚类分析的,查了一下,可用的包有著名的机器学习的包:sklearn,但是我做的成果必须要集成到Arcmap这个软甲里面,这个包不知道为何在...

空空如也

1 2 3 4 5 ... 20
收藏数 8,836
精华内容 3,534
关键字:

vq