热度 5
2022-8-4 11:17
1239 次阅读|
0 个评论
一、 硬件平台 平台: OK3399 -C 系统: Desktop 模块: TB- RK1808 S0 环境准备: 飞凌 OK3399-C 开发板 , rk1808 人工智能计算棒 (固件版本为 V1.3.4 ) , usb 摄像头,摄像头和计算棒都插入 OK3399-C开发板 。 使用 lsusb 命令 查看,如下( 红框 部分 2207:0018 即为 RK1808 人工智能计算棒): 输入命令如下: 二、 概述 AI 计算区分为四个不同的象限,分别是云端训练、云端推理,边缘训练以及边缘推理。其中终端推理,几乎都集中在 Arm 架构生态上。 AI 神经网络计算目前可以通过 CPU 、 GPU 、 DSP 、 NPU 、 FAGA 等完成,但不同的硬件特性会导致效率和功耗的不同。其中 NPU —— 嵌入式 神经网络处理器采用“数据驱动并行计算”的架构,最擅长的就是视频、图像类的海量多媒体数据的处理,并且相比 GPU 等具有更低的功耗。我司推出 OK3399-CDesktop+RK1808 (含 3Tops 算力 NPU )的组合,在满足 AI 边缘计算 的情况下,使得功耗大幅降低。 RK1808计算棒拥有主动模式和被动模式两种模 式。 主动模式下, RK1808 人工智能计算棒是一个专用 AI 应用模块。 RK1808 人工智能计算棒作为主动设备, RK1808 人工智能计算棒内部默认已安装 rknn-toolkit 和 rknn-api ,上位机(也称宿主机)无需安装 rknn-toolkit 和 rknn-api ,模型及算法固化在 RK1808 人工智能计算棒中, OK3399-C 通过 USB 口向计算棒输入数据(例如图片和视频流), RK1808 人工智能计算棒自动完成数据的前处理、推理、后处理,然后把处理结果通过 USB 口输出给 OK3399-C。 为了方便用户通过 USB 口 传输数据 , RK1808 人工智能计算棒会把 USB 口虚拟成网卡等标准设备,用户只需通过标准设备接口的操作(例如网络的 socket 编程)即可完成对 RK1808 人工智能计算棒数据的输入和输出。 细节如下: 1.RK1808 计算棒插入上位机后,会被虚拟成网卡设备 2. 上位机 OK3399-C 进行虚拟网卡配置,配置 IP 为 192.168.180.1 ,保证上位机和 1808 中间的 网络连接 正常 3. 计算棒默认 IP 为 192.168.180.8 ,账号密码皆为 toybrick ,用户可以 SSH 登录计算棒,拷贝模型和 server 服务程序到计算棒 4. 计算棒端运行 server 服务程序,用来接收上位机的连接请求,并调用 RKNN 进行处理,再返回结果 5. 上位机运行 client 程序,连接 server 成功之后,发送推理请求,从 1808 端获取返回结果 三、 计算棒网络 配置与网络 共享 配置 1 、 计算棒网络 配置 上位机使用 OK3399-CForlinx Desktop 系统 ,点击右下角网络按钮选择弹出窗口中的 “ Edit Connections... ”选项: 选择计算棒 usb 网卡生成的有线网络节点: 配置该节点为手动模式,设置 IP : 192.168.180.1 ,子网掩码: 255.255.255.0 ,并保存: 终端输入 ifconfig 指令查看网络节点配置如下,可见 usb 网卡配置完成: ping 一下 1808 计算棒网络 192.168.180.8 ,如下网络可以连通: 使用 ssh 登录 1808 计算棒,用户名和密码默认都为 toybrick ,如下登陆成功: 2 、网络 共享 配置 运行 ifconfig ,可以看到 e th0 、 wlan0 等宿主机 网卡, 我们 用于访问外网, enx10dcb69f022c 为 USB 网卡( RK1808 人工智能计算棒虚拟网卡)。不同的系统网卡名称可能不一样,以实际网卡名称为准。 首先配置宿主机网络,使宿主机可以连通以太网,这里我们使用 wlan0 节点来上网,具体配置不再赘述。 命令行执行如下命令,其中 enx10dcb69f022c 需要修改成用户本地实际值;正常情况只要设置一次即可,若拔插设备发现网卡名称改变了或者用户手动删除该网卡,则需要重新设置。 1.sudonmcliconnectionaddcon-nametoybricktypeethernetifnameenx10dcb69f022cautoconnectyesip4192.168.180.1/24 配置 NAT 功能,执行如下命令,其中 eno1 需要修改成用户本地实际值;关机失效,所以每次电脑重启都要重新设置。 1.sudosysctl-wnet.ipv4.ip_forward=1 sudoiptable-F sudoiptables-tnat-F sudoiptables-tnat-APOSTROUTING-owlan0 -jMASQUERADE 注意: 以自己开发板联网的实际端口为准,例: eth0 iptables 命令部分释义如下: iptables --help --flush -F Delete all rules in chain or all chains --table -t table table to manipulate (default: `filter') --append -A chain Append to chain --jump -j target target for rule (may load target extension) MASQUERAD ,地址伪装,算是 snat 中的一种特例,可以实现自动化的 snat SNAT 是 source networkaddress translation 的缩写,即源地址目标转换。比如,多个 PC 机使用 ADSL 路由器共享上网,每个 PC 机都配置了内网 IP , PC 机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的 ip ,当外部网络的服务器比如网站 web 服务器接到访问请求的时候,他的日志记录下来的是路由器的 ip 地址,而不是 pc 机的内网 ip ,这是因为,这个服务器收到的数据包的报头里边的“源地址”,已经被替换了,所以叫做 SNAT ,基于源地址的地址转换。 DNAT 是 destination networkaddress translation 的缩写,即目标网络地址转换,典型的应用是,有个 web 服务器放在内网配置内网 ip ,前端有个防火墙配置公网 ip ,互联网上的访问者使用公网 ip 来访问这个网站,当访问的时候,客户端发出一个数据包,这个数据包的报头里边,目标地址写的是防火墙的公网 ip ,防火墙会把这个数据包的报头改写一次,将目标地址改写成 web 服务器的内网 ip ,然后再把这个数据包发送到内网的 web 服务器上,这样,数据包就穿透了防火墙,并从公网 ip 变成了一个对内网地址的访问了,即 DNAT ,基于目标的网络地址转换。