TensorFlow Lite - 对象检测 API YOLOv3
TensorFlow Lite - Object Detection API YOLOv3
我想为 Android 实现一个基于 YOLOv3 的 TFLite 分类器。我对 tensorflow lite 对象检测代码有点菜鸟...
我想从 Object Detection TFLite. I tried to merge this code with this other implementation with Yolo Classifier 的这个实现开始,但是我在使用精简版调整非精简版代码时遇到了很多问题。
我的问题是:我可以从 TFLite 示例开始基于 Yolov3 实现 classifier 吗?
我认为 TFLiteObjectDetectionAPIModel 是我必须修改的 class..这是正确的吗?或者这个API可以用来调用一个自己写的YoloClassifier Implementation?
我想详细了解如何使用 API 生成和应用我自己的基于 yolo 的 classifier。我必须实现一个与 API.java 文件接口的新 class YoloClassifier.java,否则我只能在 API 上工作以适应新的 classifier?
在此先感谢大家,希望我说清楚了:)
很遗憾,您目前无法将 complete YOLOv3 模型转换为 tensorflow lite 模型。这是因为 YOLOv3 通过引入一些额外的层(也称为 YOLOv3 头部)扩展了 YOLO 和 YOLOv2 使用的原始暗网后端,在为 tflite 准备模型时似乎没有正确处理(至少在 keras 中)转换。
您可以在没有模型的 'head' 部分的情况下将 YOLOv3 转换为 .tflite(参见此处:https://github.com/benjamintanweihao/YOLOv3), but then you will have to implement the missing parts in your Java code (as suggested here: https://github.com/wics1224/yolov3-android-tflite)。如果你这样做,请确保你有正确的锚框尺寸。第二个 link 希望能回答你问题的第二部分。
如果您打算保持简单,您的其他选择是为您的应用程序使用 SSD-mobilenet 或 yolov2-tiny。他们会给你更实时的体验。
我目前正在 flutter/tflite 中从事一个涉及对象检测的类似项目,所以如果我发现任何新内容,我会及时通知您。
编辑:
在 https://github.com/benjamintanweihao/YOLOv3 中,您需要更改导入库的方式,因为 lite 库已从 contrib 中移出从 tensorflow 1.14 开始。
尝试 https://github.com/zldrobit/onnx_tflite_yolov3,但 NMS
不在 TensorFlow 计算图中。您必须在 JAVA 代码中实现自己的 NMS
。
这个 repo 的另一个问题是它需要 ONNX
和 PyTorch。如果您不熟悉它们,可能会花费您一些时间。
我想为 Android 实现一个基于 YOLOv3 的 TFLite 分类器。我对 tensorflow lite 对象检测代码有点菜鸟...
我想从 Object Detection TFLite. I tried to merge this code with this other implementation with Yolo Classifier 的这个实现开始,但是我在使用精简版调整非精简版代码时遇到了很多问题。
我的问题是:我可以从 TFLite 示例开始基于 Yolov3 实现 classifier 吗? 我认为 TFLiteObjectDetectionAPIModel 是我必须修改的 class..这是正确的吗?或者这个API可以用来调用一个自己写的YoloClassifier Implementation?
我想详细了解如何使用 API 生成和应用我自己的基于 yolo 的 classifier。我必须实现一个与 API.java 文件接口的新 class YoloClassifier.java,否则我只能在 API 上工作以适应新的 classifier?
在此先感谢大家,希望我说清楚了:)
很遗憾,您目前无法将 complete YOLOv3 模型转换为 tensorflow lite 模型。这是因为 YOLOv3 通过引入一些额外的层(也称为 YOLOv3 头部)扩展了 YOLO 和 YOLOv2 使用的原始暗网后端,在为 tflite 准备模型时似乎没有正确处理(至少在 keras 中)转换。
您可以在没有模型的 'head' 部分的情况下将 YOLOv3 转换为 .tflite(参见此处:https://github.com/benjamintanweihao/YOLOv3), but then you will have to implement the missing parts in your Java code (as suggested here: https://github.com/wics1224/yolov3-android-tflite)。如果你这样做,请确保你有正确的锚框尺寸。第二个 link 希望能回答你问题的第二部分。
如果您打算保持简单,您的其他选择是为您的应用程序使用 SSD-mobilenet 或 yolov2-tiny。他们会给你更实时的体验。
我目前正在 flutter/tflite 中从事一个涉及对象检测的类似项目,所以如果我发现任何新内容,我会及时通知您。
编辑:
在 https://github.com/benjamintanweihao/YOLOv3 中,您需要更改导入库的方式,因为 lite 库已从 contrib 中移出从 tensorflow 1.14 开始。
尝试 https://github.com/zldrobit/onnx_tflite_yolov3,但 NMS
不在 TensorFlow 计算图中。您必须在 JAVA 代码中实现自己的 NMS
。
这个 repo 的另一个问题是它需要 ONNX
和 PyTorch。如果您不熟悉它们,可能会花费您一些时间。