为了账号安全,请及时绑定邮箱和手机立即绑定

Google Coral Edge TPU 编译模型 - 推理总是几乎相同

Google Coral Edge TPU 编译模型 - 推理总是几乎相同

不负相思意 2022-05-24 15:04:31
我正在尝试让 Mobilenetv2 模型(重新训练到我的数据集的最后一层)在 Google 边缘 TPU Coral 上运行。我可以使用“edgetpu_compiler”(按照此页面https://coral.withgoogle.com/docs/edgetpu/compiler/#usage)量化和编译模型。但是当我在 TPU 中运行推理时,对于非常不同的输入图像,我得到了类似的输出。我使用“tflite_convert”工具来量化模型,如下所示:tflite_convert --output_file=./model.tflite --keras_model_file=models/MobileNet2_best-val-acc.h5 --output_format=TFLITE--inference_type=QUANTIZED_UINT8 --default_ranges_min=0 --default_ranges_max=6 --std_dev_values=127 --mean_values=128 --input_shapes=1,482,640,3 --input_arrays=input_2然后我使用“edgetpu_compiler”工具为 TPU 编译它:sudo edgetpu_compiler  model.tfliteEdge TPU Compiler version 2.0.258810407INFO: Initialized TensorFlow Lite runtime.Model compiled successfully in 557 ms.Input model: model.tfliteInput size: 3.44MiBOutput model: model_edgetpu.tfliteOutput size: 4.16MiBOn-chip memory available for caching model parameters: 4.25MiBOn-chip memory used for caching model parameters: 3.81MiBOff-chip memory used for streaming uncached model parameters: 0.00BNumber of Edge TPU subgraphs: 1Total number of operations: 71Operation log: model_edgetpu.logSee the operation log file for individual operation details.然后,当我使用此代码运行推理时:...labels = ["Class1", "Class2", "Class3", "Class4"]results = engine.ClassifyWithImage(img, top_k=4)for result in results:    print('---------------------------')    print(labels[result[0]])    print('Score : ', result[1])对于任何输入图像,它几乎相同,通常前两个类具有相同(或非常相似)的值(第 3 和第 4 相同),如上例所示。一类应该是 0.99(as it is in the .h5 model or even in the .tflite model without quantization)可以是参数吗?我该-default_ranges_min=0 --default_ranges_max=6 --std_dev_values=127 --mean_values=128?如何计算它们?编辑1:使用这篇文章的答案,我尝试使用 both 量化模型--std_dev_values=127 --mean_values=128 and --std_dev_values=255 --mean_values=0,但我仍然得到垃圾推断。由于mobilenet2使用relu6,默认范围应该是-default_ranges_min=0 --default_ranges_max=6正确的?该模型是经过重新训练的 MobileNetv2,输入是 RGB 图像(3 通道),输入形状为 1,482,640,3。
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

从您对 mobilenetv1 的评论来看,听起来您正在采用重新训练的浮点模型并将其转换为 TFLite。您打算通过运行您列出的命令来量化它。

我建议您仔细查看 TensorFlow lite 文档。一般来说,有两种量化方式(在训练期间进行和在训练后进行)。您似乎想要采取的方法是训练后。

按照Coral 团队的建议 ( https ://coral.与google.com/news/updates-07-2019/)。

您在上面使用的流程更适合训练时间量化。


查看完整回答
反对 回复 2022-05-24
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信