首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TFLite模型精度在Android上较差

TFLite模型精度在Android上较差
EN

Stack Overflow用户
提问于 2021-10-04 19:18:31
回答 1查看 204关注 0票数 1

我有一个自定义的语音识别模型,转换为TFLite,在PC上的python中表现出色。在Android上运行相同TFLite模型的推理时,精度会下降。所有的处理都发生在TFLite模型层(特征提取等)。因此,在Android系统中,没有任何代码可以产生不同的效果。在python和Android中,对模型的输入是波形,输出是逻辑。我已经检查过了,Android上有一个很好的麦克风输入,但是模型的性能比在PC上要差得多。

我在我的模型中有批规范化层,我怀疑它们可能是问题所在。我不知道为什么Android和python之间会有不一致。还有人遇到这个问题吗?

我排除的事情:

  1. 麦克风-我在Android和PC上使用相同的BT耳机
  2. 模型架构--我尝试了两种不同的模型架构(DeepSpeech和Jasper),它们在Android上都导致了相同的精度下降,但它们在PC上工作得很好。
  3. 量化-我的模型被量化,但工作良好,在PC上没有精度损失。
EN

回答 1

Stack Overflow用户

发布于 2021-10-06 06:22:05

没有进一步的调查,我无法给出任何确切的答案,但我想到几个可能的原因:

量化:如果您正在比较网络在转换到TFLite之前和之后的性能,那么根据您的量化设置,性能会出现预期的下降。但是,如果您也是从python运行TFLite解释器,这不应该是原因。(量化参考)

域转移:仅仅因为这两种麦克风质量都很好,并不意味着它们的输出是相同的。压缩、噪声分布等都可能不同。这意味着您的输入数据可能来自稍微不同的域,这将降低性能。要测试这一点,请尝试保存一个记录(从任何一个设备)并将其输入到输入中。输出应该是相同的,如果没有其他错误的话。要解决这个问题,在培训网络时,使用手机上的录音作为验证数据(并对来自电话的一些录音进行培训),并使用来自电话的录音作为您与python的比较点。

性能问题:如果在设备上运行网络会导致速度减慢,您可能会更改有效采样率,即使麦克风是相同的。如果您已经修复了域移位错误,那么这是我最后的猜测。同样,它也有效地导致了域的转移,但是很难弥补。在此情况下,最好优化代码,使其不导致减速,或者如果实现允许,记录示例并“脱机”运行推断,而不是与数据收集并行运行。

数据处理错误:如果您从麦克风到网络的管道是不同的(这可能是在android上,而不是PC上的python ),那么数据进入网络的方式可能会出现错误,不管是丢失的数据包还是可能导致标准化问题的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69441282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档