当一个小白拿到了香橙派 AIpro
最近看见了香橙派 AIpro这块AI算法板,作为一块与华为合作的国产算力板,引起了我强烈的好奇心,可作为一名从未使用过香橙派,也未曾深究过AI算法的“小白”,来看我是如何征服这块新的领域吧。
准备工作
当我拿到这块板子之后,首先给我的感觉就是很沉,元件集成度很高,各种元件都紧密的集中在这块巴掌大的板子上。
香橙派 AIpro配备的接口也很丰富,两个HDMI2.0口,支持双4k视频输出,支持一个MIPI DSI屏输出,支持两个MIPI接口摄像头输入,可惜的是目前只有一个HDMI口支持Linux桌面显示,等待软件升级才能双HDMI口支持。还配备了一个千兆网口,两个usb3.0口,一个type-c3.0口(可惜不是雷电口),一个3.5mm耳机口,一个MIPI DSI接口,支持自定义连接小屏幕,两个MIPDI CSI摄像头接口,一个M.2 M-KEY 2280长度的固态硬盘接口,一个eMMc接口,一个tf卡接口(对穷人可太友好了哈哈哈),背面还有两个启动方式拨片开关,支持四种启动方式,侧面存在一个reset按键和一个一键关机按键与一个Micro USB调试口,能满足绝大多数开发者的各种需求了,对于我这个小白来说可真是大涨眼界,小小一块板子能塞下这么多东西。
接下来就是实实在在的准备工作了,香橙派 AIpro支持HDMI连接显示器显示linux桌面端,也可以通过ssh进行远程开发,小白选择将香橙派放置到一个环境好的地方配置好网络地址使用ssh远程使用。
配置静态地址
参考香橙派官网的用户手册进行网络相关的配置:附上用户手册地址
设置远程ssh登录
首先香橙派 AIpro内置的系统以及为我们预置了很多依赖,ssh直接使用就行,但小白发现系统内没有.ssh文件夹,不能直接添加密钥进行偷懒式登录,于是小白网上寻找资料后找出了以下应对方法:
sh localhost
# 创建.sh文件夹,但文件夹内没有authorized_keys这个文件
ssh-keygen -t rsa
# 生成香橙内部的id_rsa文件
cd .ssh
mv id_rsa.pub authorized_keys
chmod 600 authorized_keys
# 然后将远ssh的电脑的sshkey添加到authorized_keys里就可以了
以上,准备工作就做完了,小白就可以使用自己的电脑来使用这块香橙派 AIpro了
体验内置的A实例
香橙派 AIpro内置了 Jupyter Lab,并贴心的为我们配置好了环境,还准备了9个AI样例供我们体验
启动 Juter Lab
/samples/notebooks/start_notebook.sh
到打印中 Jupyter Lab给出的网址
进入 Jupyter Lab,点开左侧文件夹进入./samples/notebooks/中可以看见预置的9个AI实例
从上往下分别是目标检测样例,文字识别样例,目标分类样例,图像曝光增强样例,卡通图像生成样例,蛋白质分类评估样例,细胞图像分割样例,人像分割与背景替换样例,语音识别样例
运行人像分割与背景替换样例
点开08-portrait_pictures文件夹,双击其中的main.ipynb文件,我们观察下此时的文件结构,再稍微瞅瞅main.ipynb中的代码,不难发现data文件夹下的两张图片就是一张人像图一张背景图,小白直接找两张图片替换进去看看结果
点击运行之后没过几秒就生成了图片,虽然人物的发丝部分扣的没那么干净,有部分细节丢失了,但相比手工抠图的繁琐,效率直线提升,而剩下的这些瑕疵调整起来也简简单单,很容易就能达到自己想要的效果。
其中需要注意的是替换的两张图片的大小需要对应,或者背景图比人物图大也可以,不然程序会运行报错,美中不足的是实例算法对于扣除的人物的位置以及大小不能只能进行放置,这部分我们后续改写下算法应该可以解除这个问题。
编译openwrt
openwrt作为一个广受欢迎的嵌入式设备的Linux操作系统,深受广大开发者的喜爱,其所具有的非单一且不可更改固件特性以及提供的软件包管理功能完全可写, 是一个无需围绕它构建完整固件就能开发应用程序的框架; 对于普通用户来说,这意味着拥有了完全定制的能力,能以意想不到的方式使用该设备,下面编译一个简易的openwrt路由系统来测试下系统性能
1.更新系统软件
sudo apt-get update
2.安装openwrt编译环境
sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc
3.下载openwrt源代码
可以得到以下文件夹
cd ~
git clone https://github.com/openwrt/openwrt.git
git branch -a
查看当前自己的分支,可以通过check加上对应版本号切换为对应版本,我这里已经切换过了
4.更新软件
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
注意,中间可能需要科学上网来防止有些包下载不了,遇见更新失败的情况可以多更新几次
5.测试编译环境
make defconfig
6.配置编译内容
make menuconfig
进入如下的配置页面,设置必要选项
Target System (Atheros AR7xxx/AR9xxx) 选择处理器类型
Subtarget (Devices with small flash) 选择默认
Target Profile (TP-LINK TL-WR703N v1) 选择路由器型号
LuCI —>
1.Collections —>
<*> luci… LuCI interface with Uhttpd as Webserver (default) 添加一个Luciweb界面
LuCI —>
2. Modules —>
Translations —>
<*> Chinese (zh-cn) 选择语言
通过方向键进行选择,回车键进入,空格键选择,其中选项前面的 表示编译为独立的包,即类似安装包,不会在编译好的系统中存在,需要另外安装, <*> 表示编译为内建包,即相当于直接编译至系统内部,不需要另外再安装,连续按下两次退出键 ESC 返回上一级目录,最后保存好的配置文件将会在当前的 OpenWrt 目录下生成一个名为 .config 的隐藏文件生成固件
7.下载源以及多核编译依赖
此命令将会预先下载你依赖的所有源代码,同时开启支持多核编译的功能,这样你才可以成功编译,并且使用多核编译提升编译速度
make download
8.开始编译
等待上面的内容下载完毕后就可以进行编译了
make -j
(
(
((
(((nproc)+1)) V=s
使用全部核进行编译,并输出日志,方便寻找第一次编译出问题的地方
等待漫长的编译之后可以在 “ bin/targets/对应cpu型号/ ” 文件夹下找到生成的固件,导出后就可以给对应的机子升级了,首次编译耗时比较长,二次编译就快很多了
总结
对于香橙派AIpro的简单使用之后,体验还是很好的,多样化的开发方式满足不同人群的使用习惯,图形化的桌面操作简洁清爽,多样化的接口提供无限可能,不过目前使用时间过短,还有很多功能未能体验,后续有时间会分享更多的使用体验。