当前位置:   article > 正文

【前方高能】使用OrangePi就可以玩转AI,你不会不知道吧。基于yolov5的目标检测算法,原来是这么玩的。_orangepi yolov5

orangepi yolov5

目录

一、写在前面

二、OrangePi AIpro开发板介绍

三、手把手教你玩转OrangePi AIpro开发板

1、烧录镜像

2、上电开机&调试串口

3、配置Wi-Fi

4、SSH登录

5、配置samba服务

四、基于OrangePi AIpro和yolov5实现AI算法帮忙图像识别

1、yolov5介绍

2、安装yolov5的开发环境

1)下载代码

2)安装python环境

3、使用原生官方自带的模型来做目标检测

4、训练 coco128 数据集

1)下载coco128数据集文件

2)启动数据集训练操作

5、使用自己训练的数据集来做目标检测

五、OrangePi AIpro开发板总结

六、参考链接


一、写在前面

前段时间,公司因要做嵌入式终端侧的AI推理预研项目,我开始去寻找能满足需求的板子。找了一圈发现,深圳市迅龙软件有限公司旗下开源产品品牌Orange Pi就非常符合我的需求。

 它的官网 我们可以了解到它,迅龙软件成立于2005年,是全球领先的开源硬件和开源软件服务商,致力于让极客、创客、电子爱好者享用到来自中国的优质、低价的科技产品,通过大规模的社会化协作去创建一个更加美好的信息化人类文明。如今,认真用心做开源硬件的公司不多,而迅龙软件就是其一,这无疑给我带来了好印象。

另一方面,现在AI技术火爆,如果在终端边缘侧就完成一些初阶的AI推理,将是一个很好的发展赛道,恰好OrangePi的出现就可以帮助完成这个任务。

二、OrangePi AIpro开发板介绍

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 的官网了解更多信息。

三、手把手教你玩转OrangePi AIpro开发板

1、烧录镜像

拿到板子后,如果SD卡里面是空卡,没有镜像,那么需要给卡烧录镜像,具体可以参考下用户手册的对应章节,建议使用 balenaEtcher-Portable-1.18.4.exe 工具来完成烧录。

完成烧录后,直接插入板子背面的SD卡槽;等待上电。

2、上电开机&调试串口

参考用户手册,我们直接通过适配器给板子上电;在板子的如下图位置,有个MicroUSB的接口,让它连上电脑,电脑的设备管理-端口,找到对应的串口:

用电脑的串口工具,比如SecureCRT,串口连接参数:115200,8,n,1;然后打开串口,就可以看到开机log了:

  1. ep/rc mode: 0
  2. Enable wdg.
  3. #1
  4. Pll Init ..pll[0] inited
  5. pll[2] inited
  6. pll[3] inited
  7. pll[4] inited
  8. pll[5] inited
  9. OK.
  10. reset src:0x000015b6
  11. lsadc dreset ok
  12. lsadc0 init ok
  13. adc0in0:92 adc0in1:589 adc0in2:225
  14. adc1in2:1 adc1in3:91
  15. adc boardId:10251
  16. Load main hboot1_a
  17. Load main hilink25
  18. hboot1a hash 6277dd7a.
  19. Boot Entry.
  20. Load main hboot1_b
  21. [0.090] [BOOT_TRACE]1b start
  22. current[3], last[99]
  23. Dfx init l2 xloader done
  24. Hboot1_a point:[06] 01 02 05 06 11 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  25. sfc set Qline.
  26. Device id: 0x3925c2
  27. Flash unsport Quad.
  28. Boot entry(121)
  29. Iso state: 0x0
  30. pll[6] inited
  31. pll[7] inited
  32. pll[8] inited
  33. pll[9] inited
  34. pll[10] inited
  35. Board info:
  36. sctrl pad info:0xd0940
  37. boardid:10251
  38. bootmode:5
  39. rc/ep mode:0
  40. pg info:0
  41. reset reason:0x15b6
  42. sfc mode:4byte
  43. secure boot:1
  44. current[4], last[99]
  45. [0.143] [BOOT_TRACE]Load main userbasecfg
  46. non-secure vef success!
  47. invalid strategy offset 1.
  48. Cfg type-1 no cfg info.
  49. No info in userBaseConfig
  50. current[5], last[99]
  51. [0.157] [BOOT_TRACE]Load main sysbasecfg
  52. SyscfgProc [345|0|1]
  53. Select a power level based on the low power consumption configuration.!
  54. Update bitmap: 0xf 0x1 0x1 0x0 0x3 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x1 0x5 0x5 0x33
  55. bitmap info update load success
  56. SyscfgProc [347|0|1]
  57. write share info ok
  58. write nosec share info ok
  59. current[6], last[99]
  60. [0.202] [BOOT_TRACE]Load main lpddr
  61. [0.260] [BOOT_TRACE]Dreset Ts OK
  62. current[7], last[99]
  63. [0.261] [BOOT_TRACE]Load main hsmtag
  64. current[8], last[99]
  65. [0.319] [BOOT_TRACE]Load main atf
  66. report atf info to ddr OK
  67. current[9], last[99]
  68. [0.393] [BOOT_TRACE]Load main hboot2
  69. report uefi info to ddr OK
  70. PCIE0/1/2/3 RC Config Preset OK.
  71. use macro setting from syscfg
  72. macro[0] protocols:
  73. ds[0] : PCIE
  74. ds[1] : PCIE
  75. ds[2] : PCIE
  76. ds[3] : PCIE
  77. macro[1] protocols:
  78. ds[0] : USB
  79. ds[1] : USB
  80. ds[2] : USB
  81. ds[3] : USB
  82. 3Macro[0] power up (time 807ms)
  83. 6
  84. iecc disable
  85. Rpt 0x2000, fb 0x800, msdw 0x2000
  86. [0.754] [BOOT_TRACE] ddr init end
  87. Macro[1] power up (time 859ms)
  88. cp_area_l2buf_2_ddr
  89. Dfx init ddr done
  90. Backup bbox data
  91. Copy cfg OK.
  92. Copy cfg OK.
  93. Copy ddr Cache done.
  94. current[10], last[99]
  95. [0.919] [BOOT_TRACE]finish image load.
  96. current[20], last[99]
  97. current[70], last[99]
  98. [926.926]Dreset main core...
  99. Jump to HSM...
  100. NOTICE: Mp conf...NOTICE: ok
  101. NOTICE: Booting Trusted Firmware
  102. NOTICE: BL1:
  103. NOTICE: BL1: Built :
  104. NOTICE: BL1: Booting BL2
  105. NOTICE: BL2:
  106. NOTICE: BL2: Built :
  107. NOTICE: BL1: Booting BL31
  108. NOTICE: BL31:
  109. NOTICE: BL31: Built :
  110. NOTICE: HSM boot keypoint 0x7807f!
  111. NOTICE: A55 wfi ...NOTICE: OK
  112. NOTICE: A55 close
  113. NOTICE: jumper to uefi [1035]
  114. current keypoint[71], last keypoint[99].
  115. macmode:0x1, ulPort:0x0, ulPhyID:0x1CC910, ulMacSpeed:0x2!
  116. The default boot selection will start in 1 seconds
  117. [1.873] [BOOT_TRACE] auto boot.
  118. This is sd boot entry
  119. emmcsd init
  120. count(1)
  121. end
  122. part cnt & map :[6] [0x5F]
  123. force recov flag:[0]
  124. RAWDATA upgrade status&part:[0x0] [0x0]
  125. RECOVE upgrade status&part:[0x0] [0x0]
  126. SYS Enable:0x0, gpio:0x4
  127. recEnable:0x0, gpioStatus:0x0
  128. current keypoint[89], last keypoint[99].
  129. start load os image
  130. try flag:0x1, reset count:0x0
  131. boot2 reset count:0x1
  132. firmware boot1 reset count:0x1
  133. firmware update flag(main):0 0
  134. firmware update flag(back):0 0
  135. Current start mode :0x0 not support.
  136. boot: main.
  137. [3.831] [BOOT_TRACE] load image success.
  138. load crl from Storage media
  139. current keypoint[90], last keypoint[99].
  140. waiting for hsm ..OK
  141. [3.858] [BOOT_TRACE] Tee Load Start.
  142. NOTICE: pub crl does not exist, pub_crl_size = 0x0!
  143. NOTICE: pub crl broken, update crl ok!
  144. NOTICE: cms verify process success.
  145. NOTICE: #TEE Start#
  146. NOTICE: #TEE End#
  147. NOTICE: hw_start_tee done!
  148. [4.107] [BOOT_TRACE] Tee Load Done.
  149. current keypoint[95], last keypoint[99].
  150. 4108 Image.
  151. 4221 Done.
  152. 4221 DTB.
  153. 4225 Done.
  154. [PARTUUID=1ceb0bce-8210-44e4-84ad-afd2ae6581ed]
  155. sec_id:80 0 28 B
  156. [dtb num 0]boardid:0 0 0 0
  157. [dtb num 1]boardid:80 0 0 64
  158. [dtb num 2]boardid:80 0 0 65
  159. [dtb num 3]boardid:80 0 0 A0
  160. [dtb num 4]boardid:80 0 0 96
  161. [dtb num 5]boardid:80 0 0 97
  162. [dtb num 6]boardid:80 0 3 84
  163. [dtb num 7]boardid:80 0 3 85
  164. [dtb num 8]boardid:80 0 3 86
  165. [dtb num 9]boardid:80 0 3 89
  166. [dtb num 10]boardid:80 0 3 87
  167. [dtb num 11]boardid:80 0 C3 E6
  168. [dtb num 12]boardid:80 0 C7 9C
  169. [dtb num 13]boardid:80 0 C7 CE
  170. [dtb num 14]boardid:80 0 C7 D8
  171. No dts found in DTB
  172. ====equalVal[0]=====
  173. Can't find dtb by boardId 0x280B in dt.img, use dtb.
  174. sec_id:80 0 28 B
  175. [dtb num 0]boardid:0 0 0 0
  176. [dtb num 1]boardid:80 0 0 64
  177. [dtb num 2]boardid:80 0 0 65
  178. [dtb num 3]boardid:80 0 0 A0
  179. [dtb num 4]boardid:80 0 0 96
  180. [dtb num 5]boardid:80 0 0 97
  181. [dtb num 6]boardid:80 0 3 84
  182. [dtb num 7]boardid:80 0 3 85
  183. [dtb num 8]boardid:80 0 3 86
  184. [dtb num 9]boardid:80 0 3 89
  185. [dtb num 10]boardid:80 0 3 87
  186. [dtb num 11]boardid:80 0 C3 E6
  187. [dtb num 12]boardid:80 0 C7 9C
  188. [dtb num 13]boardid:80 0 C7 CE
  189. [dtb num 14]boardid:80 0 C7 D8
  190. No dts found in DTB
  191. ====equalVal[0]=====
  192. Can't find dtb by boardId 0x280B in dt.img, use dtb.
  193. isColdBoot index|max[0|0] status[0x15B6]
  194. SC_NORESET_12[0x0]
  195. SC_NORESET_7[0x0]
  196. SC_NORESET_10[0x0]
  197. SC_NORESET_9[0x0]
  198. None reboot reason info updated, Status = Invalid Parameter
  199. fdt delete sata subnode
  200. fdt can not find subnode 0xFFFFFFFF!
  201. ras init done
  202. jump kernel(4359).

一直等到日志输出以下信息时,表示系统启动完毕,同时,开发板的两个LED都会两期;这时可以输入用户名和密码登录shell终端。

  1. NOTICE: el3_int exit!
  2. NOTICE: Int ID:174, syscnt:0x28d30e4f
  3. NOTICE: intNum 174, nodeStatus1 0x40 !
  4. NOTICE: nodeId[0x6], err_count[0x2], err_type[0x1]
  5. NOTICE: [RasCbbCommonHandler]:[71L] moduleBase c1260000
  6. NOTICE: [RasCbbCommonHandler]:[81] UE
  7. NOTICE: [Module] MATA0
  8. NOTICE: [FillHisiModuleErrorInfo]:[275L] moduleID = 0x14
  9. NOTICE: [Module] MATA0
  10. NOTICE: SubSysID:0xff, DeviceID:0x0, SubSysNum:0x0
  11. NOTICE: RECOVERABLE!
  12. NOTICE: HestNotifiedOS
  13. NOTICE: [RasCbbCommonHandler]:[89] Handler end
  14. NOTICE: base = 0xc1260000
  15. NOTICE: ERR_FRL = 0x142aa2
  16. NOTICE: ERR_FRH = 0x0
  17. NOTICE: ERR_CTRLL = 0x515
  18. NOTICE: ERR_CTRLH = 0x0
  19. NOTICE: ERR_STATUSL = 0xfc30050e
  20. NOTICE: ERR_STATUSH = 0x0
  21. NOTICE: ERR_ADDRL = 0x10080010
  22. NOTICE: ERR_ADDRH = 0xe0000001
  23. NOTICE: ERR_MISC0L = 0x0
  24. NOTICE: ERR_MISC0H = 0x7f
  25. NOTICE: ERR_MISC1L = 0xc798005
  26. NOTICE: ERR_MISC1H = 0x800122
  27. NOTICE: el3_int exit!
  28. cpu 0 entering scheduler
  29. >>>>>>>>>>>>LiteOS start succeed!<<<<<<<<<<<
  30. Ubuntu 22.04 LTS orangepiaipro ttyAMA0
  31. orangepiaipro login:
  32. orangepiaipro login:
  33. orangepiaipro login: HwHiAiUser
  34. Password:

用户名是:HwHiAiUser  密码是:Mind@123

同时,root用户的密码也是 Mind@123,后面的操作过程有到sudo,就需要这个密码。

注意,输入密码的时候不会回显,输入完成后按下回车就可以进入到系统了:

3、配置Wi-Fi

由于我装的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网络通讯还是很香的嘛~~~

4、SSH登录

配置好Wi-Fi后,系统在完成启动后,就会自动取连接Wi-Fi热点,同时板子也就具备了网络能力。

OrangePi默认是开启了SSH服务的,所以我们PC电脑通过SSH协议就可以登录系统。

这里我采用的也是SecureCRT工具,新建session,填入开发板的IP和端口号22,以及用户名和密码就可以连上去了,非常的便捷。

登录进去后的显示界面,与调试串口登录系统之后是一样的。

5、配置samba服务

配置samba服务是为了可以很方便的让开发板跟PC电脑传输文件,比如我们要编写代码或者修改脚本之类的场景。

我们可以参考这篇博文:https://blog.csdn.net/gaohuihui258/article/details/120779378

基本就可以完成配置,不过需要注意的是,smb.conf 文件配置homes字段时,记得加上 writeable = yes  否则会出现,windows登录samba共享,但是只能查看不能新增或修改文件。

参考如下:

  1. # Un-comment the following (and tweak the other settings below to suit)
  2. # to enable the default home directory shares. This will share each
  3. # user's home directory as \\server\username
  4. [homes]
  5. ; comment = Home Directories
  6. browseable = no
  7. # By default, the home directories are exported read-only. Change the
  8. # next parameter to 'no' if you want to be able to write to them.
  9. ; read only = yes
  10. writeable = yes
  11. # File creation mask is set to 0700 for security reasons. If you want to
  12. # create files with group=rw permissions, set next parameter to 0775.
  13. create mask = 0755
  14. # Directory creation mask is set to 0700 for security reasons. If you want to
  15. # create dirs. with group=rw permissions, set next parameter to 0775.
  16. directory mask = 0755
  17. # By default, \\server\username shares can be connected to by anyone
  18. # with access to the samba server.
  19. # Un-comment the following parameter to make sure that only "username"
  20. # can connect to \\server\username
  21. # This might need tweaking when using external authentication schemes
  22. valid users = %S

安装完成了之后,可以在windows上通过 【添加一个网络位置】来登录samba共享服务。

在Windows电脑上就可以看到一个类似的磁盘,点进去就可以看到OrangePi家目录的文件了:

四、基于OrangePi AIpro和yolov5实现AI算法帮忙图像识别

1、yolov5介绍

yolov5算法是目前应用最广泛的目标检测算法之一,它基于深度学习技术,在卷积神经网络的基础上加入了特征金字塔网络和SPP结构等模块,从而实现了高精度和快速检测速度的平衡。

它的官方开源地址在这里:https://www.wpsshop.cn/w/Li_阴宅/article/detail/933152

推荐阅读
相关标签
  

闽ICP备14008679号