如何在Flutter应用中集成yolo-v3自定义对象检测器?

时间:2020-07-18 08:54:53

标签: flutter yolo

我开发了flutter应用程序和yolov3自定义对象检测器。两个模块都是独立的。现在,我想将这些模块组合到一个项目中,但无法弄清楚如何在我的flutter应用程序中使用经过训练的自定义对象检测器的权重。有人可以帮助我进行此集成吗?

1 个答案:

答案 0 :(得分:1)

我不知道是使用Flutter还是构建android应用或iOS

无论如何要在Yolov3应用上使用经过定制培训的Flutter模型,请执行以下两个步骤。

1。首先,您需要将训练有素的yolov3模型转换为tflite版本:

您可以为此目的使用this回购。

将经过定制培训的Yolov3 darknet权重保存到tfmodel转换所需的tflite

python save_model.py --weights yolov3.weights --output ./checkpoints/yolov3-416 --input_size 416 --model yolov3 --framework tflite

Yolov3模型转换为tflite版本:

python convert_tflite.py --weights ./checkpoints/yolov3-416 --output ./checkpoints/yolov3-416.tflite

2。然后,您使用Flutter插件来访问TensorFlow-LiteandroidiOS -https://github.com/shaqian/flutter_tflite

一起使用的API。

a)创建资产文件夹,并将标签文件和模型文件放入 它。在pubspec.yaml中添加:

  assets:
   assets/labels.txt
   assets/yolov3-416.tflite

b)导入库:

import 'package:tflite/tflite.dart';

c)加载模型和标签:

String res = await Tflite.loadModel(
model: "assets/yolov3-416.tflite",
labels: "assets/labels.txt",
numThreads: 1, // defaults to 1
isAsset: true, // defaults to true, set to false to load resources outside assets
useGpuDelegate: false // defaults to false, set to true to use GPU delegate
        );

d)要在图像上运行:

  var recognitions = await Tflite.detectObjectOnImage(
  path: filepath,       // required
  model: "YOLOv3",      
  imageMean: 0.0,       
  imageStd: 255.0,      
  threshold: 0.3,       // defaults to 0.1
  numResultsPerClass: 2,// defaults to 5
  anchors: anchors,     // defaults to [0.57273,0.677385,1.87446,2.06253,3.33843,5.47434,7.88282,3.52778,9.77052,9.16828]
  blockSize: 32,        // defaults to 32
  numBoxesPerBlock: 5,  // defaults to 5
  asynch: true          // defaults to true
);

e)发布资源:

await Tflite.close();