视频分类通常是一个多模态任务。
可以用RGB图片, optical flow光流图片以及audio音频来进行分类。
这篇博客主要讲一讲用音频来做视频分类的过程。
主要思路
目前利用音频的主要方法是将音频转换为对应谱图,然后让卷积网络像看图片一样去“看”音频信号,以此学会音频信号的特征来进行分类。
几种谱图
要将音频信号转为图片形式,转换的代码网上有很多,但是要考虑的问题是转换为哪种谱图。
声谱图(Spectrogram):横坐标是时间,纵坐标是频率值(见下图的上半部分),同一时间的纵线上存在着数个波,重合而成最终的波。颜色越亮则表示波的振幅越大。
频谱图(Spectrum):某个时间点上(上图中的黄线)的频率分布。横坐标为频率,纵坐标为振幅(见下图的下半部分)。频谱图更有利于直观的观察泛音的成分和强弱。
在视频分类中,视频是时序信号,需要把时间因素考虑进去,所以采用声谱图。
具体代码,直接借用的github上的项目。
另外,可以使用FFmpeg来从视频中提取音频。
archer@Saber:~$ ffmpeg -i apple.mp4 -f mp3 -vn apple.mp3
参数解释:
-i 表示input,即输入文件
-f 表示format,即输出格式
-vn表示vedio not,即输出不包含视频
具体可参考这篇博客。
批量提取音频
假设所有视频文件放在test_文件夹内。
先在test_内运行以下命令,提取所有文件名:
archer@Saber:~/Desktop/test_$ ls > ../test_.txt
然后批量提取音频:
archer@Saber:~/Desktop/test_$ cat ../test_.txt | while read l
> do
> ffmpeg -i $l -f mp3 -vn ${l}".mp3"
> done
简直爽歪歪~
网络训练
对声音信号进行转化后,现在采用网络进行训练。