TensorFlow + YOLO + React Native 制作 Not Hotdog App
来源:三少ZZzzz     阅读:886
空军一号
发布于 2018-08-29 22:20
查看主页

看过美剧《硅谷》的同学都知道人工智能识别热狗曾是硅谷最赚钱的技术之一。去年 HBO 发布了官方的 Not Hotdog 应使用,支持 iOS 和 Android 平台,据说是使用 TensorFlow、Keras 和 React Native 打造的,但是源码没有公开。

最近入门了机器学习的少量边边角角,仿制了一个 Not Hotdog 应使用。代码主要用 React Native 和 TensorFlow Mobile ,训练模型用 Yolo v2 Tiny。

源代码

shaqian/Not-Hotdog

效果图

iOS

是时候表演真正的技术了 —— 画框

Android

建模过程

1. 制作数据集

偷懒使用了 COCO 2014 数据集。COCO 一共有 80 种物体类别,其中一个就是热狗 (hot dog)。我写了个脚本导出所有的热狗图片(共 1200 多张)并生成 yolo 格式的标注:
shaqian/Not-Hotdog/blob/master/yolo/coco2yolo.py

2. 训练 Yolov2 Tiny

用的是 darknet 的 这个 fork 。

darknet.exe partial yolov2-tiny.cfg yolov2-tiny.weights yolov2-tiny.conv.13 13
darknet.exe detector train data\obj.data yolov2-tiny-hotdog.cfg yolov2-tiny.conv.13

3. 将 weights 转为 TensorFlow protobuf (.pb) 格式

我使用的 darkflow 转换:

flow --model ../yolov2-tiny-hotdog.cfg --load ../yolov2-tiny-hotdog_final.weights  --savepb

4. 量化

转换后的 .pb 约有 44MB。使用 TensorFlow repo里面的 quantization 脚本 压缩一下,体积可以减小到 11MB。

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 板块。

参考了以下 repo 特此感谢:

依赖库一览

安装依赖

cd react-native-NotHotdog/iospod install
cd react-native-NotHotdog/npm install

运行

iOS

react-native run-ios

Android

因为 react-native-camera 的少量问题,Android 端拍照要比 iOS 慢很多,有时间可以改进一下。

react-native run-android

感谢您的阅读!

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
vue中子组件修改父组件props 的问题
全可以PHP自己设置环境,IIS、Apache、Nginx三大站点多版本共存
JS面向对象编程OOP——JS继承
iOS常用系统宏定义
Apache和php结合及默认虚拟主机实例讲解
首页
搜索
订单
购物车
我的