源代码
效果图
iOS是时候表演真正的技术了 —— 画框
Android建模过程
1. 制作数据集
2. 训练 Yolov2 Tiny
- 首先从预训练的 提取初始 weights:
darknet.exe partial yolov2-tiny.cfg yolov2-tiny.weights yolov2-tiny.conv.13 13
-
修改 .cfg 文件:
将原本的 80 个类别改成 1 个类别。.cfg 文件和初始 weights 请见 GitHub repo 。 -
最后训练模型:
darknet.exe detector train data\obj.data yolov2-tiny-hotdog.cfg yolov2-tiny.conv.13
3. 将 weights 转为 TensorFlow protobuf (.pb) 格式
flow --model ../yolov2-tiny-hotdog.cfg --load ../yolov2-tiny-hotdog_final.weights --savepb
4. 量化
python3 tensorflow/tools/quantization/quantize_graph.py --input=yolov2-tiny-hotdog.pb --output_node_names=output --output=quantized_yolov2-tiny-hotdog.pb --mode=weights
制作应用
React Native 的 Native 模块
出于方便,调用 TensorFlow Mobile 接口是自己实现的 native 模块。
-
iOS 端的实现代码在 ./react-native-NotHotdog/ios/NotHotdog/TensorflowManager.mm
-
Android 端的实现代码在 ./react-native-NotHotdog/android/app/src/main/java/com/nothotdog/tensorflowmanager
参考了以下 repo 特此感谢:
依赖库一览
- TensorFlow Mobile: ,
安装依赖
- iOS 的 TensorFlow Mobile 用 pod 安装:
cd react-native-NotHotdog/ios
pod install
- 安装其他依赖:
cd react-native-NotHotdog/
npm install
运行
iOS
- 模拟器:
react-native run-ios
-
真实设备:
Android
由于 react-native-camera 的一些问题,Android 端拍照要比 iOS 慢很多,有时间可以改进一下。
-
GitHub repo 里的 hotdog.apk 可直接安装。
-
模拟器:
react-native run-android
-
真实设备: