不知道是否使用Flutter
你正在建造android
app or iOS
.
无论如何能够使用定制训练Yolov3
模型在你的Flutter
应用程序,请按照以下两个步骤操作。
1.首先需要将训练好的yolov3模型转换为tflite
版本:
您可以使用this https://github.com/hunglc007/tensorflow-yolov4-tflite为此目的回购。
保存自定义训练的 Yolov3darknet
权重为tfmodel
这是需要的tflite
转换:
python save_model.py --weights yolov3.weights --output ./checkpoints/yolov3-416 --input_size 416 --model yolov3 --framework tflite
Convert Yolov3
模型到tflite
版本:
python convert_tflite.py --weights ./checkpoints/yolov3-416 --output ./checkpoints/yolov3-416.tflite
2.然后你使用Flutter
用于访问的插件TensorFlow-Lite
API,两者都适用android
and iOS
- https://github.com/shaqian/flutter_tflite https://github.com/shaqian/flutter_tflite
a) 创建一个assets文件夹并将标签文件和模型文件放入
它。在pubspec.yaml
add:
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();