首页 > 其他分享 >特征量化编码入门指南

特征量化编码入门指南

时间:2024-01-08 17:32:53浏览次数:33  
标签:指南 编码 http 入门 特征 VQ 码字 空间 量化

推荐论文: https://arxiv.org/abs/2211.13745

 

论文摘要:本文研究了设备边缘协同推理系统中 CNN 推理的计算卸载。受新兴语义通信范式的启发,我们提出了一种新颖的基于自动编码器的 CNN 架构(AECNN),用于在终端设备上进行有效的特征提取。我们基于CNN中的通道注意方法设计了一个特征压缩模块,通过选择最重要的特征来压缩中间数据。为了进一步减少通信开销,我们可以使用熵编码来去除压缩数据中的统计冗余。在接收端,我们设计了一个轻量级解码器,通过学习接收到的压缩数据来重建中间数据,以提高准确性。为了加快收敛速度,我们使用分步方法来训练基于 ResNet-50 架构获得的神经网络。实验结果表明,AECNN 可以将中间数据压缩超过 256 倍,而精度损失仅为约 4%,优于最先进的工作 BottleNet++。与直接将推理任务卸载到边缘服务器相比,AECNN 可以更早地完成推理任务,特别是在无线信道条件较差的情况下,这凸显了 AECNN 在保证时间限制内更高准确性方面的有效性。

 

推荐论文+代码合集: https://paperswithcode.com/task/feature-compression

特征量化编码入门指南_码字

 

特征量化编码入门指南_向量量化_02

特征量化编码

量化编码目的就是压缩特征来节省它的存储空间的特征,这种高维的特征,它是个高维的浮点数把它变换成什么通过量化编码变成码字的一个ID,就是一个整数,这样不仅节省了空间,同时整数的运算要比浮点运算来得快,进行距离相似度的计算的时候效率高。量化编码之后的值通常是放在的特征索引的索引项里面。

量化方法:

比如像向量量化,k-means 这种算法,迪卡尔集型的码子空间的,比如像积量化,PQ,OPQ,LOPQ都属于这种积量化,还有直和型的残差向量量化 RVQ,还有 ELVQ ,增强型的向量量化,还有线性组合型的加性量化 AQ ,组合量化 CQ

整个的量化编码的目标就是使均方误差MSE最小,不能说量化之后是压缩了,但是误差很大,但它也就失去了出这个压缩的目的。量化的目的是数据变小,但是它的误差也要尽可能的小。方法不同,近20年有很多的算法出来,专门有一篇综述是讲的量化,感兴趣可以了解这篇综述。

 

 

 

特征量化编码入门指南_码字_03

 

量化编码

目的:压缩特征,节省存储空间

  • 向量(高维浮点)—-->码字的ID(一个整数)
  • 通常放在索引项中

量化方法

  • 向量量化VQ:k-means
  • 迪卡尔积型(码字空间)直和型:残差向量量化:RVQ
  • >积量化(PQ)/OPQ/LOPQ

  • 线性组合型:加性量化(AQ)、组合量化(CQ)

量化器目标:使均方误差(MSE)最小化

关于矢量量化(VQ):

矢量量化(VQ)是语音编码和图像编码节省带宽和存储的非常有效的方法。传统的矢量量化方法根据其码本生成过程主要可分为树形VQ、直和VQ、笛卡尔积VQ、格VQ、分类VQ、反馈VQ和模糊VQ七种类型。在过去的十年中,基于量化的近似最近邻(ANN)搜索发展非常迅速,并且出现了许多用于在大规模数据集的内存中搜索具有二进制代码的图像的方法。它们最令人印象深刻的特点是使用多个密码本。这就导致了两种码本的出现:线性组合码本和联合码本。这可能是未来的一个趋势。然而,这些方法只是在 ANN 搜索的速度、准确性和内存消耗之间寻找平衡,有时这三者之一会受到影响。因此,寻找一种能够在速度和精度之间取得平衡并且占用内存大小适中的矢量量化方法仍然是一个需要研究的问题。

以这种笛卡尔积型,积量化那么为例:

积量化是一个分段量化方法,每一段,它有一个的量化器。比如说原始的特征,把它分成若干段。分成多少段,通常这个段的数量要要能够整除原来的这种特征的维数。

特征量化编码入门指南_向量量化_04

 

迪卡尔积型(码字空间):积量化(Product Quantizer,PQ)

• 分段量化,每段一个VQ量化器

• 量化结果=各子量化结果的串连

• 码字空间=各子码书空间的直积

• 效果

      以较小的空间开销得到了较大的码字空间

 

 

特征量化编码入门指南_ide_05

 

这是一个N乘128位,比如说N乘以128维的特征向量。

有了这个以后,就把这个特征分段,比如说这里边分成四段,原来的128位分成四段,每一段就是32位,在每一段里边对他进行量化,比如说在Q里面,K等于256,就是取 K均值。

相当于把这个特征聚类成256个集合。这样的组合成这不就有4乘256个。最终的集合那么最终出来的这样话以后就把一个乘维的特征转换成了乘以4 的整数。二百五十六可以用二进制数值八位表示。如果是十进制数就是0到256,最后这个值其实就是这么一个矩阵。250 ,乘以里首先他为数原来是乘以128,现在维数大幅降低,降低了三十二倍,原来是 128 ,现在是 4 。里面原来存在的浮点数现在是八位的二进制数。这里面的数字其实就是聚类的集合它的符号,是哪个集合,取得越大特征分的这个集合越小,它的误差就越小,因此K 不能取太小,小了以后分的太粗,误差就会很大。那么这样做完之后,就对每一个特征,都给它分配了应的集合。256个C其实就是这样的数字。就把这128维这样的特征转换成了量化编码后的整数。

索引里面检索里面用起来就方便,如果说觉得只保留了它集合的至心的话。相当于集合的编号,它的数字还不够准确,还可以继续,比如说直和型就是残差量化,就是存的不是这个集合的至心,是实际的这个落在这个集合里面,再去跟那个中心求一个差,把这个差值求下来,如果这个差值,再对它进行的量化,又对这个差进行分组,逐级去分可以叠加,最终使这个误差就会更就是多层级量化,后层以前层的残差作为输入,量化结果就等于各层量化结果的和。码字空间就等于各层的码数空间的和,这么做是准确性会提高,但是占用的空间也会增大,但是它是和关系,不是积的关系。

特征量化编码入门指南_ide_06

 

直和型:残差向量量化(RVQ)

  • 多层级联量化
  • 后层以前层的残差作为输入
  • 量化结果=各层量化结果之和
  • 码字空间=各层码书空间的直和
  • 层数越多,量化误差越小

层数越多量化的误差就越小,还有像线性组合就有多个码书,量化结果就是各个码书量化结果之和。码数的空间就等于各个码数空间的直接相加。比如说量化方法不同就生成了多个码书。

 

特征量化编码入门指南_ide_07

 

线性组合型:AQ

• 具有多个码书

• 量化结果=各码书量化结果之和

• 码字空间=各子码书空间的直和

特征量化编码入门指南_码字_08

这是不同的量化方法在同一个这种数据集上它的效果,比如说检测图像,它的准确率,它的召回率,它的性能。

比如说,100个里面。能够反馈个多少真实的结果,它性能的对比,不同的量化方法它的性能是不一样的。比如说Q那么它的效果是不错的,但是它的怎样。再往后看它不同的算法,有的是层数不同,有的是里面的这种量化器的设计不同,就是说最后的效果也不尽相同。

在选择的时候注意,是牺牲空间,还是适当的牺牲一点点的精度。如果把整个的量化方法复杂度提高了,但这个倍数太大,提高的这个精度很小,建议不要把这量化的这个方法搞得太复杂,除非牺牲算法的复杂度,空间的这种复杂度提高的换来的是值得的查询精度。关于量化还可以去深入的分析,这篇综述介绍了截止到去年到现在,不同的量化方法的优缺点。

 

特征量化编码入门指南_码字_09

 

 

相关网站:

(1) TRECVID:

http://trecvid.nist.gov

, Digital Video Retrieval at NIST

(2) Video Olympics:

http://www.videolympics.org/

(3) Video Collection:

http://www.open-video.org

(4) Leonardo’ s Project:

http://www.chiariglione.org

(5) MPEG:

http://www.mpeg.org

(6) Information Organization & Retrieval:

http://www2.sims.berkeley.edu/courses/is202/f01/index.html

(7) Movie Tools:

http://www.ricoh.co.jp/src/multimedia/MovieTool/index.html

(8) vdbms Project:

http://www.cs.purdue.edu/vdbms/

(9) DirectShow:

http://www.codeproject.com/KB/directx/directshownet.aspx



标签:指南,编码,http,入门,特征,VQ,码字,空间,量化
From: https://blog.51cto.com/sddai/9147815

相关文章

  • 【LLM】大型语言模型:2023年完整指南
    Figure1:Searchvolumesfor“largelanguagemodels”近几个月来,大型语言模型(LLM)引起了很大的轰动(见图1)。这种需求导致了利用语言模型的网站和解决方案的不断开发。ChatGPT在2023年1月创下了用户群增长最快的记录,证明了语言模型将继续存在。谷歌对ChatGPT的回应Bard于2023年2月......
  • 深度学习的算法:从自动编码器到生成对抗网络
    1.背景介绍深度学习是一种人工智能技术,它旨在模拟人类大脑中的神经网络,以解决复杂的问题。深度学习的算法通常包括自动编码器、生成对抗网络和其他算法。这篇文章将详细介绍这两种算法的原理、数学模型和实例代码。1.1深度学习的历史和发展深度学习的历史可以追溯到1940年代的人工......
  • 生成对抗网络与变分自编码器:比较与应用
    1.背景介绍生成对抗网络(GenerativeAdversarialNetworks,GANs)和变分自编码器(VariationalAutoencoders,VAEs)都是深度学习领域的重要算法,它们在图像生成、数据增强、降噪等方面具有广泛的应用。这篇文章将从背景、核心概念、算法原理、实例代码、未来发展等多个方面进行全面的介绍和......
  • 稀疏自编码与图像关键点检测的结合:提高检测准确率的方法
    1.背景介绍图像关键点检测是计算机视觉领域的一个重要研究方向,它旨在从图像中自动识别和提取具有代表性的特征点,如人脸、车牌、车身等。这些关键点通常具有较高的梯度值、对称性和局部最大值特征,因此在图像处理、图像识别、图像增强等应用中具有重要意义。传统的图像关键点检测方法......
  • 不同国家玩具法规要求指南
    美国站要求:在美国,所有面向12岁及以下儿童的玩具必须符合联邦安全标准,包括:●ASTMF963-16/-17●消费品安全改进法案(CPSIA)亚马逊可能随时要求提供玩具安全文件,确认其符合规定。如果亚马逊与您联系,请将以下信息提交至亚马逊:●公司名称;●卖家编号/供应商编号;●电子邮件地址;●电话号......
  • C 语言函数完全指南:创建、调用、参数传递、返回值解析
    C语言中的函数函数是一段代码块,只有在被调用时才会运行。您可以将数据(称为参数)传递给函数。函数用于执行某些操作,它们对于重用代码很重要:定义一次代码,并多次使用。预定义函数事实证明,您已经知道什么是函数了例如,main()是一个函数,用于执行代码,printf()也是一个函数,用于向屏......
  • 《基于树莓派和Arduino入门机器人学:使用Python和OpenCV》-第二版
    书籍:BeginningRoboticswithRaspberryPiandArduino:UsingPythonandOpenCV,2nd作者:JeffCicolani出版:Apress本文内容转载自公众号【一点人工一点智能】关注51CTO@一点人工一点智能,了解更多移动机器人&人工智能信息01 书籍介绍学习如何使用树莓派与Arduino结合来构建具有先......
  • Java中DTO和VO的使用指南
    @[TOC]Java中DTO和VO的使用指南在Java开发中,DTO(DataTransferObject)和VO(ValueObject)是两个常见的设计模式,它们在不同的上下文中有着不同的用途。本文将深入讨论DTO和VO的概念、用途以及在实际项目中的使用方法。1.DTO(数据传输对象)DTO是一种用于在不同层之间传递数据的对象,其主要......
  • Excel密码遗失?轻松取消表格保护的实用指南!
    糟糕!加密了的Excel忘记了密码,怎么解开啊?在我们日常工作或者是学习时候,Excel会被经常使用到。我们会通过网络将Excel发送给其他人,但是有时候,为了公司的数据安全或者是保护隐私,防止别人随意修改数据或者是复制数据,通常的办法是给Excel表格加上密码。时间久了,有时候会忘记了密码,怎么......
  • Docker 入门-常用命令
    dockerpull用于从远程镜像仓库(比如DockerHub)拉取镜像的命令。基本语法是dockerpull[选项][镜像名称]:[标签]。例如,dockerpullnginx:latest将会从DockerHub拉取名为nginx的镜像,使用latest标签。如果不指定标签,默认会拉取latest标签的镜像。当然,也可以指定镜像仓......