当前位置:   article > 正文

SOPHON算能科技新版SDK环境配置以及C++ demo使用过程_sophonsdkuserguide

sophonsdkuserguide

目录

1 SDK大包下载

2 获取SDK中的库文件和头文件

2.1 注意事项

2.2 交叉编译环境搭建

2.2.1 首先安装工具链

2.2.2 解压sophon-img包里的libsophon_soc__aarch64.tar.gz,将lib和include的所有内容拷贝到soc-sdk文件夹

2.2.3 解压sophon-mw包里的sophon-mw-soc__aarch64.tar.gz,将sophon-mw下lib和include的所有内容拷贝到soc-sdk文件夹。

2.3 运行环境配置

2.3.1 格式化内存卡问题

3 C++推理demo代码

参考文献:


1 SDK大包下载

技术资料

从上面网址下载

 下载完之后解压,里面包含很多内容

这篇博客主要记录下自己使用新的C++推理demo以及新的SDK库和头文件的过程,至于使用SDK大包里面的mlir进行模型转换的方法步骤在另一篇博客里面:利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤_mlir tpu-CSDN博客

2 获取SDK中的库文件和头文件

要想编译或者运行C++ demo,那么都需要用到SDK里面的库文件或者头文件,因此首先要获取头文件或者库文件,下面的操作都是基于第一步下载的SDK大包的基础上进行的。

2.1 注意事项

先简单看一下SDK引言里面的注意事项

  • 新的SOPHONSDK不再提供官方docker,可直接在宿主机上使用deb包安装软件库包,也可以参考《LIBSOPHON使用手册》第6章构建自己的镜像。

  • PCIe模式下,如果已经装了BM1684 SDK 的驱动,请先卸载旧的 BM1684 SDK 的驱动,再安装sophon-driver_x.y.z_amd64.deb包,具体可参考《LIBSOPHON使用手册》第3章。

  • sophon-mw-sophon-ffmpeg 依赖 sophon-libsophon 包,而 sophon-mw-sophon-opencv 依赖 sophon-mw-sophon-ffmpeg,因此在安装次序上必须先安装 libsophon,然后 sophon-mw-sophon-ffmpeg,最后安装 sophon-mw-sophon-opencv。

  • 推荐使用cmake中的find_package查找libsophon和sophon-mw的库包,并链接到自己的程序中。

  • 部分头文件不包含于libsophon,如bm_wrapper.hpp、utils.hpp。

  • SoC模式下,原来/system下的软件库包,现位于/opt/sophon/下。

  • SoC模式下,通过开机时的systemd服务,自动加载/opt/sophon/libsophon-current/data下的ko内核模块。如用户定义的自启动服务,并且依赖BM168X,请确保在ko加载后启动。

  • 新的TPU-MLIR和TPU-NNTC使用tpu_model替换原来的bm_model.bin,使用方法相同。

2.2 交叉编译环境搭建

2.2.1 首先安装工具链

sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

这个我电脑中之前就有

  1. which aarch64-linux-gnu-g++
  2. /data/chw/gcc-linaro-11.3.1-2022.06-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++

2.2.2 解压sophon-img包里的libsophon_soc_<x.y.z>_aarch64.tar.gz,将lib和include的所有内容拷贝到soc-sdk文件夹

  1. cd Release_v2312-LTS/
  2. cd sophon-img_20231116_213307/
  3. mkdir -p soc-sdk
  4. tar -zxf libsophon_soc_0.5.0_aarch64.tar.gz
  5. cp -drf libsophon_soc_0.5.0_aarch64/opt/sophon/libsophon-0.5.0/include/ ./soc-sdk/
  6. cp -drf libsophon_soc_0.5.0_aarch64/opt/sophon/libsophon-0.5.0/lib/ ./soc-sdk/
  7. ll soc-sdk/

2.2.3 解压sophon-mw包里的sophon-mw-soc_<x.y.z>_aarch64.tar.gz,将sophon-mw下lib和include的所有内容拷贝到soc-sdk文件夹。

  1. cd sophon-mw_20231116_113811/
  2. tar -zxf sophon-mw-soc_0.7.3_aarch64.tar.gz
  3. cp -drf sophon-mw-soc_0.7.3_aarch64/opt/sophon/sophon-ffmpeg_0.7.3/lib ../sophon-img_20231116_213307/soc-sdk/
  4. cp -drf sophon-mw-soc_0.7.3_aarch64/opt/sophon/sophon-ffmpeg_0.7.3/include ../sophon-img_20231116_213307/soc-sdk/
  5. cp -drf sophon-mw-soc_0.7.3_aarch64/opt/sophon/sophon-opencv_0.7.3/lib/ ../sophon-img_20231116_213307/soc-sdk/
  6. cp -drf sophon-mw-soc_0.7.3_aarch64/opt/sophon/sophon-opencv_0.7.3/include/ ../sophon-img_20231116_213307/soc-sdk/

2.3 运行环境配置

我使用的是SOC模式,而非PCIE模式,因此参考文档中的环境配置-SOC章节。

使用sdk大包中sophon-img下的sdcard刷机包刷机,然后/opt/sophon/下就会有libsophon、sophon-opencv和sophon-ffmpeg运行库包。只需用export PYTHONPATH=$PYTHONPATH:设置环境变量即可。

2.3.1 格式化内存卡问题

 我想用内存卡对算能科技的BM1684盒子进行刷机,结果没有刷机成功,问题在于我的内存卡是用windows系统格式化的,然后格式化之后的内存卡有个多余的分区

而盒子要求这里比如只能有sdb不能有sdb1. 

  1. a、显示sd卡状态。执行命令 lsblk 会显示sd卡会有分区,比如sdb1
  2. b、取消挂载。umount /dev/sdb1
  3. c、格式化TF卡,sudo mkfs.vfat -I /dev/sdb(合并所有分区,例如:/dev/sdb设备下 sdb1 、sdb2分区,使用-I参数可以合并格式化所有分区 )
  4. d、检查sd卡是否合并成功, lsblk -f 只有sdb,没有sdb1等分区,-f参数还可以看到格式是不是vfat。

3 C++推理demo代码

C++推理demo在github上有:https://github.com/sophgo/sophon-demo/tree/release/sample/YOLOv5/cpp/yolov5_bmcv

在上面下载的SDK大包里面也有C++推理demo代码

但是这时候如果想编译,那么还缺少算能的库和头文件,在前面soc-sdk的时候已经把库和头文件全都拷贝过去了,这里把前面的库和头文件都拷贝过来,

  1. 2037 cp -drf /data/chw/bitedalu_20220713/Release_230701-public/sophon-img_20230810_221353/soc-sdk/include/* ./include/
  2. 2038 cp -drf /data/chw/bitedalu_20220713/Release_230701-public/sophon-img_20230810_221353/soc-sdk/lib/* ./lib/

然后还有一些头文件也需要拷贝过来,就是在

还有个源文件也要拷贝过来

然后,我这里创建了个demo文件夹把mainc.pp放里面,

创建了cpp文件件把yolov5.cpp和ff_decode.cpp放里面。

最后的整体目录如下

  1. ├── chw_makefile
  2. ├── CMakeLists.txt
  3. ├── cpp
  4. │   ├── ff_decode.cpp
  5. │   ├── ff_decode.o
  6. │   ├── yolov5.cpp
  7. │   └── yolov5.o
  8. ├── data
  9. │   ├── coco.names
  10. │   ├── images
  11. │   │   ├── 1111bus.jpg
  12. │   │   ├── 1.jpg
  13. │   │   ├── accident.mp4
  14. │   │   ├── bus.jpg
  15. │   │   ├── conflict .mp4
  16. │   │   ├── overflow.mp4
  17. │   │   └── 南京路-东海路南电警-EQ.mp4
  18. │   └── models
  19. │   ├── easnet_fp8_640_1.bmodel_new
  20. │   ├── easnet_fp8_640_1.bmodel_old
  21. │   └── yolov5s_1684_f32_sym.bmodel
  22. ├── demo
  23. │   └── main.cpp
  24. ├── env_demo
  25. ├── include
  26. │   ├── bm1682_profile.h
  27. │   ├── bm1684_profile.h
  28. │   ├── bm1684x_profile.h
  29. │   ├── bmblob.h
  30. │   ├── bmcnnctx.h
  31. │   ├── bmcpu_common.h
  32. │   ├── bmcpu_dev.h
  33. │   ├── bmcpu.h
  34. │   ├── bmcv_api_ext_c.h
  35. │   ├── bmcv_api_ext.h
  36. │   ├── bmcv_api.h
  37. │   ├── bmdef.h
  38. │   ├── bmfunc
  39. │   │   ├── bmdnn_func.h
  40. │   │   └── bmfunc.h
  41. │   ├── bm_ion.h
  42. │   ├── bmjpuapi.h
  43. │   ├── bmjpuapi_jpeg.h
  44. │   ├── bmlib_runtime.h
  45. │   ├── bmlog.hpp
  46. │   ├── bmnet.h
  47. │   ├── bmnn_utils.h
  48. │   ├── bmodel.hpp
  49. │   ├── bmqueue.h
  50. │   ├── bmrt_arch_info.h
  51. │   ├── bmruntime_common.h
  52. │   ├── bmruntime_cpp.h
  53. │   ├── bmruntime.h
  54. │   ├── bmruntime_interface.h
  55. │   ├── bmruntime_legacy.h
  56. │   ├── bmruntime_profile.h
  57. │   ├── bmtap2
  58. │   │   ├── bmruntime_bmnet.h
  59. │   │   ├── bmruntime.hpp
  60. │   │   └── bmruntime_inner.h
  61. │   ├── bm_video_interface.h
  62. │   ├── bmvppapi.h
  63. │   ├── bmvpp.h
  64. │   ├── bmvpuapi_common.h
  65. │   ├── bmvpuapi_enc.h
  66. │   ├── bmvpuapi.h
  67. │   ├── bmvpu.h
  68. │   ├── bmvpu_logging.h
  69. │   ├── bmvpu_types.h
  70. │   ├── bm_wrapper.hpp
  71. │   ├── ff_decode.hpp
  72. │   ├── flatbuffers
  73. │   │   ├── base.h
  74. │   │   ├── code_generators.h
  75. │   │   ├── flatbuffers.h
  76. │   │   ├── flatc.h
  77. │   │   ├── flexbuffers.h
  78. │   │   ├── grpc.h
  79. │   │   ├── hash.h
  80. │   │   ├── idl.h
  81. │   │   ├── minireflect.h
  82. │   │   ├── reflection_generated.h
  83. │   │   ├── reflection.h
  84. │   │   ├── registry.h
  85. │   │   ├── stl_emulation.h
  86. │   │   └── util.h
  87. │   ├── jpu_io.h
  88. │   ├── jpu_lib.h
  89. │   ├── jpu_logging.h
  90. │   ├── json.hpp
  91. │   ├── libavcodec
  92. │   │   ├── ac3_parser.h
  93. │   │   ├── adts_parser.h
  94. │   │   ├── avcodec.h
  95. │   │   ├── avdct.h
  96. │   │   ├── avfft.h
  97. │   │   ├── d3d11va.h
  98. │   │   ├── dirac.h
  99. │   │   ├── dv_profile.h
  100. │   │   ├── dxva2.h
  101. │   │   ├── jni.h
  102. │   │   ├── mediacodec.h
  103. │   │   ├── qsv.h
  104. │   │   ├── vaapi.h
  105. │   │   ├── vdpau.h
  106. │   │   ├── version.h
  107. │   │   ├── videotoolbox.h
  108. │   │   ├── vorbis_parser.h
  109. │   │   └── xvmc.h
  110. │   ├── libavdevice
  111. │   │   ├── avdevice.h
  112. │   │   └── version.h
  113. │   ├── libavfilter
  114. │   │   ├── avfilter.h
  115. │   │   ├── buffersink.h
  116. │   │   ├── buffersrc.h
  117. │   │   └── version.h
  118. │   ├── libavformat
  119. │   │   ├── avformat.h
  120. │   │   ├── avio.h
  121. │   │   └── version.h
  122. │   ├── libavutil
  123. │   │   ├── adler32.h
  124. │   │   ├── aes_ctr.h
  125. │   │   ├── aes.h
  126. │   │   ├── attributes.h
  127. │   │   ├── audio_fifo.h
  128. │   │   ├── avassert.h
  129. │   │   ├── avconfig.h
  130. │   │   ├── avstring.h
  131. │   │   ├── avutil.h
  132. │   │   ├── base64.h
  133. │   │   ├── blowfish.h
  134. │   │   ├── bprint.h
  135. │   │   ├── bswap.h
  136. │   │   ├── buffer.h
  137. │   │   ├── camellia.h
  138. │   │   ├── cast5.h
  139. │   │   ├── channel_layout.h
  140. │   │   ├── common.h
  141. │   │   ├── cpu.h
  142. │   │   ├── crc.h
  143. │   │   ├── des.h
  144. │   │   ├── dict.h
  145. │   │   ├── display.h
  146. │   │   ├── downmix_info.h
  147. │   │   ├── encryption_info.h
  148. │   │   ├── error.h
  149. │   │   ├── eval.h
  150. │   │   ├── ffversion.h
  151. │   │   ├── fifo.h
  152. │   │   ├── file.h
  153. │   │   ├── frame.h
  154. │   │   ├── hash.h
  155. │   │   ├── hmac.h
  156. │   │   ├── hwcontext_bmcodec.h
  157. │   │   ├── hwcontext_cuda.h
  158. │   │   ├── hwcontext_d3d11va.h
  159. │   │   ├── hwcontext_drm.h
  160. │   │   ├── hwcontext_dxva2.h
  161. │   │   ├── hwcontext.h
  162. │   │   ├── hwcontext_mediacodec.h
  163. │   │   ├── hwcontext_qsv.h
  164. │   │   ├── hwcontext_vaapi.h
  165. │   │   ├── hwcontext_vdpau.h
  166. │   │   ├── hwcontext_videotoolbox.h
  167. │   │   ├── imgutils.h
  168. │   │   ├── intfloat.h
  169. │   │   ├── intreadwrite.h
  170. │   │   ├── lfg.h
  171. │   │   ├── log.h
  172. │   │   ├── lzo.h
  173. │   │   ├── macros.h
  174. │   │   ├── mastering_display_metadata.h
  175. │   │   ├── mathematics.h
  176. │   │   ├── md5.h
  177. │   │   ├── mem.h
  178. │   │   ├── motion_vector.h
  179. │   │   ├── murmur3.h
  180. │   │   ├── opt.h
  181. │   │   ├── parseutils.h
  182. │   │   ├── pixdesc.h
  183. │   │   ├── pixelutils.h
  184. │   │   ├── pixfmt.h
  185. │   │   ├── random_seed.h
  186. │   │   ├── rational.h
  187. │   │   ├── rc4.h
  188. │   │   ├── replaygain.h
  189. │   │   ├── ripemd.h
  190. │   │   ├── samplefmt.h
  191. │   │   ├── sha512.h
  192. │   │   ├── sha.h
  193. │   │   ├── spherical.h
  194. │   │   ├── stereo3d.h
  195. │   │   ├── tea.h
  196. │   │   ├── threadmessage.h
  197. │   │   ├── timecode.h
  198. │   │   ├── time.h
  199. │   │   ├── timestamp.h
  200. │   │   ├── tree.h
  201. │   │   ├── twofish.h
  202. │   │   ├── version.h
  203. │   │   └── xtea.h
  204. │   ├── libswresample
  205. │   │   ├── swresample.h
  206. │   │   └── version.h
  207. │   ├── libswscale
  208. │   │   ├── swscale.h
  209. │   │   └── version.h
  210. │   ├── libyuv
  211. │   │   ├── basic_types.h
  212. │   │   ├── compare.h
  213. │   │   ├── compare_row.h
  214. │   │   ├── convert_argb.h
  215. │   │   ├── convert_from_argb.h
  216. │   │   ├── convert_from.h
  217. │   │   ├── convert.h
  218. │   │   ├── cpu_id.h
  219. │   │   ├── macros_msa.h
  220. │   │   ├── mjpeg_decoder.h
  221. │   │   ├── planar_functions.h
  222. │   │   ├── rotate_argb.h
  223. │   │   ├── rotate.h
  224. │   │   ├── rotate_row.h
  225. │   │   ├── row.h
  226. │   │   ├── scale_argb.h
  227. │   │   ├── scale.h
  228. │   │   ├── scale_row.h
  229. │   │   ├── version.h
  230. │   │   └── video_common.h
  231. │   ├── libyuv.h
  232. │   ├── md5
  233. │   │   └── md5.h
  234. │   ├── model_generated.h
  235. │   ├── opencv4
  236. │   │   └── opencv2
  237. │   │   ├── calib3d
  238. │   │   │   ├── calib3d_c.h
  239. │   │   │   └── calib3d.hpp
  240. │   │   ├── calib3d.hpp
  241. │   │   ├── core
  242. │   │   │   ├── affine.hpp
  243. │   │   │   ├── av.hpp
  244. │   │   │   ├── base.hpp
  245. │   │   │   ├── bindings_utils.hpp
  246. │   │   │   ├── bmcv.hpp
  247. │   │   │   ├── bufferpool.hpp
  248. │   │   │   ├── check.hpp
  249. │   │   │   ├── core_c.h
  250. │   │   │   ├── core.hpp
  251. │   │   │   ├── cuda
  252. │   │   │   │   ├── block.hpp
  253. │   │   │   │   ├── border_interpolate.hpp
  254. │   │   │   │   ├── color.hpp
  255. │   │   │   │   ├── common.hpp
  256. │   │   │   │   ├── datamov_utils.hpp
  257. │   │   │   │   ├── detail
  258. │   │   │   │   │   ├── color_detail.hpp
  259. │   │   │   │   │   ├── reduce.hpp
  260. │   │   │   │   │   ├── reduce_key_val.hpp
  261. │   │   │   │   │   ├── transform_detail.hpp
  262. │   │   │   │   │   ├── type_traits_detail.hpp
  263. │   │   │   │   │   └── vec_distance_detail.hpp
  264. │   │   │   │   ├── dynamic_smem.hpp
  265. │   │   │   │   ├── emulation.hpp
  266. │   │   │   │   ├── filters.hpp
  267. │   │   │   │   ├── funcattrib.hpp
  268. │   │   │   │   ├── functional.hpp
  269. │   │   │   │   ├── limits.hpp
  270. │   │   │   │   ├── reduce.hpp
  271. │   │   │   │   ├── saturate_cast.hpp
  272. │   │   │   │   ├── scan.hpp
  273. │   │   │   │   ├── simd_functions.hpp
  274. │   │   │   │   ├── transform.hpp
  275. │   │   │   │   ├── type_traits.hpp
  276. │   │   │   │   ├── utility.hpp
  277. │   │   │   │   ├── vec_distance.hpp
  278. │   │   │   │   ├── vec_math.hpp
  279. │   │   │   │   ├── vec_traits.hpp
  280. │   │   │   │   ├── warp.hpp
  281. │   │   │   │   ├── warp_reduce.hpp
  282. │   │   │   │   └── warp_shuffle.hpp
  283. │   │   │   ├── cuda.hpp
  284. │   │   │   ├── cuda.inl.hpp
  285. │   │   │   ├── cuda_stream_accessor.hpp
  286. │   │   │   ├── cuda_types.hpp
  287. │   │   │   ├── cv_bmcpu.hpp
  288. │   │   │   ├── cv_cpu_dispatch.h
  289. │   │   │   ├── cv_cpu_helper.h
  290. │   │   │   ├── cvdef.h
  291. │   │   │   ├── cvstd.hpp
  292. │   │   │   ├── cvstd.inl.hpp
  293. │   │   │   ├── cvstd_wrapper.hpp
  294. │   │   │   ├── directx.hpp
  295. │   │   │   ├── eigen.hpp
  296. │   │   │   ├── fast_math.hpp
  297. │   │   │   ├── hal
  298. │   │   │   │   ├── hal.hpp
  299. │   │   │   │   ├── interface.h
  300. │   │   │   │   ├── intrin_avx.hpp
  301. │   │   │   │   ├── intrin_cpp.hpp
  302. │   │   │   │   ├── intrin_forward.hpp
  303. │   │   │   │   ├── intrin.hpp
  304. │   │   │   │   ├── intrin_neon.hpp
  305. │   │   │   │   ├── intrin_sse_em.hpp
  306. │   │   │   │   ├── intrin_sse.hpp
  307. │   │   │   │   └── intrin_vsx.hpp
  308. │   │   │   ├── hal.hpp
  309. │   │   │   ├── ion.hpp
  310. │   │   │   ├── mat.hpp
  311. │   │   │   ├── mat.inl.hpp
  312. │   │   │   ├── matx.hpp
  313. │   │   │   ├── neon_utils.hpp
  314. │   │   │   ├── ocl_genbase.hpp
  315. │   │   │   ├── ocl.hpp
  316. │   │   │   ├── opencl
  317. │   │   │   │   ├── ocl_defs.hpp
  318. │   │   │   │   ├── opencl_info.hpp
  319. │   │   │   │   ├── opencl_svm.hpp
  320. │   │   │   │   └── runtime
  321. │   │   │   │   ├── autogenerated
  322. │   │   │   │   │   ├── opencl_clamdblas.hpp
  323. │   │   │   │   │   ├── opencl_clamdfft.hpp
  324. │   │   │   │   │   ├── opencl_core.hpp
  325. │   │   │   │   │   ├── opencl_core_wrappers.hpp
  326. │   │   │   │   │   ├── opencl_gl.hpp
  327. │   │   │   │   │   └── opencl_gl_wrappers.hpp
  328. │   │   │   │   ├── opencl_clamdblas.hpp
  329. │   │   │   │   ├── opencl_clamdfft.hpp
  330. │   │   │   │   ├── opencl_core.hpp
  331. │   │   │   │   ├── opencl_core_wrappers.hpp
  332. │   │   │   │   ├── opencl_gl.hpp
  333. │   │   │   │   ├── opencl_gl_wrappers.hpp
  334. │   │   │   │   ├── opencl_svm_20.hpp
  335. │   │   │   │   ├── opencl_svm_definitions.hpp
  336. │   │   │   │   └── opencl_svm_hsa_extension.hpp
  337. │   │   │   ├── opengl.hpp
  338. │   │   │   ├── operations.hpp
  339. │   │   │   ├── optim.hpp
  340. │   │   │   ├── ovx.hpp
  341. │   │   │   ├── persistence.hpp
  342. │   │   │   ├── saturate.hpp
  343. │   │   │   ├── softfloat.hpp
  344. │   │   │   ├── sse_utils.hpp
  345. │   │   │   ├── traits.hpp
  346. │   │   │   ├── types_c.h
  347. │   │   │   ├── types.hpp
  348. │   │   │   ├── utility.hpp
  349. │   │   │   ├── utils
  350. │   │   │   │   ├── filesystem.hpp
  351. │   │   │   │   ├── logger.defines.hpp
  352. │   │   │   │   ├── logger.hpp
  353. │   │   │   │   └── trace.hpp
  354. │   │   │   ├── va_intel.hpp
  355. │   │   │   ├── version.hpp
  356. │   │   │   └── vsx_utils.hpp
  357. │   │   ├── core.hpp
  358. │   │   ├── cvconfig.h
  359. │   │   ├── dnn
  360. │   │   │   ├── all_layers.hpp
  361. │   │   │   ├── dict.hpp
  362. │   │   │   ├── dnn.hpp
  363. │   │   │   ├── dnn.inl.hpp
  364. │   │   │   ├── layer.details.hpp
  365. │   │   │   ├── layer.hpp
  366. │   │   │   ├── shape_utils.hpp
  367. │   │   │   ├── utils
  368. │   │   │   │   └── inference_engine.hpp
  369. │   │   │   └── version.hpp
  370. │   │   ├── dnn.hpp
  371. │   │   ├── features2d
  372. │   │   │   ├── features2d.hpp
  373. │   │   │   └── hal
  374. │   │   │   └── interface.h
  375. │   │   ├── features2d.hpp
  376. │   │   ├── flann
  377. │   │   │   ├── all_indices.h
  378. │   │   │   ├── allocator.h
  379. │   │   │   ├── any.h
  380. │   │   │   ├── autotuned_index.h
  381. │   │   │   ├── composite_index.h
  382. │   │   │   ├── config.h
  383. │   │   │   ├── defines.h
  384. │   │   │   ├── dist.h
  385. │   │   │   ├── dummy.h
  386. │   │   │   ├── dynamic_bitset.h
  387. │   │   │   ├── flann_base.hpp
  388. │   │   │   ├── flann.hpp
  389. │   │   │   ├── general.h
  390. │   │   │   ├── ground_truth.h
  391. │   │   │   ├── heap.h
  392. │   │   │   ├── hierarchical_clustering_index.h
  393. │   │   │   ├── index_testing.h
  394. │   │   │   ├── kdtree_index.h
  395. │   │   │   ├── kdtree_single_index.h
  396. │   │   │   ├── kmeans_index.h
  397. │   │   │   ├── linear_index.h
  398. │   │   │   ├── logger.h
  399. │   │   │   ├── lsh_index.h
  400. │   │   │   ├── lsh_table.h
  401. │   │   │   ├── matrix.h
  402. │   │   │   ├── miniflann.hpp
  403. │   │   │   ├── nn_index.h
  404. │   │   │   ├── object_factory.h
  405. │   │   │   ├── params.h
  406. │   │   │   ├── random.h
  407. │   │   │   ├── result_set.h
  408. │   │   │   ├── sampling.h
  409. │   │   │   ├── saving.h
  410. │   │   │   ├── simplex_downhill.h
  411. │   │   │   └── timer.h
  412. │   │   ├── flann.hpp
  413. │   │   ├── freetype.hpp
  414. │   │   ├── gapi
  415. │   │   │   ├── core.hpp
  416. │   │   │   ├── cpu
  417. │   │   │   │   ├── core.hpp
  418. │   │   │   │   ├── gcpukernel.hpp
  419. │   │   │   │   └── imgproc.hpp
  420. │   │   │   ├── fluid
  421. │   │   │   │   ├── core.hpp
  422. │   │   │   │   ├── gfluidbuffer.hpp
  423. │   │   │   │   ├── gfluidkernel.hpp
  424. │   │   │   │   └── imgproc.hpp
  425. │   │   │   ├── garg.hpp
  426. │   │   │   ├── garray.hpp
  427. │   │   │   ├── gcall.hpp
  428. │   │   │   ├── gcommon.hpp
  429. │   │   │   ├── gcompiled.hpp
  430. │   │   │   ├── gcompoundkernel.hpp
  431. │   │   │   ├── gcomputation.hpp
  432. │   │   │   ├── gkernel.hpp
  433. │   │   │   ├── gmat.hpp
  434. │   │   │   ├── gmetaarg.hpp
  435. │   │   │   ├── gproto.hpp
  436. │   │   │   ├── gpu
  437. │   │   │   │   ├── core.hpp
  438. │   │   │   │   ├── ggpukernel.hpp
  439. │   │   │   │   └── imgproc.hpp
  440. │   │   │   ├── gscalar.hpp
  441. │   │   │   ├── gtyped.hpp
  442. │   │   │   ├── gtype_traits.hpp
  443. │   │   │   ├── imgproc.hpp
  444. │   │   │   ├── ocl
  445. │   │   │   │   ├── core.hpp
  446. │   │   │   │   ├── goclkernel.hpp
  447. │   │   │   │   └── imgproc.hpp
  448. │   │   │   ├── opencv_includes.hpp
  449. │   │   │   ├── operators.hpp
  450. │   │   │   ├── own
  451. │   │   │   │   ├── assert.hpp
  452. │   │   │   │   ├── convert.hpp
  453. │   │   │   │   ├── cvdefs.hpp
  454. │   │   │   │   ├── exports.hpp
  455. │   │   │   │   ├── mat.hpp
  456. │   │   │   │   ├── saturate.hpp
  457. │   │   │   │   ├── scalar.hpp
  458. │   │   │   │   └── types.hpp
  459. │   │   │   └── util
  460. │   │   │   ├── any.hpp
  461. │   │   │   ├── compiler_hints.hpp
  462. │   │   │   ├── optional.hpp
  463. │   │   │   ├── throw.hpp
  464. │   │   │   ├── util.hpp
  465. │   │   │   └── variant.hpp
  466. │   │   ├── gapi.hpp
  467. │   │   ├── highgui
  468. │   │   │   ├── highgui_c.h
  469. │   │   │   └── highgui.hpp
  470. │   │   ├── highgui.hpp
  471. │   │   ├── imgcodecs
  472. │   │   │   ├── imgcodecs_c.h
  473. │   │   │   ├── imgcodecs.hpp
  474. │   │   │   ├── ios.h
  475. │   │   │   └── legacy
  476. │   │   │   └── constants_c.h
  477. │   │   ├── imgcodecs.hpp
  478. │   │   ├── imgproc
  479. │   │   │   ├── detail
  480. │   │   │   │   └── gcgraph.hpp
  481. │   │   │   ├── hal
  482. │   │   │   │   ├── hal.hpp
  483. │   │   │   │   └── interface.h
  484. │   │   │   ├── imgproc_c.h
  485. │   │   │   ├── imgproc.hpp
  486. │   │   │   ├── types_c.h
  487. │   │   │   └── vpp.hpp
  488. │   │   ├── imgproc.hpp
  489. │   │   ├── ml
  490. │   │   │   ├── ml.hpp
  491. │   │   │   └── ml.inl.hpp
  492. │   │   ├── ml.hpp
  493. │   │   ├── objdetect
  494. │   │   │   ├── detection_based_tracker.hpp
  495. │   │   │   └── objdetect.hpp
  496. │   │   ├── objdetect.hpp
  497. │   │   ├── opencv.hpp
  498. │   │   ├── opencv_modules.hpp
  499. │   │   ├── photo
  500. │   │   │   ├── cuda.hpp
  501. │   │   │   ├── legacy
  502. │   │   │   │   └── constants_c.h
  503. │   │   │   └── photo.hpp
  504. │   │   ├── photo.hpp
  505. │   │   ├── stitching
  506. │   │   │   ├── detail
  507. │   │   │   │   ├── autocalib.hpp
  508. │   │   │   │   ├── blenders.hpp
  509. │   │   │   │   ├── camera.hpp
  510. │   │   │   │   ├── exposure_compensate.hpp
  511. │   │   │   │   ├── matchers.hpp
  512. │   │   │   │   ├── motion_estimators.hpp
  513. │   │   │   │   ├── seam_finders.hpp
  514. │   │   │   │   ├── timelapsers.hpp
  515. │   │   │   │   ├── util.hpp
  516. │   │   │   │   ├── util_inl.hpp
  517. │   │   │   │   ├── warpers.hpp
  518. │   │   │   │   └── warpers_inl.hpp
  519. │   │   │   └── warpers.hpp
  520. │   │   ├── stitching.hpp
  521. │   │   ├── video
  522. │   │   │   ├── background_segm.hpp
  523. │   │   │   ├── legacy
  524. │   │   │   │   └── constants_c.h
  525. │   │   │   ├── tracking.hpp
  526. │   │   │   └── video.hpp
  527. │   │   ├── video.hpp
  528. │   │   ├── videoio
  529. │   │   │   ├── cap_ios.h
  530. │   │   │   ├── legacy
  531. │   │   │   │   └── constants_c.h
  532. │   │   │   ├── registry.hpp
  533. │   │   │   ├── videoio_c.h
  534. │   │   │   └── videoio.hpp
  535. │   │   └── videoio.hpp
  536. │   ├── tpu_bitcasts.h
  537. │   ├── tpu_fp16_base.h
  538. │   ├── tpu_fp16.h
  539. │   ├── tpu_fp16.hpp
  540. │   ├── user_bmcpu_common.h
  541. │   ├── user_bmcpu.h
  542. │   ├── utils.hpp
  543. │   ├── vppion.h
  544. │   ├── vpplib.h
  545. │   └── yolov5.hpp
  546. └── lib
  547. ├── cmake
  548. │   ├── FFMPEGConfig.cmake
  549. │   └── opencv4
  550. │   ├── OpenCVConfig.cmake
  551. │   ├── OpenCVConfig-version.cmake
  552. │   ├── OpenCVModules.cmake
  553. │   └── OpenCVModules-release.cmake
  554. ├── libavcodec.a
  555. ├── libavcodec.so -> libavcodec.so.58.35.100-sophon-0.7.0
  556. ├── libavcodec.so.58 -> libavcodec.so.58.35.100-sophon-0.7.0
  557. ├── libavcodec.so.58.35.100-sophon-0.7.0
  558. ├── libavdevice.a
  559. ├── libavdevice.so -> libavdevice.so.58.5.100-sophon-0.7.0
  560. ├── libavdevice.so.58 -> libavdevice.so.58.5.100-sophon-0.7.0
  561. ├── libavdevice.so.58.5.100-sophon-0.7.0
  562. ├── libavfilter.a
  563. ├── libavfilter.so -> libavfilter.so.7.40.101-sophon-0.7.0
  564. ├── libavfilter.so.7 -> libavfilter.so.7.40.101-sophon-0.7.0
  565. ├── libavfilter.so.7.40.101-sophon-0.7.0
  566. ├── libavformat.a
  567. ├── libavformat.so -> libavformat.so.58.20.100-sophon-0.7.0
  568. ├── libavformat.so.58 -> libavformat.so.58.20.100-sophon-0.7.0
  569. ├── libavformat.so.58.20.100-sophon-0.7.0
  570. ├── libavutil.a
  571. ├── libavutil.so -> libavutil.so.56.22.100-sophon-0.7.0
  572. ├── libavutil.so.56 -> libavutil.so.56.22.100-sophon-0.7.0
  573. ├── libavutil.so.56.22.100-sophon-0.7.0
  574. ├── libbmcv.a
  575. ├── libbmcv.so -> libbmcv.so.0
  576. ├── libbmcv.so.0 -> libbmcv.so.0.7.0
  577. ├── libbmcv.so.0.7.0
  578. ├── libbmion.so -> libbmion.so.0
  579. ├── libbmion.so.0 -> libbmion.so.0.7.0
  580. ├── libbmion.so.0.7.0
  581. ├── libbmjpuapi.so -> libbmjpuapi.so.0
  582. ├── libbmjpuapi.so.0 -> libbmjpuapi.so.0.7.0
  583. ├── libbmjpuapi.so.0.7.0
  584. ├── libbmjpulite.so -> libbmjpulite.so.0
  585. ├── libbmjpulite.so.0 -> libbmjpulite.so.0.7.0
  586. ├── libbmjpulite.so.0.7.0
  587. ├── libbmlib.so -> libbmlib.so.0
  588. ├── libbmlib.so.0
  589. ├── libbmodel.a
  590. ├── libbmrt.so -> libbmrt.so.1.0
  591. ├── libbmrt.so.1.0
  592. ├── libbmvideo.so -> libbmvideo.so.0
  593. ├── libbmvideo.so.0 -> libbmvideo.so.0.7.0
  594. ├── libbmvideo.so.0.7.0
  595. ├── libbmvppapi.so -> libbmvppapi.so.0
  596. ├── libbmvppapi.so.0 -> libbmvppapi.so.0.7.0
  597. ├── libbmvppapi.so.0.7.0
  598. ├── libbmvpuapi.so -> libbmvpuapi.so.0
  599. ├── libbmvpuapi.so.0 -> libbmvpuapi.so.0.7.0
  600. ├── libbmvpuapi.so.0.7.0
  601. ├── libbmvpulite.so -> libbmvpulite.so.0
  602. ├── libbmvpulite.so.0 -> libbmvpulite.so.0.7.0
  603. ├── libbmvpulite.so.0.7.0
  604. ├── libcpuop.so -> libcpuop.so.0.4.9
  605. ├── libcpuop.so.0.4.9
  606. ├── libopencv_calib3d.so -> libopencv_calib3d.so.4.1
  607. ├── libopencv_calib3d.so.4.1 -> libopencv_calib3d.so.4.1.0-sophon-0.7.0
  608. ├── libopencv_calib3d.so.4.1.0-sophon-0.7.0
  609. ├── libopencv_core.so -> libopencv_core.so.4.1
  610. ├── libopencv_core.so.4.1 -> libopencv_core.so.4.1.0-sophon-0.7.0
  611. ├── libopencv_core.so.4.1.0-sophon-0.7.0
  612. ├── libopencv_dnn.so -> libopencv_dnn.so.4.1
  613. ├── libopencv_dnn.so.4.1 -> libopencv_dnn.so.4.1.0-sophon-0.7.0
  614. ├── libopencv_dnn.so.4.1.0-sophon-0.7.0
  615. ├── libopencv_features2d.so -> libopencv_features2d.so.4.1
  616. ├── libopencv_features2d.so.4.1 -> libopencv_features2d.so.4.1.0-sophon-0.7.0
  617. ├── libopencv_features2d.so.4.1.0-sophon-0.7.0
  618. ├── libopencv_flann.so -> libopencv_flann.so.4.1
  619. ├── libopencv_flann.so.4.1 -> libopencv_flann.so.4.1.0-sophon-0.7.0
  620. ├── libopencv_flann.so.4.1.0-sophon-0.7.0
  621. ├── libopencv_freetype.so -> libopencv_freetype.so.4.1
  622. ├── libopencv_freetype.so.4.1 -> libopencv_freetype.so.4.1.0-sophon-0.7.0
  623. ├── libopencv_freetype.so.4.1.0-sophon-0.7.0
  624. ├── libopencv_gapi.so -> libopencv_gapi.so.4.1
  625. ├── libopencv_gapi.so.4.1 -> libopencv_gapi.so.4.1.0-sophon-0.7.0
  626. ├── libopencv_gapi.so.4.1.0-sophon-0.7.0
  627. ├── libopencv_highgui.so -> libopencv_highgui.so.4.1
  628. ├── libopencv_highgui.so.4.1 -> libopencv_highgui.so.4.1.0-sophon-0.7.0
  629. ├── libopencv_highgui.so.4.1.0-sophon-0.7.0
  630. ├── libopencv_imgcodecs.so -> libopencv_imgcodecs.so.4.1
  631. ├── libopencv_imgcodecs.so.4.1 -> libopencv_imgcodecs.so.4.1.0-sophon-0.7.0
  632. ├── libopencv_imgcodecs.so.4.1.0-sophon-0.7.0
  633. ├── libopencv_imgproc.so -> libopencv_imgproc.so.4.1
  634. ├── libopencv_imgproc.so.4.1 -> libopencv_imgproc.so.4.1.0-sophon-0.7.0
  635. ├── libopencv_imgproc.so.4.1.0-sophon-0.7.0
  636. ├── libopencv_ml.so -> libopencv_ml.so.4.1
  637. ├── libopencv_ml.so.4.1 -> libopencv_ml.so.4.1.0-sophon-0.7.0
  638. ├── libopencv_ml.so.4.1.0-sophon-0.7.0
  639. ├── libopencv_objdetect.so -> libopencv_objdetect.so.4.1
  640. ├── libopencv_objdetect.so.4.1 -> libopencv_objdetect.so.4.1.0-sophon-0.7.0
  641. ├── libopencv_objdetect.so.4.1.0-sophon-0.7.0
  642. ├── libopencv_photo.so -> libopencv_photo.so.4.1
  643. ├── libopencv_photo.so.4.1 -> libopencv_photo.so.4.1.0-sophon-0.7.0
  644. ├── libopencv_photo.so.4.1.0-sophon-0.7.0
  645. ├── libopencv_stitching.so -> libopencv_stitching.so.4.1
  646. ├── libopencv_stitching.so.4.1 -> libopencv_stitching.so.4.1.0-sophon-0.7.0
  647. ├── libopencv_stitching.so.4.1.0-sophon-0.7.0
  648. ├── libopencv_videoio.so -> libopencv_videoio.so.4.1
  649. ├── libopencv_videoio.so.4.1 -> libopencv_videoio.so.4.1.0-sophon-0.7.0
  650. ├── libopencv_videoio.so.4.1.0-sophon-0.7.0
  651. ├── libopencv_video.so -> libopencv_video.so.4.1
  652. ├── libopencv_video.so.4.1 -> libopencv_video.so.4.1.0-sophon-0.7.0
  653. ├── libopencv_video.so.4.1.0-sophon-0.7.0
  654. ├── libswresample.a
  655. ├── libswresample.so -> libswresample.so.3.3.100-sophon-0.7.0
  656. ├── libswresample.so.3 -> libswresample.so.3.3.100-sophon-0.7.0
  657. ├── libswresample.so.3.3.100-sophon-0.7.0
  658. ├── libswscale.a
  659. ├── libswscale.so -> libswscale.so.5.3.100-sophon-0.7.0
  660. ├── libswscale.so.5 -> libswscale.so.5.3.100-sophon-0.7.0
  661. ├── libswscale.so.5.3.100-sophon-0.7.0
  662. ├── libturing_env.so
  663. ├── libusercpu.so -> libusercpu.so.0.4.9
  664. ├── libusercpu.so.0.4.9
  665. ├── libvideo_bm.so -> libbmvideo.so
  666. ├── libvpp.a
  667. ├── libvpp_cmodel.so
  668. ├── libvpp.so -> libvpp.so.0
  669. ├── libvpp.so.0 -> libvpp.so.0.7.0
  670. ├── libvpp.so.0.7.0
  671. ├── libyuv.a
  672. ├── libyuv.so -> libyuv.so.0
  673. ├── libyuv.so.0 -> libyuv.so.0.7.0
  674. ├── libyuv.so.0.7.0
  675. ├── pkgconfig
  676. │   ├── libavcodec.pc
  677. │   ├── libavdevice.pc
  678. │   ├── libavfilter.pc
  679. │   ├── libavformat.pc
  680. │   ├── libavutil.pc
  681. │   ├── libswresample.pc
  682. │   ├── libswscale.pc
  683. │   └── opencv4.pc
  684. ├── tpu_module
  685. │   └── libbm1684x_kernel_module.so
  686. └── vpu_firmware
  687. ├── chagall.bin
  688. └── chagall_dec.bin

另外,makefile内容如下

  1. CC = aarch64-linux-gnu-gcc
  2. CPP = aarch64-linux-gnu-g++
  3. AR = ar
  4. RM = rm -f
  5. #Define the resource compiler.
  6. RC = windres
  7. ## debug flag
  8. DBG_ENABLE := 0
  9. OS = $(shell uname)
  10. ## source file path
  11. SRC_PATH := ./cpp/ #./include/utils/
  12. SRC_PATH_EXT :=
  13. DEMO :=./demo/main.cpp
  14. ## target file name
  15. TARGET := turing_env
  16. DEMO_TARGET := env_demo
  17. ## get all source files
  18. SRCS := $(foreach spath, $(SRC_PATH), $(wildcard $(spath)*.c) $(wildcard $(spath)*.cpp))
  19. ## all .o based on all .c/.cpp
  20. OBJS = $(SRCS:.c=.o)
  21. OBJS := $(OBJS:.cpp=.o)
  22. ## macro define
  23. #DEFS := __LINUX__ OS_LINUX _FILE_OFFSET_BITS=64
  24. DEFS := __LINUX__ OS_LINUX
  25. #if freeimage is static-linked use this !
  26. #DEFS += FREEIMAGE_LIB
  27. ## need libs, add at here
  28. LIBS := bmrt bmlib bmcv dl \
  29. opencv_core opencv_imgproc opencv_imgcodecs opencv_videoio opencv_video \
  30. bmvideo swresample swscale avformat avutil \
  31. #protobuf gflags glog boost_system boost_filesystem pthread bmjpuapi bmjpulite #asan
  32. DEMO_LIBS = $(LIBS)
  33. DEMO_LIBS += turing_env
  34. ## used headers file path
  35. INCLUDE_PATH := ./include ./include/third /usr/local/cuda/include ./src ./include/biz_sdk ./include/biz_common ./include/spdlog ./include/utils ./include/rapidjson ./
  36. INCLUDE_PATH += ./include/tcp_pubsub #add by chw
  37. INCLUDE_PATH += ./include
  38. INCLUDE_PATH += ./include/rapidjson
  39. INCLUDE_PATH += ./include/bmruntime
  40. INCLUDE_PATH += ./include/bmlib
  41. INCLUDE_PATH += ./include/third_party/boost/include
  42. INCLUDE_PATH += ./include/opencv4
  43. INCLUDE_PATH += ./include/ffmpeg ./include
  44. #$(warning $(INCLUDE_PATH))
  45. ## used include librarys file path
  46. LIBRARY_PATH := ./ ./lib ./lib/thirdparty/soc ./lib/bmnn/soc ./lib/opencv/soc ./lib/ffmpeg/soc ./lib/decode/soc
  47. ## debug for debug info, when use gdb to debug
  48. ifeq (1, ${DBG_ENABLE})
  49. CFLAGS += -D_DEBUG -g -DDEBUG=1
  50. else
  51. CFLAGS += -O2 -DNDEBUG
  52. endif
  53. #for ENCYPT flags
  54. ifeq ($(OS), Linux)
  55. LIBS += dl rt
  56. CFLAGS += -fPIC
  57. TARGET_EXT := .so
  58. LIBRARY_PATH +=
  59. LDFLAGS += -Wl,--rpath=./lib
  60. LDFLAGS += -Wl,--rpath=./lib/thirdparty/soc
  61. LDFLAGS += -Wl,--rpath=./lib/bmnn/soc
  62. LDFLAGS += -Wl,--rpath=./lib/opencv/soc
  63. LDFLAGS += -Wl,--rpath=./lib/ffmpeg/soc
  64. LDFLAGS += -Wl,--rpath=./lib/decode/soc
  65. endif
  66. #CFLAGS += -msse4.2 -march=core2 -pipe $(foreach m, $(DEFS), -D$(m))
  67. CFLAGS += -pipe $(foreach m, $(DEFS), -D$(m))
  68. ## get all include path
  69. CFLAGS += $(foreach dir, $(INCLUDE_PATH), -I$(dir)) #-fsanitize=address -g
  70. ##CFLAGS += $(foreach dir, $(INCLUDE_PATH), -I$(dir)) -fvisibility=hidden
  71. CXXFLAGS += $(CFLAGS) -std=c++11
  72. ## get all library path
  73. #LDFLAGS += -lpthread -fsanitize=address $(foreach lib, $(LIBRARY_PATH), -L$(lib))
  74. LDFLAGS += -lpthread $(foreach lib, $(LIBRARY_PATH), -L$(lib))
  75. DEMO_LDFLAGS := $(LDFLAGS)
  76. ## get all librarys
  77. LDFLAGS += $(foreach lib, $(LIBS), -l$(lib))
  78. DEMO_LDFLAGS += $(foreach lib, $(DEMO_LIBS), -l$(lib))
  79. RCFLAGS ?= -DNDEBUG
  80. default: all
  81. %.o: %.c
  82. $(CC) $(CFLAGS) -g -c $< -o $@
  83. %.o: %.cpp
  84. $(CPP) $(CXXFLAGS) -g -c $< -o $@
  85. all: $(OBJS) $(RESOURCE)
  86. #$(CPP) $(CXXFLAGS) -o $(TARGET) $(OBJS) $(RESOURCE) $(LDFLAGS)
  87. $(CPP) $(CXXFLAGS) -g -shared -o lib$(TARGET)$(TARGET_EXT) $(OBJS) $(RESOURCE) $(LDFLAGS)
  88. mv libturing_env.so ./lib
  89. $(CPP) $(CXXFLAGS) -g -o $(DEMO_TARGET) $(DEMO) $(DEMO_LDFLAGS)
  90. clean:
  91. $(RM) $(OBJS) $(DEMO_TARGET) $(TARGET).* $(RESOURCE)

参考文献:

利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤_mlir tpu-CSDN博客

3.4. 安装SDK — SOPHONSDKUserGuide v23.10.01 文档

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/136684
推荐阅读
相关标签
  

闽ICP备14008679号