https://groups.google.com/forum/#!topic/keras-users/Yob7mIDmTFs

http://talc1.loria.fr/users/cerisara/posts/tflow/

The current Tensorflow sample on Android loads tensorflow_inception_graph.pb. Assuming one can convert a model generated by Keras to a Tensorflow graph and replace the file, I believe it should work. This is our step #1 -- to make the model running on Android. However, it is still different to our original goal: running Keras model on Android. It is more like a process to convert (and compress?) Keras model to Tensorflow, and run Tensorflow on Android (please correct me if my understanding about Keras and Tensorflow is not correct). If it is possible, we are hoping to make the Keras model run on Android with minimum changes to the model source built on desktop. That is why Bafu mentioned porting python modules to Android (mainly rely on Kivy).
                                                                                
Our project has just started and is still at very early stage, so any comment/suggestion is more than welcome :).
If it goes well, we plan to share more technical details in two or three months.    

==============

Deep Learning with Keras on Android

Short story

Do you want to design (and not only use) a deep learning model on an Android tablet, while on the go ? Here are the steps to do (explanations come later on):

  • install Termux from google play, because its command-line git is flawless
  • install GNURoot Debian from google play, to have a Debian linux on your tablet (all without rooting your tablet !)
  • within Debian, install python (apt-get install python python-scipy python-numpy python-pip) Note that you must install scipy and numpy with apt-get and not pip (!) because scipy compilation from pip fails on my Lollipop.
  • you can now install Theano with pip install theano
  • and finally install keras: pip install keras
  • last important trick: before running Keras, create a new directory in /usr/urhome because on my Lollipop, importing theano from within python fails due to issues with exec flag on /home. But it works in /usr.
  • So you may import Keras within python after: HOME=/usr/urhome KERAS_BACKEND=theano python

It works ! Of course, not very fast: I've run the Keras reuters examples, which takes 36s per iteration (!), but gives in the end the same 79.5% accuracy than on my computer. So it's not obviously done to really train models, but rather to debug, write and test Keras code on the go.

Note that you'll be able to design deep learning models with Keras-theano: I've tried to install Tensorflow (see below) but it's much more difficult than Theano. The good news is that the Keras models are independent from the backend, so the models you design with Keras-theano will run with Keras-Tensorflow on another machine as well.

Long story

There are several options to get a linux distro on your tablet:

  • If you have a rooted phone, you may want to give one of the many android application that allows to install Debian on your mobile. I don't want to root it (because all rooting apps I have tried so far have failed, and my last try at rooting the tabler with adb made my tablet run into a boot loop that I have had all difficulties to fix... So, no more rooting for me !)
  • On a non rooted android, the best I have found is GNURoot, which gives you a (nearly) full Debian.

But this Debian comes with a number of issues:

  • It takes more than 2GB of memory, and you may not be able to use it on your sdcard (without rooting, and the sdcard is protected on lollilop; I've managed to be able to write on it, but because it's FAT, there is no way to change file permissions and make them executable. So, many issues come from this limitation, and it's best to use it only from the internal memory)
  • You can run python, libreoffice... but because it's ARM, there are several important programs (for me) that just can't be installed; for instance, tensorflow or the google android python API.
  • git is here, but it is not working fine, because of file permissions on ssh keys
  • Sometimes, file management has minor issues, and you cannot remove a directory with rm -rf

To cope with the last two issues, I recommend installing also Termux, which git program is the best I've found so far (works perfectl) and which handles very well all file systems: I can even "git clone" on the external card with termux, which is impossible with GNURoot. But termux is limited because it cannot access the Debian repositories.

Additional notes on getting tensorflow python API, which failed for me so far:

  • You cannot install tensorflow with pip on 32 bits CPU, so you must compile tensorflow from source.
  • But this requires the bazel building executable, which is also not easy to compile on arm 32 bits: seehttps://github.com/samjabrahams/tensorflow-on-raspberry-pi/blob/master/GUIDE.md#3-build-bazel for how to do it.
  • Compiling Bazel fails for me because it required a 32-bit arm protobuf, which I may have tried to compile as well, but wait, that was enough for me ;-)

在android上跑 keras 或 tensorflow 模型的更多相关文章

  1. 使用C++部署Keras或TensorFlow模型

    本文介绍如何在C++环境中部署Keras或TensorFlow模型. 一.对于Keras, 第一步,使用Keras搭建.训练.保存模型. model.save('./your_keras_model. ...

  2. 26、android上跑apache的ftp服务

    一.为啥 在android设备跑ftp服务,在现场方便查看日志,目前就是这么用的. 二.前提: 从apache的官网下载依赖包:http://mina.apache.org/ftpserver-pro ...

  3. Win10上安装Keras 和 TensorFlow(GPU版本)

    一. 安装环境 Windows 10 64bit  家庭版 GPU: GeForce GTX1070 Python: 3.5 CUDA: CUDA Toolkit 8.0 GA1 (Sept 2016 ...

  4. Linux上多次restore Tensorflow模型报错

    环境:python3,tensotflow 在恢复了预先训练好的模型进行预测时,第一次是能够成功执行的,但我多次restore模型时,出现了以下问题: 1.ValueError: Variable c ...

  5. 移动端目标识别(1)——使用TensorFlow Lite将tensorflow模型部署到移动端(ssd)之TensorFlow Lite简介

    平时工作就是做深度学习,但是深度学习没有落地就是比较虚,目前在移动端或嵌入式端应用的比较实际,也了解到目前主要有 caffe2,腾讯ncnn,tensorflow,因为工作用tensorflow比较多 ...

  6. android上部署tensorflow

    https://www.jianshu.com/p/ddeb0400452f 按照这个博客就可以 https://github.com/CrystalChen1017/TSFOnAndroid 这个博 ...

  7. 三分钟快速上手TensorFlow 2.0 (上)——前置基础、模型建立与可视化

    本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 学习笔记类似提纲,具体细节参照上文链接 一些前置的基础 随机数 tf.random uniform(sha ...

  8. 让“是男人就下到100层”在Android平台上跑起来

    原工程:https://github.com/jeekun/DownFloors 移植后的代码:HelloCpp.zip 移植后的APK:HelloCpp.apk 说明:(cocos2d-x版本是“ ...

  9. TensorFlow 在android上的Demo(1)

    转载时请注明出处: 修雨轩陈 系统环境说明: ------------------------------------ 操作系统 : ubunt 14.03 _ x86_64 操作系统 内存: 8GB ...

随机推荐

  1. 修复安卓的bug

    一直不明白listview中的复用,为什么会出现,项目多了.点击同一行的按钮,操作的不是指定行的对象. 仔细研读了代码,突然明白了.因为复用了,导致了position改变了. 伪码 if(conver ...

  2. 【转】伪O2O已死?2016年实体零售将迎来真正的O2O

    O2O果真如所谓的经济学家许小年所说“是两边都是零,中间一个2货”吗?我觉得,经济学家不是说相声的,这种哗众取宠的观点不应该出自一个严谨的经济学家之口.而且,我也不认为许小年真正懂什么叫O2O. 但O ...

  3. 解决mac休眠睡眠异常耗电方法

    备忘

  4. 【BZOJ】1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(dp/线段树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1672 dp很好想,但是是n^2的..但是可以水过..(5s啊..) 按左端点排序后 f[i]表示取第 ...

  5. 在mac下使用ppk文件ssh到远程主机

    You can ssh directly from the Terminal on Mac, but you need to use a .PEM key rather than the putty  ...

  6. RabbitMQ组成及原理介绍-3

    rabbitmq作为成熟的企业消息中间件,实现了应用程序间接口调用的解耦,提高系统的吞吐量. 1.RabbitMQ组成 是由 LShift 提供的一个 Advanced Message Queuing ...

  7. KVC/KVO之暴力的KVC

    本章将分为三个部分: KVC是什么 KVC之Set/Get KVC键值路径之Set/Get KVC是什么 KVC,即 NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间 ...

  8. Oracle正式发布VirtualBox 5.0.22版本

    甲骨文(Oracle)正式发布了VirtualBox 5.0.22版本,该开源和跨平台虚拟化软件的最新维护版本已经面向所有支持平台开放,引入了诸多新特性和功能改善推荐用户尽早完成升级.新版本在Linu ...

  9. Linux上查看和修改字符集

    author :headsen chen date: 2018-05-14  16:20:30 一·查看字符集 字符集在系统中体现形式是一个环境变量,看当前终端使用字符集的有以下几种方式: 1: 1 ...

  10. FZU 2144 Shooting Game (贪心区域划分)

    Problem 2144 Shooting Game Accept: 370 Submit: 1902 Time Limit: 1000 mSec Memory Limit : 32768 KB Pr ...