TensorFlow Lite-对象检测API YOLOv3

时间:2019-07-03 10:19:57

标签: android tensorflow object-detection object-detection-api tensorflow-lite

我想基于Android的YOLOv3实现TFLite分类器。我是一个带有tensorflow lite对象检测代码的菜鸟...

我想从Object Detection TFLite的这种实现开始。我尝试将此代码与其他实现与Yolo Classifier合并,但是在将非精简版代码与精简版一起使用时,我遇到了很多问题。

我的问题是:我可以从TFLite示例开始,基于Yolov3实现分类器吗? 我认为TFLiteObjectDetectionAPIModel是我必须修改的类。这正确吗?还是可以使用此API来调用我自己编写的YoloClassifier实现?

我想详细了解如何使用API​​来基于yolo生成和应用自己的分类器。我必须实现一个与API.java文件接口的新类YoloClassifier.java,或者我只能使用API​​来适应新的分类器?

首先感谢所有人,希望我很清楚:)

2 个答案:

答案 0 :(得分:0)

不幸的是,您目前无法将 complete 模型转换为tensorflow lite模型。这是因为YOLOv3通过引入一些额外的层(也称为YOLOv3头部)在YOLO和YOLOv2所使用的原始暗网后端上进行了扩展,在准备tflite模型时似乎没有正确处理(至少在keras中)转换。

您可以将YOLOv3转换为.tflite,而无需模型的“ head”部分(请参见此处:https://github.com/benjamintanweihao/YOLOv3),但是随后您将必须在Java代码中实现缺少的部分(如此处建议的{{3 }})。请确保您具有正确的锚框尺寸。第二个链接有望回答您问题的第二部分。

如果您打算使事情保持简单,则其他选择是将SSD移动网络或yolov2-tiny用于您的应用程序。他们将为您提供更实时的体验。

我目前正在从事类似的项目,涉及在flutter / tflite中进行对象检测,因此如果发现任何新问题,我会及时通知您。

编辑:

https://github.com/wics1224/yolov3-android-tflite中,您需要更改导入库的方式,因为 lite 库从tensorflow 1.14起从 contrib 中移出了。

答案 1 :(得分:0)

尝试https://github.com/zldrobit/onnx_tflite_yolov3,但NMS不在TensorFlow计算图中。您必须在JAVA代码中实现自己的NMS。 此仓库的另一个问题是它需要ONNX和PyTorch。如果您不熟悉它们,则可能会花费一些时间。