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