我开发了flutter应用程序和yolov3
自定义对象检测器。两个模块都是独立的。现在我想把这些模块组合成一个单独的项目,但我不知道如何在我的flutter应用程序中使用自定义对象检测器的训练权重。有人能帮我整合一下吗?
我不知道使用Flutter
构建的是android
应用程序还是iOS
。
无论如何,为了能够在Flutter
应用程序上使用经过自定义训练的Yolov3
模型,请执行以下两个步骤。
1.首先,您需要将经过训练的yolov3模型转换为tflite
版本:
您可以将此回购用于此目的。
将自定义训练的Yolov3darknet
权重保存到tflite
转换所需的tfmodel
:
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-Lite
API,该插件可与android
和iOS
一起使用-https://github.com/shaqian/flutter_tflite
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();