VQ & Kmeans

VQ(vector quantization)应用最多的是在信号处理的领域,常用于将模拟信号值转为数字信号(计算机可以处理的形式)。目前vq在深度学习上也有应用,比较典型的是近两年出现的vq-vae模型,其中vq模块实现了将连续的embedding映射到离散的codebook上,获得了更加鲁棒的特征,也有人对转换后的特征的可解释性做了实验,比如用在speech上获得的特征理解成phoneme的feature。这里贴两篇典型的vq应用的paper日后填坑。

vq-vae-2 (image generation)
vq-wav2vec: Self-Supervised Learning of Discrete Speech Representations

Kmeans不做多的解释,机器学习unsupervised方法的典型方法,用于数据压缩,稀疏特征的预处理等。聚类方法与vq结合,聚类得到的 centroids 即为vq中的 codebook。

VQ&Kmeans在图片压缩上的应用

代码

from scipy.cluster.vq import kmeans, vq
from numpy import array, reshape, zeros
from PIL import Image
import numpy as npvqclst = [2, 5, 10]  # 聚类centroids个数,聚类后的颜色总数im = Image.open('photos/example.jpg')
data = np.array(im).astype(np.float32)(width, height, channel) = data.shape
data = reshape(data, (height*width, channel))for k in vqclst:print ('Generating vq-%d...' % k)# kmeans to get centroids (codebook)(centroids, distor) = kmeans(data, k)   # (k, n), float# vq to get code of each pixel(code, distor) = vq(data, centroids)    # (n, ), (n, )im_vq = centroids[code, :]im_vq = im_vq.reshape(width, height, channel).astype(dtype=np.uint8)new_img = Image.fromarray(im_vq)new_img.save('converted/%d-example.jpg' % k)  # save the picture

还有另一种implementation, 来自sklearn官方demo。

输出结果

漫谈 Clustering (番外篇): Vector Quantization
Color Quantization using K-Means

VQ+Kmean实现图片压缩相关推荐

  1. Android性能优化之图片压缩优化

    1 分类 Android图片压缩结合多种压缩方式,常用的有尺寸压缩.质量压缩.采样率压缩以及通过JNI调用libjpeg库来进行压缩. 参考此方法:Android-BitherCompress 备注: ...

  2. JS—图片压缩上传(单张)

    *vue+webpack环境,这里的that指到vue实例 <input type="file" name="file" accept="ima ...

  3. 使用libjpeg进行图片压缩(哈夫曼算法,无损压缩)

    Huffman算法也是一种无损压缩算法,但与LZW压缩算法不同,Huffman需要得到每种字符出现概率的先验知识.通过计算字符序列中每种字符出现的频率,为每种字符进行唯一的编码设计,使得频率高的字符占 ...

  4. Android图片压缩(质量压缩和尺寸压缩)

    在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩):质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手 ...

  5. android apk瘦身之 图片压缩 tinypng

    Android 的图片压缩其实压缩比很小.tinypng 大概可以压缩20%左右,我们工程的所有图片,之前是860k,压缩之后620k,少了200k. 使用: 1.安装python 2.使用pip进行 ...

  6. (0031) iOS 开发之图片压缩

    1. Aspect单词的, 都会按照图片的宽高比来拉伸.这样会显示不全照片 2. Scale单词的,都会对图片进行拉伸(缩放); 3. 没有出现Scale单词的,都不会对图片进行拉伸; UIViewC ...

  7. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )

    文章目录 一. 哈夫曼编码开关 二. 哈夫曼编码原理 三. libjpeg-turbo 函数库 四. libjpeg-turbo 函数库下载 [Android 内存优化]图片文件压缩 ( Androi ...

  8. 【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )

    文章目录 一. 图片质量压缩方法 二. Skia 二维图形库 三. libjpeg.libpng 函数库引入 在博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供的 ...

  9. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )

    文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...

最新文章

  1. 《大道至简》第六章读后感
  2. 统计学习方法笔记(二)-kd树原理及python实现
  3. 【面试虐菜】—— JAVA面试题(3)
  4. 【毕业求职季】-听说你想去大厂看学妹,教你京东软件产品经理面试如何一把过
  5. 1 第一次画PCB总结
  6. python ffmpy3与FFmpeg的安装
  7. Python学习入门基础教程(learning Python)--1.2.1 Python输出语句print基本使用 .
  8. boost线程(二)
  9. ABBYY FineReader 12PDF选项卡之图像及文字设置
  10. 里式替换(LSP)跟多态有何区别?
  11. 【已解决】QQ异地登录,设备型号lya,设备名称LYA-AL10
  12. 怎么注册自定义域名Email.cn邮箱?
  13. 用VSCode打开带图片的.md文件
  14. 基于jsp+mysql+Spring+SpringMVC+mybatis的ssm生鲜超市进销存管理系统
  15. Java之socket网络编程
  16. k8s pod基础概念
  17. 编程之美 - 中国象棋将帅问题
  18. Deferred Shading VS Deferred Lighting
  19. PADS 在 Windows 11 下闪退解决方法
  20. echarts画市县乡镇级地图

热门文章

  1. 微信小程序小白入门开发教程(第二弹)
  2. 领域知识对测试人员的重要性
  3. SAP 绝密小技巧大全
  4. 浅谈故障电弧探测器在建筑电气的应用-安科瑞 蒋静
  5. 银行客户管理系统的实现
  6. Delphi版本的淘宝接口(TopAPI)开发
  7. 新人入职三个月,今天是想辞职的第25天
  8. Window批量修改文件名
  9. CMS 盘状介孔二氧化硅SBA-15/有序介孔氧化硅SBA-15粉体/SBA-15型介孔二氧化硅微球/氨基与羧基功能化修饰介孔SiO2(SBA-15)
  10. idea软件 springboot项目启动报错:命令行太长解决