AutoML 似乎很棒。一个大问题是 - 我们可以导出训练好的模型以进行离线推理,例如使用 tensorflow 或 tensoflow lite 吗?
4 回答
自 2019 年 3 月起,不支持此功能。如果您对此功能感兴趣,请对此请求加注星标: https ://issuetracker.google.com/issues/113122585
还要检查该链接,以防谷歌自此答案以来已实施该功能。
更新:已为分类添加了初始支持,但尚未检测。请参阅彼得吉布森的回答。
编辑:现在可以导出图像分类和对象检测模型。请参阅https://cloud.google.com/vertex-ai/docs/export/export-edge-model#object-detection
原始答案如下
AutoML Vision 的当前状态(2019 年 8 月)是您可以导出 AutoML 图像分类模型,但不能导出对象检测。此功能处于测试阶段(AutoML Vision 本身也是如此)。我找不到其他 AutoML 产品的详细信息,也没有亲自尝试过,所以我不确定它们的状态。
来自https://cloud.google.com/vision/automl/docs/
AutoML Vision Edge 现在允许您导出自定义训练模型。
- AutoML Vision Edge 允许您训练和部署针对边缘设备优化的低延迟、高精度模型。
- 借助 Tensorflow Lite、Core ML 和容器导出格式,AutoML Vision Edge 支持各种设备。
- 支持的硬件架构:Edge TPU、ARM 和 NVIDIA。
- 要在 iOS 或 Android 设备上构建应用程序,您可以使用 ML Kit 中的 AutoML Vision Edge。此解决方案可通过 Firebase 获得,并提供端到端开发流程,用于使用 ML Kit 客户端库创建自定义模型并将其部署到移动设备。
文档https://cloud.google.com/vision/automl/docs/edge-quickstart
我训练了一个分类模型,导出了 tflite 模型(它导出到云存储),并且能够下载模型文件并使用 Python API 将它们加载到 tensorflow 中,而没有太多麻烦。以下是加载模型和运行推理的相关代码:
基于https://www.tensorflow.org/lite/guide/inference#load_and_run_a_model_in_python
# Load TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path=MODEL_PATH)
interpreter.allocate_tensors()
# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
def predict(frame):
interpreter.set_tensor(input_details[0]['index'], frame)
interpreter.invoke()
# The function `get_tensor()` returns a copy of the tensor data.
# Use `tensor()` in order to get a pointer to the tensor.
output_data = interpreter.get_tensor(output_details[0]['index'])
应该是这样的:
https://cloud.google.com/vision/automl/docs/deploy
请注意,导出选项(至少目前)不会出现在您已经训练好的模型上。您必须选择其中一个模型,进行训练,然后您可以选择将模型留在云端或生成边缘版本。
您可以使用 ExportModel API 将通用 Tensorflow Lite 格式、Edge TPU 编译的 TensorFlow Lite 格式或 TensorFlow 格式的图像分类模型导出到 Google Cloud Storage 位置。
尚无法从 AutoML 导出模型。@Infinite Loops、automl 和 ml 引擎是不同的产品。