前言
作为井底之蛙,其实一直对业界的动态不是很了解,幸好有老师指点,看了西北工大谢磊教授对他们研究成果的介绍,领略了神经网络在语音增强领域取得的重大进展。这期间最瞩目的莫过于DCCRN在DNS-Challenge竞赛中取得的好成绩,遂求锤得锤的学习一下。
一根藤上5个瓜
这个神级网络也是吸收了很多优秀的成果,所以研究他之前,先要顺着藤摸一摸U-NET,DCU-NET,CRN。同时也需要深入的理解复数卷积如何实现。
U-NET
U-net网络的命名来自于自身的拓扑结构,论文【10】提出的网络如下:
这里对原图稍稍加工了一下,这样看来很像一个去噪的自编码器,但是原论文是用来做图像切分的,似乎和降噪完全不着边,另外输出和输入的维度信息也不一样。此处稍有不明的是所谓的UP-CONV是我理解的转置卷积么?但是原模型是基于matlab实现的【11】,暂不去深挖了。
CRN
CRN 即融合了卷积和循环神经网络的一种编码器结构【3】,框图引自论文:
可以看出自编码器框架特别的适合降噪范式的训练。操练【3】的代码得到tensorboard结果来看已经很带感了。
作者Ke Tan(估计是导师Deliang Wang)再接再厉,提出了带相位信息的CRN【18】,如果上文提出的框架是下图:
那么直接将实部和虚部(联想一下RBG三色层图像的输入)作为两层输入,那么结果是不是可以训练出等价的增强后的输出呢?
作者在此基础上又提出了abcd的变种,其中d的设计已经要脱离原来的实数系思考了,篇幅所限不做展开学习。
DEEP COMPLEX NETWORKS
可能最烧脑的还是复数神经网络,考虑以此文【16】为主干,把复数计算,以及如何搭建复数DL网络了解一下,复数有实部虚部
z
=
a
+
i
b
z=a+ib
z=a+ib,复数的加减很容易,但复数的乘除法就比较难哩。如果假设另一个复数
k
=
c
+
i
d
k=c+id
k=c+id,则
z
∗
k
=
(
a
+
i
b
)
∗
(
c
+
i
d
)
=
a
c
−
b
d
+
i
(
a
d
+
b
c
)
z*k= (a+ib)*(c+id)=ac-bd + i(ad+bc)
z∗k=(a+ib)∗(c+id)=ac−bd+i(ad+bc),而除法就比较麻烦了
z
/
k
=
a
+
i
b
c
+
i
d
=
(
a
+
i
b
)
∗
(
c
−
i
d
)
(
c
+
i
d
)
∗
(
c
−
i
d
)
=
a
c
+
b
d
+
i
(
b
c
−
a
d
)
c
2
+
d
2
z/k=\frac{a+ib}{c+id}=\frac{(a+ib)*(c-id)}{(c+id)*(c-id)}=\frac{ac+bd+i(bc-ad)}{c^2+d^2}
z/k=c+ida+ib=(c+id)∗(c−id)(a+ib)∗(c−id)=c2+d2ac+bd+i(bc−ad)
好在卷积算法只涉及乘法。进而假设一组复值向量为
z
=
x
+
i
y
\bold z=\bold x+i\bold y
z=x+iy,经过复值神经网路,一般表达为向量元素和矩阵元素(卷积网络的卷积核)点乘加,所以可以用矩阵
W
=
A
+
i
B
\bold W=\bold A+i\bold B
W=A+iB与向量
z
=
x
+
i
y
\bold z=\bold x+i\bold y
z=x+iy的乘法来表达:
W
∗
z
=
A
∗
x
−
B
∗
y
+
i
(
B
∗
x
+
A
∗
y
)
\bold W*\bold z=\bold A*\bold x-\bold B*\bold y + i(\bold B*\bold x+\bold A*\bold y)
W∗z=A∗x−B∗y+i(B∗x+A∗y)
假设在卷积网络下,上面的公式已经可以表示用两套卷积核,经过简单的后期运算,就可以实现复数的卷积操作。至于复杂的求导(差分)、激活、正则化、初始化问题,暂时不研究了。
Deep Complex CRN
顾名思义,就是将复数卷积和CRN整合在一起,这个拿下了DNS-Challenge竞赛第一名。作者在论文中讲到是从DCUNET得到了很大的启发(说明是在DCUNET之后诞生的),论文中的框图如下:
和CRN大同小异吧。
Deep Complex U-Net
很显然将复数卷积和CRN整合在一起就是DC U-net。
小结
也许随着复数神经网络应用的突破和成熟,在音频处理中重幅值,轻相位的情况会慢慢成为历史,此处在考虑找一个自编码网络,依葫芦画瓢手动改造一下变成复数网络,也许有surprise呢?。。。
参考文档
1.论文精读:DCCRN from 知乎
2.DCCRN: Deep Complex Convolution Recurrent Network for Phase-Aware Speech Enhancement
3.A Convolutional Recurrent Neural Network for Real-Time SpeechEnhancement
4.PHASE-AWARESPEECHENHANCEMENT WITHDEEPCOMPLEXU-NET
5.DCCRN: Deep Complex Convolution Recurrent Network for Phase-AwareSpeech Enhancement
6.https://github.com/microsoft/DNS-Challenge
7.tencent:conferencingspeech-2021
8.DESNET: A MULTI-CHANNEL NETWORK FOR SIMULTANEOUS SPEECHDEREVERBERATION, ENHANCEMENT AND SEPARATION
9.https://github.com/huyanxin/DeepComplexCRN
10.U-Net: Convolutional Networks for BiomedicalImage Segmentation
11.Minute Teaser Presentation of the U-net
12.图像分割中的深度学习:U-Net 体系结构
13.U-Net中的重叠-切片(Overlap-tile)
14.自编码器(Autoencoders)
15.Stacked Denoising Autoencoders: Learning Useful Representations in
a Deep Network with a Local Denoising Criterion
16.DEEPCOMPLEXNETWORKS
17.深度学习:深度复数网络(Deep Complex Networks)-从论文到pytorch实现
18.COMPLEX SPECTRAL MAPPING WITH A CONVOLUTIONAL RECURRENT NETWORKFOR MONAURAL SPEECH ENHANCEMENT