-
二维haar小波matlab_Wavelet Pooling小波池化的思考
2021-01-09 17:40:40本文主要针对Wavelet pooling for convolutional neural networks,ICLR 2018. 简而言之,我认为这篇文章存在一些问题,当然可能是自己理解有误。于是把自己的看法分享出来,希望各位批评指正。论文地址:Wavelet ...本文主要针对Wavelet pooling for convolutional neural networks,ICLR 2018. 简而言之,我认为这篇文章存在一些问题,当然可能是自己理解有误。于是把自己的看法分享出来,希望各位批评指正。
论文地址:
Wavelet Pooling for Convolutional Neural Networksopenreview.net论文讲了什么?
首先,池化是以舍弃信息来实现正则化的效果。传统的池化操作有问题。max pooling, average pooling和probabilistic pooling都有一些局限性。例如,当主要的特征幅度值低于不重要的特征时,重要的特征在max pooling中就丢失了。而average pooling接收了幅值大的特征和幅值小的特征,会稀释幅值大的特征。具体如图所示,
于是相对于traditional neighborhood pooling,这篇文章从wavelet domain进行操作。具体来说,首先介绍了如何变换到wavelet domain,
这两个公式(6) (7)分别是小波变换的近似函数和细节函数,分别用于计算输入map的低频子带和高频子带。二维的输入分别在行方向和列方向应用这两个公式,于是得到四个子带LL,LH,HL和HH。其中LL表示低频特征,其余带H的表示高频特征。由于小波变换引入了下采样,因此四个子带map的边长是输入的一半。反变换可以将四个子带完美地重建出输入。
小波变换可以进行多级。对于输入map I,一级小波变换记为
LL1, LH1, HL1, HH1 = DWT(I)
对应的逆变换为
I = IDWT(LL1, LH1, HL1, HH1)
二级小波变换针对LL1,为
LL2, LH2, HL2, HH2 = DWT(LL1)
对应的逆变换为
LL1 = IDWT(LL2, LH2, HL2, HH2)
介绍完这些基本知识,来看文章的方法是怎样的:
文章没有给出公式表达,我用公式总结一下。对于输入图像I,进行两级小波变换,得到了
LL2, (LH2, HL2, HH2), (LH1, HL1, HH1) = DWT(DWT(I))
舍弃最高频的子带LH1, HL1和HH1,保留相对低频的LL2, (LH2, HL2, HH2)。最后对保留的二级小波系数进行反变换重建池化后的图像,即
I‘ = IDWT(LL2, LH2, HL2, HH2)
根据之前对小波变换的介绍,不难发现I‘=LL1。所以为什么要对输入图像I进行两次小波变换,再进行一次逆变换呢?进行一次小波变换,舍弃(LH1, HL1, HH1),保留LL1不就完成了小波池化吗?这两种做法有什么区别?我是觉得完全相同。
另外一个槽点在于,文章的实验只使用了Haar小波基。Haar小波基产生的LL1分量对应的卷积核为[[1, 1], [1, 1]],这和average pooling没有任何区别呐。文章开始说average pooling具有的缺点,文章实验用的方法也逃不掉。然后,实验结果是不相同的。
当然这个思路(进行一次小波变换,舍弃(LH1, HL1, HH1),保留LL1)已经发表在了ECCV 2018 Workshop了,论文题目为Multiple Wavelet Pooling for CNNs。另外Haar小波基等同于average pooling的问题也被消除了——该文选取了两种不同的小波基做pooling然后concat起来。这样,就算用了Haar小波基,另一个小波基也能产生不同于average pooling的效果。
Multiple Wavelet Pooling的故事听着合理多了,但我仍然想不明白Wavelet Pooling的作者为什么要做两次正再做一次逆变换,是不是有什么理解不到位的地方,于是抱着求证的心态就去联系作者了。为了更高效的交流,我把自己的理解拆分成yes或no的选择来征求作者的意见。例如,我这样理解wavelet pooling是否正确,haar-based wavelet pooling和average pooling的输出是否相等,如果只用haar bases的话wavelet pooling和multiple wavelet pooling输出相同等等。作者没有正面回复所有问题,而是回答的比较宏观,给了几张图像(分别是wavelet pooling的输出,average pooling的输出)和对应代码,通过这几张图的不同来说明haar wavelet pooling和average pooling是不相同的。但我检查了代码,发现wavelet pooling的小波基参数是'db2'而非‘haar’小波基,这结果当然是不同的。于是我将修改成haar小波基的结果(跟average pooling相同)反馈给他并指出代码的问题。这轮依然没有正面回应yes或no的问题,而是
感觉作者并不想理我了 。作为一个强迫症,就把自己的想法分享出来,想和大家讨论确认下。
Reference:
[1] Williams, Travis, and Robert Li. "Wavelet pooling for convolutional neural networks." ICLR2018.
[2] Liu, Pengju, et al. "Multi-level wavelet-CNN for image restoration."Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops. 2018.
-
论文研究-Mining Correlations between Multi-Streams Based on Haar Wavelet.pdf
2019-08-21 05:57:10基于Haar小波挖掘多个数据流的相关性,陈安龙,唐常杰,在涉及多个流数据的应用中,流之间的相关性非常重要, 此文的工作包括 (1)引入了带过滤的全序概念,利用小波的压缩特性,描述数据流 -
小波变换简单实例——哈尔小波变换(Haar wavelet transform)
2014-01-14 17:22:00小波变换的基本思想是用一组小波函数或者基函数表示一个函数或者信号,例如图像信号。为了理解什么是小波变换,下面用一个具体的例子来说明小波变换的过程。 1. 求有限信号的均值和差值 [例8. 1] 假设有一幅...小波变换的基本思想是用一组小波函数或者基函数表示一个函数或者信号,例如图像信号。为了理解什么是小波变换,下面用一个具体的例子来说明小波变换的过程。
1. 求有限信号的均值和差值
[例8. 1] 假设有一幅分辨率只有4个像素 的一维图像,对应的像素值或者叫做图像位置的系数分别为:
[9 7 3 5]
计算它的哈尔小波变换系数。计算步骤如下:
步骤1:求均值(averaging)。计算相邻像素对的平均值,得到一幅分辨率比较低的新图像,它的像素数目变成了2个,即新的图像的分辨率是原来的1/2,相应的像素值为:[8 4]
步 骤2:求差值(differencing)。很明显,用2个像素表示这幅图像时,图像的信息已经部分丢失。为了能够从由2个像素组成的图像重构出由4个像 素组成的原始图像,就需要存储一些图像的细节系数(detail coefficient),以便在重构时找回丢失的信息。方法是把像素对的第一个像素值减去这个像素对的平均值,或者使用这个像素对的差值除以2。在这个 例子中,第一个细节系数是(9-8)=1,因为计算得到的平均值是8,它比9小1而比7大1,存储这个细节系数就可以恢复原始图像的前两个像素值。使用同 样的方法,第二个细节系数是(3-4)=-1,存储这个细节系数就可以恢复后2个像素值。因此,原始图像就可以用下面的两个平均值和两个细节系数表示,
[8 4 1 -1]
步骤3:重复第1,2步,把由第一步分解得到的图像进一步分解成分辨率更低的图像和细节系数。在这个例子中,分解到最后,就用一个像素的平均值6和三个细节系数2,1和-1表示整幅图像。
[6 2 1 -1]
这个分解过程如表8-1所示。
表8-1 哈尔变换过程
分辨率
平均值
细节系数
4
[9 7 3 5]
2
[8 4]
[1 -1]
1
[6]
[2]
由此可见,通过上述分解就把由4像素组成的一幅图像用一个平均像素值和三个细节系数表示,这个过程就叫做哈尔小波变换(Haar wavelet transform),也称哈尔小波分解(Haar wavelet decomposition)。这个概念可以推广到使用其他小波基的变换。
从这个例子中我们可以看到:
① 变换过程中没有丢失信息,因为能够从所记录的数据中重构出原始图像。
② 对这个给定的变换,我们可以从所记录的数据中重构出各种分辨率的图像。例如,在分辨率为1的图像基础上重构出分辨率为2的图像,在分辨率为2的图像基础上重构出分辨率为4的图像。
③ 通过变换之后产生的细节系数的幅度值比较小,这就为图像压缩提供了一种途径,例如去掉一些微不足道的细节系数并不影响对重构图像的理解。 -
弱水三千,只取一瓢,当图像搜索遇见PostgreSQL(Haar wavelet)
2016-07-26 20:04:36背景 图片搜索是继文字搜索后又一个比较常用的搜索引擎。 市面上常见的搜索引擎有谷歌、...例如在搜索引擎提供的接口中上层了一张雪人的图片,搜出来一堆和雪人近似的图片。 图片搜索是怎么做到的呢? 万能的Pos...背景
图片搜索是继文字搜索后又一个比较常用的搜索引擎。
市面上常见的搜索引擎有谷歌、百度、搜狗等图片搜索引擎。
http://image.baidu.com/
http://images.google.com.hk例如在搜索引擎提供的接口中上层了一张雪人的图片,搜出来一堆和雪人近似的图片。
图片搜索是怎么做到的呢?
万能的PostgreSQL绝不落下这么好玩的东东,通过PG万能的API,可以扩展它的图片搜索功能。
如果你对PostgreSQL扩展开发感兴趣,可以参考我写的文章
《找对业务G点, 体验酸爽 - PostgreSQL内核扩展指南》
https://yq.aliyun.com/articles/55981PostgreSQL 图像搜索插件背景技术
PostgreSQL的图像搜索插件使用了非常主流的Haar wavelet技术对图像进行变换后存储,可以参考WIKI和一篇关于HW的文献。
https://en.wikipedia.org/wiki/Haar_wavelet
http://www.cs.toronto.edu/~kyros/courses/320/Lectures.2013s/lecture.2013s.10.pdf
截取几页,注意烧脑。PostgreSQL 图像搜索插件介绍
依赖gd.h
# yum install -y gd-devel
下载安装imgsmlr
$ git clone https://github.com/postgrespro/imgsmlr $ cd imgsmlr $ export PGHOME=/home/digoal/pgsql9.5 $ export PATH=$PGHOME/bin:$PATH:. $ make USE_PGXS=1 $ make USE_PGXS=1 install
安装插件
$ psql psql (9.5.3) Type "help" for help. postgres=# create extension imgsmlr; CREATE EXTENSION
imgsmlr新增了两个数据类型
Datatype Storage length Description pattern 16388 bytes Result of Haar wavelet transform on the image signature 64 bytes Short representation of pattern for fast search using GiST indexes gist 索引方法(支持pattern和signature类型), 以及KNN操作符,可以用于搜索相似度
Operator Left type Right type Return type Description <-> pattern pattern float8 Eucledian distance between two patterns <-> signature signature float8 Eucledian distance between two signatures 新增了几个函数
将图像的二进制转换为pattern类型,将pattern中存储的数据转换为signature类型Function Return type Description jpeg2pattern(bytea) pattern Convert jpeg image into pattern png2pattern(bytea) pattern Convert png image into pattern gif2pattern(bytea) pattern Convert gif image into pattern pattern2signature(pattern) signature Create signature from pattern shuffle_pattern(pattern) pattern Shuffle pattern for less sensitivity to image shift PostgreSQL 图像搜索插件测试
导入一些图片,例如(越多越好)
建立图片表
create table image (id serial, data bytea);
导入图片到数据库
insert into image(data) select pg_read_binary_file('文件路径');
将图片转换成 patten 和 signature
CREATE TABLE pat AS ( SELECT id, shuffle_pattern(pattern) AS pattern, pattern2signature(pattern) AS signature FROM ( SELECT id, jpeg2pattern(data) AS pattern FROM image ) x );
创建索引
ALTER TABLE pat ADD PRIMARY KEY (id); CREATE INDEX pat_signature_idx ON pat USING gist (signature);
近似度查询,例如查询与id = :id的图像相似的图像,按相似度排行,取出前10条
SELECT id, smlr FROM ( SELECT id, pattern <-> (SELECT pattern FROM pat WHERE id = :id) AS smlr FROM pat WHERE id <> :id ORDER BY signature <-> (SELECT signature FROM pat WHERE id = :id) LIMIT 100 ) x ORDER BY x.smlr ASC LIMIT 10
这里可以用到KNN索引,快速按相似度排行输出结果。
小结
- PostgreSQL是一个非常强大的数据库,功能高度可定制。而且不需要动到PostgreSQL的内核。 安全可靠。
- 使用图像搜索的技术就是PostgreSQL功能扩展的例子,速度杠杠的,还记得我以前给出的关于地理位置近邻查询的性能指标吗。
《PostgreSQL 百亿地理位置数据 近邻查询毫秒级反馈》
https://yq.aliyun.com/articles/2999
- 如果你对PostgreSQL扩展开发感兴趣,可以参考我写的文章
《找对业务G点, 体验酸爽 - PostgreSQL内核扩展指南》
https://yq.aliyun.com/articles/55981
祝大家玩得开心,欢迎随时来 阿里云促膝长谈 业务需求 ,恭候光临。
阿里云的小伙伴们加油,努力做 最贴地气的云数据库 。
-
关于Haar名称一点想说的:Haar而非Harr
2014-04-14 12:54:36 -
Wavelet Toolbox Getting Started MATLAB官方
2014-10-31 16:17:21Haar Daubechies Biorthogonal Coiflets Symlets Morlet Mexican Hat Meyer Other Real Wavelets Complex Wavelets References 2 Using Wavelets Introduction to Wavelet Toolbox GUIs and ... -
利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测
2016-08-01 16:38:17级联分类器是将若干个分类器进行连接,从而构成一种多项式级...Haar特征是由M.Oren,C.Papageorgious等人在论文“Pedestrian detection using wavelet templates”中首次提出的,后续经过改进与发展,C.H.Messom和A.... -
matlab实现haar小波分解
2012-05-01 09:31:21从源代码的角度实现了小波的haar分解,有利于初学者对小波分解的理解,不单纯的使用matlab wavelet工具箱 -
基于物理的渲染—基于Haar小波基的实时全局光照明
2018-02-05 14:40:00今天介绍的这篇文章是 Ren Ng 等人在2003年发表于 Siggraph 会议上的经典论文 《All-Frequency Shadows Using Non-linear Wavelet LightingApproximation》,目前该篇文章的引用次数已经超过400次。在这篇论文中,... -
【人脸识别(五)】:基于Haar+Adaboost的人脸检测算法,及实例教程
2020-05-03 21:03:34看了很多的文章,认为liulina603和nk_wavelet对adaboost算法讲解的比较详细,查阅相关资料后,本文将介绍haar+adaboost算法理论和具体实现。 adaboost由来 adaboost方法是Boosting方法的提升版,Boosting方法又... -
小波变换——哈尔小波,Haar
2019-04-15 17:31:00哈尔小波转换是于1909年由Alfréd Haar所提出,是小波变换(Wavelet transform)中最简单的一种变换,也是最早提出的小波变换。 Alfréd Haar,1885~1933,匈牙利数学家。哥廷根大学博士,导师是David ... -
wavelet theory an elementary approach with applications
2018-11-16 08:51:31我看过的最深入浅出的小波书籍:该书以haar小波为具体实例逐步扩展,既有实例,也有理论深入! -
SSE2实现HAAR小波变换(dwt2与idwt2)
2016-04-14 16:15:55wiki链接:http://en.wikipedia.org/wiki/Haar_wavelet 可用SSE2实现HAAR小波变换,达到实时,关于HAAR小波的介绍可参考以上维基链接 参考MATLAB中dwt2与idwt2的函数原型,基于OpenCV的框架进行了汇编优化... -
haar小波_【Matlab】小波变换降噪
2020-11-24 10:09:32Matlab 小波变换降噪小波...首先我们新建wavelet_demo.m文件清除之前的代码:clc;clear;加载数据集:%加载数据集loadleleccum;%设置窗口标题figure('Name',"WaveletReconstruction");首先显示原来的信号:subplot(3,... -
matlab小波变换图像处理实现程序_基于matlab的小波分析应用
2020-12-16 11:19:19到学校的维普网上查找基于形态学的小波变换图像去噪方法研究论文 matlab小波变换图像处理实现程序 %这个是2D-DWT的函数是haar小波 %c是图像像素矩阵 steps是变换的阶数 function dwtc = dwt_haar(c, steps) % DWTC =... -
ImageNet和CNN可以帮助医学图像的识别吗?
2016-10-27 00:05:111.从ImageNet和CNN说起 图像的分类和识别一直是计算机视觉的...在典型的图像分类和识别问题中,通常有两个重要的步骤,一个是特征提取,常见的有GLCM, HOG, LBP, Haar Wavelet, 一个是分类器, 例如SVM, Random Fo -
嵌入式系统/ARM技术中的嵌入式软件系统设计中的正交性
2020-11-15 21:45:391 小波漫谈 小波变换是20世纪最辉煌...20世纪 70年代,当时在法国石油公司工作的地球物理学家 Jean Morlet提出了小波变换 WT(Wavelet Transform)的概念。 进入 20世纪 80年代,法国科学家 Y.Meyer和他的同事开始研究系 -
图像处理中小波变换的学习笔记
2019-07-15 13:04:121 前言 今天看CV的文献,看到了“Haar-wavelet”,感觉跟小波变换应该有关系,所以觉得应该学习一下。 2小波变换介绍 刚刚看完哈尔变换。 -
ImageNet和CNN怎样帮助医学图像的识别
2017-05-05 16:28:27从ImageNet和CNN说起 图像的分类和识别一直是计算机视觉的...在典型的图像分类和识别问题中,通常有两个重要的步骤,一个是特征提取,常见的有GLCM, HOG, LBP, Haar Wavelet, 一个是分类器, 例如SVM, Random Forest -
PostgreSQL 在视频、图片去重,图像搜索业务中的应用
2016-11-30 14:11:37摘要: PostgreSQL 在视频、图片去重,图像搜索业务中的应用作者digoal日期2016-11-26标签PostgreSQL , Haar wavelet , 图像搜索 , 图片去重 , 视频去重背景图像处理的业务场景比较多,例如 图像搜索、视频去重、... -
一种同态加密域图像可逆水印算法
2021-03-03 03:51:25因此,本文提出了一种基于 Haar-DWT(Haar-Discrete Wavelet Transform)的同态加密域中的图像可逆水印技术:1)通过利用数据搬移及量化的方法,分别解决了 Haar-DWT 过程中可能遇到的负数和小数问题,实现了加密域的... -
PostgreSQL视频去重 图片去重系列1
2018-04-13 17:53:00PostgreSQL在视频、图片去重,图像搜索业务中的应用图片搜索PostgreSQL的图像搜索插件使用了非常主流的Haar wavelet技术对图像进行变换后存储gist 索引方法(支持pattern和signature类型), 以及KNN操作符,可以用于... -
图像工作回顾之四:图像检索
2013-01-22 23:11:182007年在创业公司做基于内容的图像检索,用于...花点时间复原出原来程序的样子,实现了基于颜色(Histogram/Color Structure/Dominant Color)、形状(Haar Wavelet/Contour Based Shape Descriptor)、纹理(Homo -
小波
2015-03-15 13:16:23定义:wavelet是指小型波(在傅里叶分析里的弦波是大型波),简单说来,小波(wavelet)是一个衰减迅速的振荡。 小波函数:小波只有时域表示,作为小波函数。例如墨西哥帽小波。 小波历史: 1909年: 第一个小... -
脑王水哥王昱珩惜败人工智能, 这不可能. - 图像识别到底是什么鬼
2017-01-22 09:34:12PostgreSQL , haar wavelet , 图像识别 , 人工智能 , 动态图像识别 , 最强大脑 背景 水哥王昱珩不用多介绍,在最强大脑第六期晋级赛第五场,在“微观辨水”环节中,520杯同质同量同水源的水被他一眼辨认出,Dr.魏...