泛化模型推理效果测试与优化实践

本文介绍了在2024年7月30日进行的一次泛化模型推理效果测试,包括预处理、模型微调以及遇到的技术挑战和解决方案。通过使用ffmpeg进行视频处理和PyTorch进行深度学习模型的张量嵌入,我们探索了提高模型泛化能力的方法。

2. 视频预处理
在模型微调前,对输入样本进行适当的预处理是至关重要的。本次实验中,我们选择了一段时长超过三分钟的视频作为样本。

2.1 帧率调整
为了确保视频与模型输入要求的一致性,我们首先使用ffmpeg将视频帧率调整至25fps。具体实现代码如下:

```bash
ffmpeg -i input.mp4 -r 25 output1.mp4
```

2.2 采样率与编码器调整
进一步地,我们将视频的采样率调整为16000Hz,并分别对视频和音频编码器进行设置,以适应后续处理的需求。相关ffmpe 代码如下:

1 inport platform
2 inport subprocess
3 inport sys
4 inport os
5 for name in os.listdir(sys.argv[1]):
6       video name = name.split('/')[-1][:-4]
7       subprocess.call(f'ffmpeg -i {sys.argv[1]}/{name} -hide_banner -f mp4 -vcodec libx264 -vf 
  alphaextract,format=yuv420p {sys.argv[2]/{video name].mp4', shell=platform.system()1='windows')
8#      subprocess.call(f'ffmpeg -t {sys,argv[1]}/{str(i)}.wav -ac 1 -ar 16800 {sys.argv[2]}/{str(i)}.wav'shell=platform.system()!='Windows")

 3. 特征提取与模型微调
在视频预处理完成后,我们开始进行特征提取和模型微调。

3.1 脸部识别与特征嵌入
使用PyTorch,我们对视频中的脸部进行识别,并将其切分出来,然后进行张量嵌入,以便于模型的进一步处理。

3.2 音频特征提取
除了视频特征外,音频特征也是模型泛化能力的重要组成部分。我们采用相应的技术提取音频特征,以丰富模型的输入维度。

26 feature extractor = Wav2Vec2FeatureExtractor,from pretrained(model path)
27 model =HubertModel.from pretrained(model path)
28
29 model = model,to(device)
30 model = model.half()
31 model.eval()
32 nun e int(sys.argw[3])
33 input = sys.argv[1]
34 output = sys.argv[2]
35 print(num,input,output)
36 for t in range(i,num+1):
37   wav pathm f'finput}/{str(t)}.wav' #修改为输入的音频路径
38
39   wav,sr sf.read(wav -path)
40    rep output =[ ]
41   
42    for start in range(o, len(wav),60*sr): # process one minute once        
43          minute = waw[start:nin(start + 60*sr+80,len(wav))]
44           if len(minute)s480:
45               print(f"{str(i)} length s 406')
46               continue
47           input values = feature extractor(minute, sampling rate=sr, return tensors="pt").input values
48           input values = input values.halfo)
49           input walues m input walues.to(device)
50
51           wlth torch.no grad():
52                   outputs s nodel(input walues)
53                   repst =outputs.last hidden state
54                   repst = repst.cpu()
55                   repst = repst.numpy()
56                   rep output.append(repst)
57
58     rep output :np.concatenate(tuple(rep output), axis.1)
59     np.save(sys.argv[2]+'/'+f'wavzvec_hubert_large_{str(i)}',rep_output) #修改为输出的音频特征路径
60     print(f',{str(i)} done.{str(sr)}')

 4. 遇到的挑战与解决方案
在实验过程中,我们遇到了一个命名相关的报错问题:

```
ValueError: invalid literal for int() with base 10: 'output1_55'
```

经过排查,我们发现问题出在视频命名上。视频名称中不应包含下划线,且只能以整形命名。通过将视频命名为`1.mp4`,我们成功解决了这一问题。

 5. 模型训练与推理效果
为了加速模型的训练过程并及时观察推理效果,我们使用了NVIDIA GeForce RTX 4090显卡,并设置每500步保存一次模型的迭代状态。

使用微调好的模型进行推理测验:

推理结果:

1.泛型直接推理带唇部动作的希希视频,效果比较直观,音频特征和唇部动作较一致,整体评价,优。

  通过本次实验,我们不仅测试了模型的推理效果,还学习到了在实际应用中如何优化模型的预处理和微调流程。这些经验对于提升模型的泛化能力和实际应用价值具有重要意义。
 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
博客
sdadsad
11-23 27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值