搭建Sky Hackathon参赛环境

2022-07-15 21:17:03 浏览数 (2)

我们严格按照官方提供的PDF文档,逐步完成环境的搭建。在搭建的过程中,遇到了一些问题,比如:cuda版本过低、py缺少核心组件……在我们队员以及官方团队的配合下,逐步解决了遇到的各个问题,这为我们之后的训练过程奠定了一个良好基础。

数据集的收集

数据集包括ASR、TTS以及CV三个部分,前两者为队员的录音数据集,后者为网络素材,格式如表2.1所示。对于ASR,为了适应更为复杂的实际应用场景,我们采用多人混合录音的模式。并且在录音过程中适当加入了一定的噪声,为了模拟出实际的环境,并且加入了自我介绍。对于TTS,任务的主要目的为实现清晰的、无失真的语音播报,因此对录音的要求比较高。我们采用专人录音的模式,保证语音数据集的低噪声、声音特征明显的特点。CV部分我们利用官方提供的照片素材以及网络公开照片素材,尽可能地保证了照片的隐私以及多样性,也更符合我们亚洲人的生理特点。

表2.1 数据集格式

数据集类型

声道模式

频率/Hz

格式

数目/个

ASR

单声道

44100

wav

30

TTS

单声道

44100

wav

100

CV(口罩识别)

/

/

png

训练过程

整体训练结果如表2.2所示。

表2.2 训练结果

训练类别

总训练次数

单次平均训练时长

Batch_size

Epoch

准确率/客观评分

Loss

ASR(语音转文字)

10

5m

/

20

100%

/

TTS(文字转语音)

5

10h

35

1800~2500

1.8~2.25

0.325

CV(口罩识别)

400

30s

4

400

88.9%

ASR训练

我们对收集到的语音数据集,利用自己写的py脚本生成符合官方要求的JSON格式文件(如图2.1所示)。利用nvidia官方提供的QuartzNet 15X5作为预训练模型,使用迁移学习的方式,对ASR语音数据集进行了20轮的训练,并且加入了自己的姓名,最终取得了不错的效果。正确率可以达到100%,由于使用的是预训练模型,训练过程比较理想。

图2.1 创建JSON格式文件脚本

TTS训练

对于收集到的TTS语音数据集,我们同样采取了ASR给数据打标注的方式。与ASR相比,此训练过程要为复杂的多。因为我们要考虑到语音合成的质量,我们采用了不同的数据集收集方式。第一种为人工录音,但需要尽可能地降低环境噪声;第二种为利用市面上的语音合成工具,但这样可能不符合我们本次活动的初心,而且合成语音质量本身偏低;第三种为利用网络上现有的语音数据集,但语音内容并不符合我们的要求。因此,我们进行了多次的训练过程,每次训练轮数为1800~2500轮(Epoch值),生成了5个训练模型。经过我们的综合考虑之后,我们决定采用第一种方式,并且选择了效果最好的一个模型作为我们最终部署的模型。

在训练过程中,也遇到了许多问题,比如:由于yaml版本的问题,需要对yaml的加载方式进行修改;在训练的过程中,由于硬件设备的限制,导致GPU显存溢出,因此我们在保证数据集相对充足的情况下(50~150条),适当降低了bsize值。

CV(口罩识别)训练

口罩识别的数据集是在官网上下载的数据,利用resnet模型模型进行训练。我们将标签label转换成了json的格式来进行模型的训练,图2.2是配置文件中的部分设置。在训练的过程中要注意batch_size_per_gpu的大小的设置,因为这涉及到了显存的容积的问题。本电脑的显卡为1050,所以batch_size_per_gpu最大值设置为4。并且我们在刚开始训练的时候由于test数据的原因始终无法做到模型收敛。所以只能放弃了训练了两天的模型重新开始训练模型。图2.3是模型训练400次之后取得的结果。

图2.2 配置文件

图2.3 模型训练之后的结果

但是改模型还是有很多不足之处,因为我们没有另外找其他数据来训练,所以在服务器部署的时候,针对于系统提供的图片的训练结果并不是很理想。

Jetson Nano模型部署和推理

最后在官方团队的指导下,我们将最好的训练模型部署到nano设备上。我们按照官方的方法,分别实现了三个部分,完成了最基本的要求。在此过程中,还较为顺利。

0 人点赞