# 一、原理介绍
## 1.1 基本思路
本次实验要求我们根据给出的视频和音频的数据,完成音频分类和视频音频匹配的任务。音频数据为四个壁上的麦克风采集到的声音,我们首先对声音数据进行短时傅里叶变换,将得到的四个特征图作为四个 channel,直接使用 CNN 进行图像分类。而对于匹配问题,我们的想法是根据音频提取出运动相关的一些信息,再与从视频中提取出的相同信息做相似,根据相似度使用 KM 算法进行匹配,具体选取的特征信息为运动方向和碰撞位置。在本次实验中我们对于视频信息的处理和特征提取是基于传统方法的,我们还设计了基于深度学习的方法(但未将其进行实现),此部分内容详见问题与不足部分。
![](https://www.writebug.com/myres/static/uploads/2022/5/7/a6ea0a7654fe7b575ea0e0cce6ca5247.writebug)
## 1.2任务一
首先对音频数据进行预处理,先对音频数据进行降采样(44100Hz→11000Hz),然后对其进行 STFT 操作以得到其频谱特征,STFT 的具体参数参考了数据集来源的论文 [1]。然后对于得到的四个特征图,我们将其当作四个 channel 拼接为一个 tensor,作为训练用的数据。
![](https://www.writebug.com/myres/static/uploads/2022/5/7/54e5fcd49d876d96829fb2f64e96a978.writebug)
特别的,并不是所有音频数据都是一样长的,绝大多数的音频长度都是 4s,对于长度不到 4s 的音频,我们直接在其末尾使用 0 进行延拓 (padding)。
由于我们得到的训练数据是一个 4 通道的频谱图,我们可以将其当作一个图像分类任务使用CNN 来解决,本次实验中我们使用 resnet 来解决任务一。
## 1.3 任务二、三
任务二与任务三除了匹配部分没有本质的区别,我们采用的主要思路为先利用类别信息进行分组,然后再在组内进行匹配。对于匹配特征的提取,我们训练了两个网络来分别根据声音判断物体的运动方向和碰撞的位置。事实上,我们认为只根据声音数据,并不能准确恢复出物体的运动方向,因为缺少其开始时的位置信息,因此我们打算使用碰撞位置来作为关键信息进行匹配。但是通过实验发现,许多匹配错误是最终碰撞的位置相同引起的,因此我们加入了并不完全准确的运动方向信息(平均误差在 15 度)来辅助位置信息进行匹配,从实验结果上看这样的特征组合对匹配成功率有着较为显著的提升。
匹配任务是一个非常典型的二部图最大权匹配,我们采用经典的 Kuhn Munkres 算法(下称 KM 算法)来得到匹配结果。考虑到 KM 算法的时间复杂度较高,先对音频和图像进行较高准确度的分类后,再对每一类内的所有音频和图像信息进行匹配可以有效减少复杂度。如前文所述,音频数据经网络处理后得到“标签-位置-方向”的数据,对图像使用 OpenCV 处理得到类似的数据。我们将位置和方向拼成一个三维向量 [x,y,θ],并对两份数据的笛卡尔积的每一项都计算两个向量差的二范数的负数作为“匹配度”,即有
![](https://www.writebug.com/myres/static/uploads/2022/5/7/1fbcbbe449e9fe7bf883d5d11d9adaa4.writebug)
笛卡尔积使二部图中两部分完全连接,而二范数的负数是为了适应 KM 算法的最大权匹配的特点。从训练集的实验结果来看,这种方法的可以比较好的对两种数据进行匹配。
# 二、具体实现与结果分析
## 2.1 任务一
基本流程如前所述,先对音频进行了降采样(44100Hz→11000Hz),然后以参数 n_fft=510, hop_length=128,对音频进行了 stft,这里音频处理使用的库为 librosa,与作业二相同。之后我们使用了 Resnet-v2[2] 进行分类任务,通过多次尝试,我们选取了参数较少的 resnet20,使用 Cross Entropy loss,选用 Adma 作为优化器,设置初始学习率为 1e-3,并在 epoch=25, 50, 70 对学习率进行 0.1 的 decay。训练和验证的准确率绘制如下,训练了 100 个 epoch,最终训练集上准确率达到98%,验证集上准确率达到 99%。
![](https://www.writebug.com/myres/static/uploads/2022/5/7/9945a66a76240d8251c46e468f1c46b3.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/5/7/f72e6fc429c4abd8281d19646e904858.writebug)
## 2.2 任务二、三
### 信息提取
首先是对音频数据中信息的提取。我们的目标是获取最终的碰撞位置和运动角度的信息,处理的数据与任务一无异,因此我们同样使用 Resnet-v2 来完成。
对于位置判断,将 resnet 的输出设为 2 维,经测试我们选用了 resnet110,使用 MSE loss,选用 Adma 作为优化器,设置初始学习率为 1e-3,并在 epoch=200, 400 对学习率进行 0.1 的 decay。训练和验证的 loss 绘制如下,总共训练了 320 个 epoch,最终训练集上 loss 达到 46,验证集上 loss 达到 613,可见效果虽然不错但还是有一些偏差的。
![](https://www.writebug.com/myres/static/uploads/2022/5/7/dc8e7980ace47a34db807d99f745cace.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/5/7/1541ff17e70671ff344062dedcd0b71d.writebug)
对于角度判断也相同,将 resnet 的输出设为 1 维即可,我们同样使用 resnet110,使用 MSE loss,选用 Adma 作为优化器,设置初始学习率为 1e-3,并在 epoch=200, 400 对学习率进行 0.1 的 decay。这里我们定义了两个角度差的 cos 值作为相似度来评判模型训练的好坏,经过 500epoch 的训练,最终训练集上相似度达到 0.99,验证集上相似度达到 0.96,0.96 对应平均有 16 度的误差,如此大的误差已经会影响到我们进行匹配,因此我们没有选择角度作为唯一特征。
![](https://www.writebug.com/myres/static/uploads/2022/5/7/6536bc53c3e397770d75316d5a9a0eca.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/5/7/314d5b6fc179d8e885466cb00a681586.writebug)
其次是对于图像的处理,为了与音频信息计算相似度,图像也同样需要碰撞位置和运动角度信息,同时还需要对图像进行分类来与音频先进行一个粗匹配。
对图像的分类十分简单,依然使用 Resnet-v2 完成。选取 resnet44,使用 Cross Entropy loss,选用 Adma 作为优化器,设置初始学习率为 1e-3,并在 epoch=20, 40 对学习率进行 0.1 的 decay。训练和验证的准确率绘制如下,仅训练了 50 个 epoch,训练集和验证集上准确率均达到 100%。
![](https://www.writebug.com/myres/static/uploads/2022/5/7/554e3da4e1adf09d404c5a2fbdd5894e.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/5/7/2f2e3264e225f8279fec4f2d290d105f.writebug)
从图像中提取碰撞位置和运动角度信息的任务使用传统方法完成。使用掩膜图像计算了其各阶矩,图像中心位置可由一阶矩除以零阶矩得到,从而根据最后一张图像得到碰撞位置,由始末两张图像得到其运动角度。
### 匹配计算
我们以 Github 上开源的 KM 算法 [3] 为基础,并更改 KM 算法过程中权值的更新以适配负的权值,增加一个入口函数以适配网络给出的预测结果。由于 KM 算法本身的特性会尽可能的将二部图匹配起来,这便要求输入的音频数据和图像数据数量尽可能接近。同时为了避免无连接时的 0 导致的问题,也为了增大准确度,我们使用笛卡尔积将邻接矩阵完全填满。实验表明这种做法提升了匹配的结果。
在匹配权重的选择上,我们尝试了单独以位置或角度为权重,在训练集上的最好结果不超过 65%。而使用二者结合后的二范数显著提高了准确率。我们认为后一种方法可以拉开正确匹配与错�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源包含文件:课程论文word+源码+项目截图 本次实验要求我们根据给出的视频和音频的数据,完成音频分类和视频音频匹配的任务。音频数据为四个壁上的麦克风采集到的声音,我们首先对声音数据进行短时傅里叶变换,将得到的四个特征图作为四个 channel,直接使用 CNN 进行图像分类。而对于匹配问题,我们的想法是根据音频提取出运动相关的一些信息,再与从视频中提取出的相同信息做相似,根据相似度使用 KM 算法进行匹配,具体选取的特征信息为运动方向和碰撞位置。 详细介绍参考:https://blog.csdn.net/newlw/article/details/124725388
资源推荐
资源详情
资源评论
收起资源包目录
基于Python的声音数据处理分析.zip (40个子文件)
基于Python的声音数据处理分析 源码
images
angle_train.png 13KB
audio_train.png 15KB
loc_val.png 13KB
audio_cal.png 11KB
image_val.png 16KB
dataset.png 170KB
loc_train.png 15KB
image_train.png 20KB
audio.png 231KB
angle_val.png 14KB
test.py 12KB
train.py 5KB
LICENSE 1KB
src
audio_process.py 2KB
dataloader.py 7KB
__init__.py 0B
model.py 11KB
image_center.py 3KB
KM.py 5KB
references
swoosh.pdf 604KB
ref.bib 516B
requirements.txt 151B
setup.py 90B
.gitignore 2KB
README.md 11KB
基于Python的声音数据处理分析 课程论文.docx 266KB
截图
angle_train.png 13KB
audio_train.png 15KB
loc_val.png 13KB
SD`0LR8GVXK~6OO21CNRDP6.png 32KB
audio_cal.png 11KB
32[FQ03A`@U7[~}0T6P~CXE.png 37KB
9PS7WQ2A9WW342GR9[DL6I7.png 133KB
image_val.png 16KB
}{](GXE7B}ZJBIYQ3)KIVGW.png 191KB
dataset.png 170KB
loc_train.png 15KB
image_train.png 20KB
audio.png 231KB
angle_val.png 14KB
共 40 条
- 1
资源评论
- qq_26086942832022-10-25资源不错,对我启发很大,获得了新的灵感,受益匪浅。
- kefu3hao2022-10-18内容与描述一致,超赞的资源,值得借鉴的内容很多,支持!
shejizuopin
- 粉丝: 9987
- 资源: 1288
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功