赞
踩
目录
四、基于OrangePi AIpro和yolov5实现AI算法帮忙图像识别
前段时间,公司因要做嵌入式终端侧的AI推理预研项目,我开始去寻找能满足需求的板子。找了一圈发现,深圳市迅龙软件有限公司旗下开源产品品牌Orange Pi就非常符合我的需求。
从 它的官网 我们可以了解到它,迅龙软件成立于2005年,是全球领先的开源硬件和开源软件服务商,致力于让极客、创客、电子爱好者享用到来自中国的优质、低价的科技产品,通过大规模的社会化协作去创建一个更加美好的信息化人类文明。如今,认真用心做开源硬件的公司不多,而迅龙软件就是其一,这无疑给我带来了好印象。
另一方面,现在AI技术火爆,如果在终端边缘侧就完成一些初阶的AI推理,将是一个很好的发展赛道,恰好OrangePi的出现就可以帮助完成这个任务。
OrangePi AIpro(8-12T)采用昇腾AI技术路线,具体为4核64位处理器+AI处理器,集成图形处理器,支持8-12TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出。 Orange Pi AIpro引用了相当丰富的接口,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口,可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。 Orange Pi AIpro支持Ubuntu、openEuler操作系统,满足大多数AI算法原型验证、推理应用开发的需求。
从官网我们可以拿到板子的用户手册,手册很详细地描述了如何使用板子,体验还是很棒的。
以下是开发的顶层视图和底层面图:
我们可以发现,它的接口是非常丰富,我们使用它足以完成绝大多数的开发场景需求。
另一方面,我们来看下的规格参数:
我的板子是8GB内存的,使用起来,普通应用足够了。
不得不说,能在这样的板子上体验这么高性能的配置,在以往是不可思议的,相信它一定不会让我失望。
其他更多详细信息,可以从 Orange Pi 的官网了解更多信息。
拿到板子后,如果SD卡里面是空卡,没有镜像,那么需要给卡烧录镜像,具体可以参考下用户手册的对应章节,建议使用 balenaEtcher-Portable-1.18.4.exe 工具来完成烧录。
完成烧录后,直接插入板子背面的SD卡槽;等待上电。
参考用户手册,我们直接通过适配器给板子上电;在板子的如下图位置,有个MicroUSB的接口,让它连上电脑,电脑的设备管理-端口,找到对应的串口:
用电脑的串口工具,比如SecureCRT,串口连接参数:115200,8,n,1;然后打开串口,就可以看到开机log了:
- ep/rc mode: 0
- Enable wdg.
- #1
- Pll Init ..pll[0] inited
- pll[2] inited
- pll[3] inited
- pll[4] inited
- pll[5] inited
- OK.
- reset src:0x000015b6
- lsadc dreset ok
- lsadc0 init ok
- adc0in0:92 adc0in1:589 adc0in2:225
- adc1in2:1 adc1in3:91
- adc boardId:10251
- Load main hboot1_a
- Load main hilink25
- hboot1a hash 6277dd7a.
- Boot Entry.
- Load main hboot1_b
- [0.090] [BOOT_TRACE]1b start
- current[3], last[99]
- Dfx init l2 xloader done
- Hboot1_a point:[06] 01 02 05 06 11 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- sfc set Qline.
- Device id: 0x3925c2
- Flash unsport Quad.
- Boot entry(121)
- Iso state: 0x0
- pll[6] inited
- pll[7] inited
- pll[8] inited
- pll[9] inited
- pll[10] inited
- Board info:
- sctrl pad info:0xd0940
- boardid:10251
- bootmode:5
- rc/ep mode:0
- pg info:0
- reset reason:0x15b6
- sfc mode:4byte
- secure boot:1
-
- current[4], last[99]
- [0.143] [BOOT_TRACE]Load main userbasecfg
- non-secure vef success!
- invalid strategy offset 1.
- Cfg type-1 no cfg info.
- No info in userBaseConfig
- current[5], last[99]
- [0.157] [BOOT_TRACE]Load main sysbasecfg
- SyscfgProc [345|0|1]
- Select a power level based on the low power consumption configuration.!
- Update bitmap: 0xf 0x1 0x1 0x0 0x3 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x1 0x5 0x5 0x33
- bitmap info update load success
- SyscfgProc [347|0|1]
- write share info ok
- write nosec share info ok
- current[6], last[99]
- [0.202] [BOOT_TRACE]Load main lpddr
- [0.260] [BOOT_TRACE]Dreset Ts OK
- current[7], last[99]
- [0.261] [BOOT_TRACE]Load main hsmtag
- current[8], last[99]
- [0.319] [BOOT_TRACE]Load main atf
- report atf info to ddr OK
- current[9], last[99]
- [0.393] [BOOT_TRACE]Load main hboot2
- report uefi info to ddr OK
- PCIE0/1/2/3 RC Config Preset OK.
- use macro setting from syscfg
- macro[0] protocols:
- ds[0] : PCIE
- ds[1] : PCIE
- ds[2] : PCIE
- ds[3] : PCIE
- macro[1] protocols:
- ds[0] : USB
- ds[1] : USB
- ds[2] : USB
- ds[3] : USB
- 3Macro[0] power up (time 807ms)
- 6
- iecc disable
- Rpt 0x2000, fb 0x800, msdw 0x2000
- [0.754] [BOOT_TRACE] ddr init end
- Macro[1] power up (time 859ms)
- cp_area_l2buf_2_ddr
- Dfx init ddr done
- Backup bbox data
- Copy cfg OK.
- Copy cfg OK.
- Copy ddr Cache done.
- current[10], last[99]
- [0.919] [BOOT_TRACE]finish image load.
- current[20], last[99]
- current[70], last[99]
- [926.926]Dreset main core...
- Jump to HSM...
- NOTICE: Mp conf...NOTICE: ok
- NOTICE: Booting Trusted Firmware
- NOTICE: BL1:
- NOTICE: BL1: Built :
- NOTICE: BL1: Booting BL2
- NOTICE: BL2:
- NOTICE: BL2: Built :
- NOTICE: BL1: Booting BL31
- NOTICE: BL31:
- NOTICE: BL31: Built :
- NOTICE: HSM boot keypoint 0x7807f!
- NOTICE: A55 wfi ...NOTICE: OK
- NOTICE: A55 close
- NOTICE: jumper to uefi [1035]
- current keypoint[71], last keypoint[99].
- macmode:0x1, ulPort:0x0, ulPhyID:0x1CC910, ulMacSpeed:0x2!
- The default boot selection will start in 1 seconds
- [1.873] [BOOT_TRACE] auto boot.
- This is sd boot entry
- emmcsd init
- count(1)
- end
- part cnt & map :[6] [0x5F]
- force recov flag:[0]
- RAWDATA upgrade status&part:[0x0] [0x0]
- RECOVE upgrade status&part:[0x0] [0x0]
- SYS Enable:0x0, gpio:0x4
- recEnable:0x0, gpioStatus:0x0
- current keypoint[89], last keypoint[99].
- start load os image
- try flag:0x1, reset count:0x0
- boot2 reset count:0x1
- firmware boot1 reset count:0x1
- firmware update flag(main):0 0
- firmware update flag(back):0 0
- Current start mode :0x0 not support.
- boot: main.
- [3.831] [BOOT_TRACE] load image success.
- load crl from Storage media
- current keypoint[90], last keypoint[99].
- waiting for hsm ..OK
- [3.858] [BOOT_TRACE] Tee Load Start.
- NOTICE: pub crl does not exist, pub_crl_size = 0x0!
- NOTICE: pub crl broken, update crl ok!
- NOTICE: cms verify process success.
- NOTICE: #TEE Start#
- NOTICE: #TEE End#
- NOTICE: hw_start_tee done!
- [4.107] [BOOT_TRACE] Tee Load Done.
- current keypoint[95], last keypoint[99].
- 4108 Image.
- 4221 Done.
- 4221 DTB.
- 4225 Done.
- [PARTUUID=1ceb0bce-8210-44e4-84ad-afd2ae6581ed]
- sec_id:80 0 28 B
- [dtb num 0]boardid:0 0 0 0
- [dtb num 1]boardid:80 0 0 64
- [dtb num 2]boardid:80 0 0 65
- [dtb num 3]boardid:80 0 0 A0
- [dtb num 4]boardid:80 0 0 96
- [dtb num 5]boardid:80 0 0 97
- [dtb num 6]boardid:80 0 3 84
- [dtb num 7]boardid:80 0 3 85
- [dtb num 8]boardid:80 0 3 86
- [dtb num 9]boardid:80 0 3 89
- [dtb num 10]boardid:80 0 3 87
- [dtb num 11]boardid:80 0 C3 E6
- [dtb num 12]boardid:80 0 C7 9C
- [dtb num 13]boardid:80 0 C7 CE
- [dtb num 14]boardid:80 0 C7 D8
- No dts found in DTB
- ====equalVal[0]=====
- Can't find dtb by boardId 0x280B in dt.img, use dtb.
- sec_id:80 0 28 B
- [dtb num 0]boardid:0 0 0 0
- [dtb num 1]boardid:80 0 0 64
- [dtb num 2]boardid:80 0 0 65
- [dtb num 3]boardid:80 0 0 A0
- [dtb num 4]boardid:80 0 0 96
- [dtb num 5]boardid:80 0 0 97
- [dtb num 6]boardid:80 0 3 84
- [dtb num 7]boardid:80 0 3 85
- [dtb num 8]boardid:80 0 3 86
- [dtb num 9]boardid:80 0 3 89
- [dtb num 10]boardid:80 0 3 87
- [dtb num 11]boardid:80 0 C3 E6
- [dtb num 12]boardid:80 0 C7 9C
- [dtb num 13]boardid:80 0 C7 CE
- [dtb num 14]boardid:80 0 C7 D8
- No dts found in DTB
- ====equalVal[0]=====
- Can't find dtb by boardId 0x280B in dt.img, use dtb.
- isColdBoot index|max[0|0] status[0x15B6]
- SC_NORESET_12[0x0]
- SC_NORESET_7[0x0]
- SC_NORESET_10[0x0]
- SC_NORESET_9[0x0]
- None reboot reason info updated, Status = Invalid Parameter
- fdt delete sata subnode
- fdt can not find subnode 0xFFFFFFFF!
- ras init done
- jump kernel(4359).
一直等到日志输出以下信息时,表示系统启动完毕,同时,开发板的两个LED都会两期;这时可以输入用户名和密码登录shell终端。
- NOTICE: el3_int exit!
- NOTICE: Int ID:174, syscnt:0x28d30e4f
- NOTICE: intNum 174, nodeStatus1 0x40 !
- NOTICE: nodeId[0x6], err_count[0x2], err_type[0x1]
- NOTICE: [RasCbbCommonHandler]:[71L] moduleBase c1260000
- NOTICE: [RasCbbCommonHandler]:[81] UE
- NOTICE: [Module] MATA0
- NOTICE: [FillHisiModuleErrorInfo]:[275L] moduleID = 0x14
- NOTICE: [Module] MATA0
- NOTICE: SubSysID:0xff, DeviceID:0x0, SubSysNum:0x0
- NOTICE: RECOVERABLE!
- NOTICE: HestNotifiedOS
- NOTICE: [RasCbbCommonHandler]:[89] Handler end
- NOTICE: base = 0xc1260000
- NOTICE: ERR_FRL = 0x142aa2
- NOTICE: ERR_FRH = 0x0
- NOTICE: ERR_CTRLL = 0x515
- NOTICE: ERR_CTRLH = 0x0
- NOTICE: ERR_STATUSL = 0xfc30050e
- NOTICE: ERR_STATUSH = 0x0
- NOTICE: ERR_ADDRL = 0x10080010
- NOTICE: ERR_ADDRH = 0xe0000001
- NOTICE: ERR_MISC0L = 0x0
- NOTICE: ERR_MISC0H = 0x7f
- NOTICE: ERR_MISC1L = 0xc798005
- NOTICE: ERR_MISC1H = 0x800122
- NOTICE: el3_int exit!
- cpu 0 entering scheduler
- >>>>>>>>>>>>LiteOS start succeed!<<<<<<<<<<<
-
- Ubuntu 22.04 LTS orangepiaipro ttyAMA0
- orangepiaipro login:
- orangepiaipro login:
- orangepiaipro login: HwHiAiUser
- Password:
用户名是:HwHiAiUser 密码是:Mind@123
同时,root用户的密码也是 Mind@123,后面的操作过程有到sudo,就需要这个密码。
注意,输入密码的时候不会回显,输入完成后按下回车就可以进入到系统了:
由于我装的Ubuntu镜像是命令行版本的,我并没有使用HDMI连接显示器使用,所以配置Wi-Fi需要使用命令的方式。
配置Wi-Fi要经过以下几步:
扫描无线热点:使用以下命令扫描
nmcli dev wifi
这样就可以看到我的无线热点了:
连接无线热点:使用以下命令连接指定的热点,注意【ap-name】【ap-passwprd】要替换成你自己的无线热点名称和对应的密码。
sudo nmcli dev wifi connect ap-name password ap-passwprd
显示连接无线热点成功后,可以查看OrangePi板子的IP地址,如下图所示:
查看IP的命令是:
ifconfig
基于Wi-Fi网络传输,我们可以用iperf软件来测试一下网络传输性能,我使用手机的 Magic Iperf 这个软件来配合;分别让开发板充当服务器和客户端,得出数据如下:
从这个速率上看,Wi-Fi网络通讯还是很香的嘛~~~
配置好Wi-Fi后,系统在完成启动后,就会自动取连接Wi-Fi热点,同时板子也就具备了网络能力。
OrangePi默认是开启了SSH服务的,所以我们PC电脑通过SSH协议就可以登录系统。
这里我采用的也是SecureCRT工具,新建session,填入开发板的IP和端口号22,以及用户名和密码就可以连上去了,非常的便捷。
登录进去后的显示界面,与调试串口登录系统之后是一样的。
配置samba服务是为了可以很方便的让开发板跟PC电脑传输文件,比如我们要编写代码或者修改脚本之类的场景。
我们可以参考这篇博文:https://blog.csdn.net/gaohuihui258/article/details/120779378
基本就可以完成配置,不过需要注意的是,smb.conf 文件配置homes字段时,记得加上 writeable = yes 否则会出现,windows登录samba共享,但是只能查看不能新增或修改文件。
参考如下:
-
- # Un-comment the following (and tweak the other settings below to suit)
- # to enable the default home directory shares. This will share each
- # user's home directory as \\server\username
- [homes]
- ; comment = Home Directories
- browseable = no
-
- # By default, the home directories are exported read-only. Change the
- # next parameter to 'no' if you want to be able to write to them.
- ; read only = yes
- writeable = yes
-
- # File creation mask is set to 0700 for security reasons. If you want to
- # create files with group=rw permissions, set next parameter to 0775.
- create mask = 0755
-
- # Directory creation mask is set to 0700 for security reasons. If you want to
- # create dirs. with group=rw permissions, set next parameter to 0775.
- directory mask = 0755
-
- # By default, \\server\username shares can be connected to by anyone
- # with access to the samba server.
- # Un-comment the following parameter to make sure that only "username"
- # can connect to \\server\username
- # This might need tweaking when using external authentication schemes
- valid users = %S
安装完成了之后,可以在windows上通过 【添加一个网络位置】来登录samba共享服务。
在Windows电脑上就可以看到一个类似的磁盘,点进去就可以看到OrangePi家目录的文件了:
yolov5算法是目前应用最广泛的目标检测算法之一,它基于深度学习技术,在卷积神经网络的基础上加入了特征金字塔网络和SPP结构等模块,从而实现了高精度和快速检测速度的平衡。
它的官方开源地址在这里:https://www.wpsshop.cn/w/Li_阴宅/article/detail/933152
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。