【MNN学习五】在Android上部署MobileNetSSD之一
目录
一. 烧写Android系统
二. 安装Android-NDK
三. 连接Android设备和Linux主机
四. 部署MobileNetSSD到Android (5. Compile and execute demo)
一. 烧写Android系统
下载固件:sd_ROC-RK3399-PC_Android8.1.0_DEFAULT_181016.img.xz
烧写固件:http://wiki.t-firefly.com/zh_CN/ROC-RK3399-PC/guidebook.html#xia-zai-he-shao-xie-gu-jian
通过以上两步即完成Android系统的准备。
二. 安装Android-NDK
下载链接:https://developer.android.com/ndk/downloads/older_releases.html
参考链接:Android NDK 安装配置指南
三. 连接Android设备和Linux主机
1. 使用TypeC-USB线分别接Android设备和Linux主机,使用 lsusb 命令查看Android设备的ID:
这里,查到设备的ID为2207. (注意:有的TypeC-USB线只能用来充电,不能传输数据,所以lsusb命令不会显示ID)
2. ADB工具的使用
参考链接:ADB的安装和使用
sudo apt-get install android-tools-adbmkdir -p ~/.androidvi ~/.android/adb_usb.ini# add the following line:0x2207sudo vi /etc/udev/rules.d/70-android.rules# add the following line:SUBSYSTEM=="usb", ATTR{idVendor}=="2207", MODE="0666"sudo udevadm control --reload-rulessudo udevadm triggersudo adb kill-serveradb start-serveradb devicesadb shell
3. Android设备打开USB调试模式
a. 依次进入目录 Settings/System/About table/, 鼠标连续左击 Build number 七次进入开发者选项(会有提示)
b. 返回目录 Settings/System即可看到 Developer options, 左击进入打开 USB debuging 选项
c. 进入目录 Settings/Connected devices, USB选项默认为 Charging this device, 这种情况下我们不能在Linux主机上浏览
Android系统的内容(如下图所示Unable to access “ROC RK3399 PC”);若改成 Transfer files 即可在Android设备和Linux主
机之间传递文件。
四. 部署MobileNetSSD到Android (5. Compile and execute demo)
git clone https://github.com/xindongzhang/MNN-APPLICATIONS.gitcd MNN-APPLICATIONS/applications/mssd/tensorflow
adb shell cd /data/local/tmp/tfexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local/tmp/tfndk-buildadb push ../libs/arm64-v8a /data/local/tmp/tfadb push tf_mssd.mnn /data/local/tmp/tfadb push image /data/local/tmp/tf/imageadb pull /data/local/tmp/tf/output ./output
注意:adb push ../libs/arm64-v8a/ /data/local/tmp
下面对 tf_mssd.cpp 进行修改:
std::string image_name = "./body.jpg";std::string model_name = "./tf_body_det.mnn";int forward = MNN_FORWARD_CPU;// int forward = MNN_FORWARD_OPENCL;// int forward = MNN_FORWARD_VULKAN;int precision = 2;int power = 0;int memory = 0;int threads = 1; // single threadint INPUT_SIZE = 300;int OUTPUT_NUM = 1917; // for 300x300
下图是检测结果,单线程CPU需要200ms.(另外,int8量化后需要125ms. 量化前四线程GPU只需30ms)
参考链接:https://github.com/xindongzhang/MNN-APPLICATIONS
https://askubuntu.com/questions/518479/ubuntu-doesnt-recognize-android-devices-anymore
更多相关文章
- 2013.04.03——— android 图片缓存之二LruCache介绍
- Android -- adb devices找不到设备的解决办法
- Android利用Matrix简单处理图片
- 使用远程调试Android设备
- ubuntu 使用adb shell命令识别android设备
- android带有文字的图片按钮的两种实现方式
- 《Android 智能穿戴设备开发-从入门精通》读书笔记
- 如何实现对Android设备进行文本的模拟输入