让手机平板成为AI开发利器:AidLux

想ssh登录自己的手机吗?

想在手机上自由的安装lynx、python、vscode、jupyter甚至飞桨PaddlePaddle、Tensorflow、Pytorch和昇思Mindspore吗?

那么看这里....装上AidLux,以上全都有!

AidLux是一个综合的AI开发平台,底层是Debian。在华为手机的应用商店中,查找aidlux,动动手指即可安装好Linux图形桌面的AidLux

远程登录

启动后,可以从控制台使用ifconfig 或者 使用桌面的“Cloud_ip应用图标”获得其ip地址如:192.168.0.2 ,那么就可以使用ssh 192.168.0.2 -p 9022登录该手机,也可以在浏览器使用http://192.168.0.2:8000 来登录图形界面。

用户名root,默认密码aidlux

安装python3.9环境

系统自带的python3.7环境,有点老,飞桨的ocr例子不能跑,于是直接上python3.9。

在系统app安装python3.9,或者在命令行下执行aid install python-3.9

然后激活pip

python3.9 -m  ensurepip

升级pip

python3.9 -m pip install pip -U -i https://mirror.baidu.com/pypi/simple

安装一些需要的软件

python3.9 -m pip install numpy onnxruntime opencv-python pillow -i https://mirror.baidu.com/pypi/simple

应用测试:

到应用中心安装onnxruntime(这个大约是独立的库或者是python3.7的库,不管有没有用,我是第一时间安装上了)

下载Paddle2ONNX源代码

git clone https://github.com/PaddlePaddle/Paddle2ONNX

PaddleOCR测试

安装需要的库

pip3.9 install shapely pyclipper pillow

进入目录cd Paddle2ONNX/model_zoo/orc下载模型:

# 下载det模型
wget https://bj.bcebos.com/paddle2onnx/model_zoo/ch_PP-OCRv2_det_infer.onnx# 下载rec模型
wget https://bj.bcebos.com/paddle2onnx/model_zoo/ch_PP-OCRv2_rec_infer.onnx# 下载cls模型
wget https://bj.bcebos.com/paddle2onnx/model_zoo/ch_ppocr_mobile_v2.0_cls_infer.onnx

执行识别,刚开始会失败,因为报错需要安装飞桨,众所周知安装飞桨在不顺利的时候会很曲折,编译也很慢。所以用了简单的法子:把predict_cls.py  predict_det.py  predict_rec.py三个文件里面的涉及paddle的代码全部去掉。

python3.9 infer.py  \
--det_model_dir=./ch_PP-OCRv2_det_infer.onnx  \
--rec_model_dir=./ch_PP-OCRv2_rec_infer.onnx  \
--cls_model_dir=./ch_ppocr_mobile_v2.0_cls_infer.onnx  \
--image_path=./images/lite_demo.png

还会有一些零星的报错,可以参考这个文档飞桨ONNX推理部署初探-CSDN博客进行相应的修改,最终这个orc文字识别终于在华为手机上跑起来了!速度感觉比同时代的intel cpu慢很多。作为一个几年前的手机,可能是读取数据有点慢,最终显示的处理时间并不慢:

花费了0.457335秒, 0.901
Finish!

非常棒!

图像分类任务:

进入分类任务目录

cd github/Paddle2ONNX/model_zoo/classification/

# 下载mobilenetv3模型
wget https://bj.bcebos.com/paddle2onnx/model_zoo/mobilenetv3.onnx

执行推理:

python3.9 infer.py --model mobilenetv3.onnx --image_path images/ILSVRC2012_val_00000010.jpeg

推理结果:

TopK Indices:  [153 283 204 259 265]
TopK Scores:  [0.59183264 0.14434364 0.02467778 0.01226416 0.01210706]

非常不错!

总结

总体而言,AidLux让我们的手机能编码能提供linux各项服务,能执行AI推理,我们的手机成了一个随身的代码库,一个随身的AI应用开发库,真的太棒了!

有一个小问题,就是如果AidLux这个服务退出或者手机熄屏后,ssh和网页gui等服务就停止了。手机都是这样的,这点没法跟普通计算机设备比。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/295866.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVAEE之Spring, Spring Boot 和Spring MVC的关系以及区别

1.Spring, Spring Boot 和Spring MVC的关系以及区别 Spring: 简单来说, Spring 是⼀个开发应⽤框架,什么样的框架呢,有这么⼏个标签:轻量级、⼀ 站式、模块化,其⽬的是⽤于简化企业级应⽤程序开发 Spring的主要功能: 管理对象&am…

LabVIEW电力设备在线监测系统

LabVIEW电力设备在线监测系统 在电力行业中,变电站的稳定运行对于保障电力系统的安全性和可靠性至关重要。开发了一种基于LabVIEW软件开发的变电站电力设备在线监测系统,实时监控变电站内部的电力设备状态,确保电力传输的高效与安全。通过对…

C++的字节对齐

什么是字节对齐 参考什么是字节对齐,为什么要对齐? 现代计算机中,内存空间按照字节划分,理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问,这就需要各种类型数据按照一定的规…

java学习之路-类和对象

前言 本文内容: 类的定义及其使用 this的引用 对象的构造及初始化 封装 static成员 代码块讲解 内部类 文章目录 1.类定义和使用 1.1了解什么是面向对象 1.2简单认识类 1.3定义类 1.4栗子 2.类的使用-类的实例化 2.1什么是实例化 2.2类和对象的说明 3.this引…

使用python实现i茅台自动预约

使用python实现i茅台自动预约[仅限于学习,不可商用] 运行: 直接运行 imtApi.py 打包:切换到imt脚本目录,执行打包命令: pyinstaller --onefile imtApi.py这个应用程序可以帮助你进行茅台自动化配置。以下是一些使用…

【热门话题】文言一心与ChatGPT-4:一场跨时代智能对话系统的深度比较

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 文言一心与ChatGPT-4:一场跨时代智能对话系统的深度比较一、技术背景…

第N6周:使用Word2vec实现文本分类

import torch import torch.nn as nn import torchvision from torchvision import transforms,datasets import os,PIL,pathlib,warnings #忽略警告信息 warnings.filterwarnings("ignore") # win10系统 device torch.device("cuda"if torch.cuda.is_ava…

Golang面试系列3-内存管理

3.1 内存分配机制 Go内存管理本质上是一个经过内部优化的内存池:自动伸缩内存池大小,合理的切割内存块。 分配逻辑:针对不同大小对象有不同的分配逻辑 (0,16B)且不含指针的对象:Tiny分配(0,16B)且含指针的对象:正常…

推荐多样性 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略: 各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一个元素,再从第二个列表…

k8s 基础入门

1.namespace k8s中的namespace和docker中namespace是两码事,可以理解为k8s中的namespace是为了多租户,dockers中的namespace是为了网络、资源等隔离 2.deployment kubectl create #新建 kubectl aply #新建 更新 升级: 滚动升级&#x…

pygame--坦克大战(一)

项目搭建 本游戏主要分为两个对象,分别是我方坦克和敌方坦克。用户可以通过控制我方的坦克来摧毁敌方的坦克保护自己的“家”,把所有的敌方坦克消灭完达到胜利。敌方的坦克在初始的时候是默认5个的(这可以自己设置),当然,如果我方坦克被敌方坦克的子弹打中,游戏结束。从…

蓝色wordpress外贸建站模板

蓝色wordpress外贸建站模板 https://www.mymoban.com/wordpress/7.html

Ansys Zemax | 如何将光栅数据从Lumerical导入至OpticStudio(上)

附件下载 联系工作人员获取附件 本文介绍了一种使用Ansys Zemax OpticStudio和Lumerical RCWA在整个光学系统中精确仿真1D/2D光栅的静态工作流程。将首先简要介绍方法。然后解释有关如何建立系统的详细信息。 本篇内容将分为上下两部分,上部将首先简要介绍方法工…

C++——异常机制

目录 一,背景 1.1 C语言处理错误的方式 1.2 C异常概念 二,异常的使用 2.1 异常的简单使用 2.2 异常的匹配原则 2.3 异常抛对象 2.4 异常的重新抛出 2.5 异常安全 三,自定义异常体系 四,异常优缺点 4.1 优点 4.2 缺点 …

声音文件格式有哪几种?常见的声音格式和转换方法分享

随着数字技术的飞速发展,声音文件已经成为了我们日常生活和工作中不可或缺的一部分。无论是音乐、电影、游戏还是各类应用程序,声音文件都扮演着重要的角色。本文将为大家介绍常见的声音文件格式以及如何进行格式转换。 一、常见的声音文件格式 &#x…

shopee虾皮业绩一直没办法提升?不同时期要有不同的运营思路

店铺运营“开荒期”需要根据自身店铺数据调整运营策略,“运营期”就需要更多分析竞品的运营数据,分析接近上架时间段的出单同款/相似款,有效找到影响起量的因素;在出单缓慢,接近瓶颈期时找同行的策略方案,抓…

filetype: python中判断图像格式库imghdr替代库

引言 imghdr库是python中的一个内置库,用来判断图像原本格式的。自己一直有在用,不过近来看到这个库在python 3.13中会被移除。 自己感觉一直被python版本赶着走。这不找了好久,才找到一个替代库–filetype Python各个版本将要移除和可替代…

后台返回数据需要自己匹配图标,图标命名与后台返回的变量保持一致

testItemId为后台返回匹配图标的变量名 sportsTargetsData:{suggestSportTargetId: "2",unlocks: [{ testItemId: vo2max_high_knee, sportTargetName: 心肺能力, indexName: 心肺能力, sportTargetId: 1 },{ testItemId: grip_strength, sportTargetName: 基础力量…

第12章 集合框架

一 集合框架概述 1.1 生活中的容器 1.2 数组的特点与弊端 一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用数组存储对象方面具有一些弊端,而Java 集合…

Linux学习笔记————C 语言版 LED 灯实验

这里写目录标题 一、实验程序编写二、 汇编部分实验程序编写三、C 语言部分实验程序编写四、编译下载验证 汇编 LED 灯实验中,我们讲解了如何使用汇编来编写 LED 灯驱动,实际工作中是很少用到汇编去写嵌入式驱动的,毕竟汇编太难,而…