本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

wzatv:MobileNet教程(2):用TensorFlow搭建安卓手机上的图像

时间:2017-08-06 21:36来源:报码现场 作者:本港台直播 点击:
MobileNet教程(2):用TensorFlow搭建安卓手机上的图像分类App 2017-08-06 12:45 来源:量子位 手机/安卓/中国移动 原标题:MobileNet教程(2):用TensorFlow搭建安卓手机上的图像分类App 王瀚宸 编译自

MobileNet教程(2):用TensorFlow搭建安卓手机上的图像分类App

2017-08-06 12:45 来源:量子位 手机 /安卓 /中国移动

原标题:MobileNet教程(2):用TensorFlow搭建安卓手机上的图像分类App

王瀚宸 编译自 Hackernoon

上周末,量子位翻译了一份MobileNet教程,atv,其中讲述了怎样在一个新的数据集上重新训练MobileNet,那篇文章的成果,是一个分类器,能在电脑上以每秒钟400张的速度,识别图片是否为道路。

MobileNet是为移动端量身打造的,因此这次我们准备把之前做的辨别道路的模型应用到一个Android App中,看看它在移动设备上效果如何。

wzatv:MobileNet教程(2):用TensorFlow搭建安卓手机上的图像

目标和计划

首先,让我们明确目标和计划,我们希望做到:

在很小的特定数据上重新训练MobileNet;

模型在hold out测试集(即模型训练前为测试留出的样本)上达到95%的准确率;

程序运行时对300美元以下价位手机CPU的占用要小于5%。

为了达到这些目标,我们的计划是:

生成一个新的训练数据集;

训练多个MobileNet结构,从而寻找所能够达到准确率目标(95%)的最小型网络;

与在Android上运行的Inception V3做对比;

将TensorFlow上Android example App中的模型替换为我们的MobileNet;

大量的测试;

进行调试,从而将CPU的占用调到5%以下。

建立数据集

在前一篇推送中,我们为了辨认“道路/非道路”,从多个来源拉取了图片作为训练素材。

现在我们再来思考一下这样做是否有必要。

如果你记得的话,这个项目的目标是为了保护用户隐私,当车上的摄像头打开的时候,如果它看见的不是道路,就应该自动关掉。

所以,为了建立我们的训练数据集,我需要录制一些(跟驾驶相关)日常生活中的场景:比说我家的周围、我车子的外部,我在车上摆弄收音机、逗猫等等。这些会被当做非道路的数据用来训练模型。

wzatv:MobileNet教程(2):用TensorFlow搭建安卓手机上的图像

一些“非道路”的示例图片

而训练数据的“道路”部分,是从Coastline driving dataset中随机取出的,这些图片都是由车的前置摄像头拍摄的。

wzatv:MobileNet教程(2):用TensorFlow搭建安卓手机上的图像

一些“道路”的示例图片,注意这些图片中都有山坡,因此,为了防止模型把判断道路错认为判断山坡,我们需要对训练数据进行一些扩展。

为道路和非道路数据集各收集3000张图片后,下一步就是开始训练了。

用特定数据集训练MobileNet

下一步,是看看不同结构的MobileNet在经过训练后能达到什么样的准确度。

我们先从最“宽”的MobileNet开始训练:MobileNet 1.0 @ 128。 因为我们想把这个模型应用到移动设备上,因此我们将会采用权值量化,从而进一步减少内存占用。

关于重新训练MobileNet的操作细节,可以看我的前一篇推送。

在TensorFlow的根目录下,运行以下脚本:

python tensorflow/examples/image_retraining/retrain.py --image_dir ~/ml/blogs/road- not-road/data/ --learning_rate= 0.0005--testing_percentage= 15--validation_percentage= 15--train_batch_size= 32--validation_batch_size=- 1--flip_left_right True--random_scale= 30--random_brightness= 30--eval_step_interval= 100--how_many_training_steps= 1000--architecture mobilenet_1 .0_128_quantized

在经历1000步的训练后,我们在测试集上达到了99.7%的准确率。

以下是模型做出了错误判断的一些图片:

wzatv:MobileNet教程(2):用TensorFlow搭建安卓手机上的图像

被错认为道路的非道路图片,我不得不说这种失误是可以接受的,这显然是路,但不是我们要的类型 。

wzatv:MobileNet教程(2):用TensorFlow搭建安卓手机上的图像

被错认为非道路的道路图片,我认为这是因为在训练集中没有出现桥架在道路上的图片,更多的训练数据能解决这个问题。

接下来让我们在最小的MobileNet上(0.25@128)训练,同样采用权值量化。在1000步训练后,我们达到了92.6%的正确率,没有达到我们的目标。

那么让它稍微变宽些呢,比如说0.5@128?

准确率达到了95%,最终的模型大小为1.6MB。值得一提的是我们训练模型只用了10分钟10fps的视频,所以在训练数据的收集上还有很大的提升空间。

接下来我们很快试一下看看模型是否能够如预计般工作:

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容