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

目录

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

这个我电脑中之前就有

which aarch64-linux-gnu-g++
/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文件夹

cd Release_v2312-LTS/
cd sophon-img_20231116_213307/
mkdir -p soc-sdk
tar -zxf libsophon_soc_0.5.0_aarch64.tar.gz 
cp -drf libsophon_soc_0.5.0_aarch64/opt/sophon/libsophon-0.5.0/include/  ./soc-sdk/
cp -drf libsophon_soc_0.5.0_aarch64/opt/sophon/libsophon-0.5.0/lib/  ./soc-sdk/
ll soc-sdk/

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

cd sophon-mw_20231116_113811/
tar -zxf sophon-mw-soc_0.7.3_aarch64.tar.gz 
cp -drf sophon-mw-soc_0.7.3_aarch64/opt/sophon/sophon-ffmpeg_0.7.3/lib ../sophon-img_20231116_213307/soc-sdk/
cp -drf sophon-mw-soc_0.7.3_aarch64/opt/sophon/sophon-ffmpeg_0.7.3/include  ../sophon-img_20231116_213307/soc-sdk/
cp -drf sophon-mw-soc_0.7.3_aarch64/opt/sophon/sophon-opencv_0.7.3/lib/  ../sophon-img_20231116_213307/soc-sdk/
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. 

a、显示sd卡状态。执行命令 lsblk 会显示sd卡会有分区,比如sdb1
b、取消挂载。umount /dev/sdb1
c、格式化TF卡,sudo mkfs.vfat -I /dev/sdb(合并所有分区,例如:/dev/sdb设备下 sdb1 、sdb2分区,使用-I参数可以合并格式化所有分区 )
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的时候已经把库和头文件全都拷贝过去了,这里把前面的库和头文件都拷贝过来,

 2037  cp -drf  /data/chw/bitedalu_20220713/Release_230701-public/sophon-img_20230810_221353/soc-sdk/include/* ./include/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放里面。

最后的整体目录如下

├── chw_makefile
├── CMakeLists.txt
├── cpp
│   ├── ff_decode.cpp
│   ├── ff_decode.o
│   ├── yolov5.cpp
│   └── yolov5.o
├── data
│   ├── coco.names
│   ├── images
│   │   ├── 1111bus.jpg
│   │   ├── 1.jpg
│   │   ├── accident.mp4
│   │   ├── bus.jpg
│   │   ├── conflict   .mp4
│   │   ├── overflow.mp4
│   │   └── 南京路-东海路南电警-EQ.mp4
│   └── models
│       ├── easnet_fp8_640_1.bmodel_new
│       ├── easnet_fp8_640_1.bmodel_old
│       └── yolov5s_1684_f32_sym.bmodel
├── demo
│   └── main.cpp
├── env_demo
├── include
│   ├── bm1682_profile.h
│   ├── bm1684_profile.h
│   ├── bm1684x_profile.h
│   ├── bmblob.h
│   ├── bmcnnctx.h
│   ├── bmcpu_common.h
│   ├── bmcpu_dev.h
│   ├── bmcpu.h
│   ├── bmcv_api_ext_c.h
│   ├── bmcv_api_ext.h
│   ├── bmcv_api.h
│   ├── bmdef.h
│   ├── bmfunc
│   │   ├── bmdnn_func.h
│   │   └── bmfunc.h
│   ├── bm_ion.h
│   ├── bmjpuapi.h
│   ├── bmjpuapi_jpeg.h
│   ├── bmlib_runtime.h
│   ├── bmlog.hpp
│   ├── bmnet.h
│   ├── bmnn_utils.h
│   ├── bmodel.hpp
│   ├── bmqueue.h
│   ├── bmrt_arch_info.h
│   ├── bmruntime_common.h
│   ├── bmruntime_cpp.h
│   ├── bmruntime.h
│   ├── bmruntime_interface.h
│   ├── bmruntime_legacy.h
│   ├── bmruntime_profile.h
│   ├── bmtap2
│   │   ├── bmruntime_bmnet.h
│   │   ├── bmruntime.hpp
│   │   └── bmruntime_inner.h
│   ├── bm_video_interface.h
│   ├── bmvppapi.h
│   ├── bmvpp.h
│   ├── bmvpuapi_common.h
│   ├── bmvpuapi_enc.h
│   ├── bmvpuapi.h
│   ├── bmvpu.h
│   ├── bmvpu_logging.h
│   ├── bmvpu_types.h
│   ├── bm_wrapper.hpp
│   ├── ff_decode.hpp
│   ├── flatbuffers
│   │   ├── base.h
│   │   ├── code_generators.h
│   │   ├── flatbuffers.h
│   │   ├── flatc.h
│   │   ├── flexbuffers.h
│   │   ├── grpc.h
│   │   ├── hash.h
│   │   ├── idl.h
│   │   ├── minireflect.h
│   │   ├── reflection_generated.h
│   │   ├── reflection.h
│   │   ├── registry.h
│   │   ├── stl_emulation.h
│   │   └── util.h
│   ├── jpu_io.h
│   ├── jpu_lib.h
│   ├── jpu_logging.h
│   ├── json.hpp
│   ├── libavcodec
│   │   ├── ac3_parser.h
│   │   ├── adts_parser.h
│   │   ├── avcodec.h
│   │   ├── avdct.h
│   │   ├── avfft.h
│   │   ├── d3d11va.h
│   │   ├── dirac.h
│   │   ├── dv_profile.h
│   │   ├── dxva2.h
│   │   ├── jni.h
│   │   ├── mediacodec.h
│   │   ├── qsv.h
│   │   ├── vaapi.h
│   │   ├── vdpau.h
│   │   ├── version.h
│   │   ├── videotoolbox.h
│   │   ├── vorbis_parser.h
│   │   └── xvmc.h
│   ├── libavdevice
│   │   ├── avdevice.h
│   │   └── version.h
│   ├── libavfilter
│   │   ├── avfilter.h
│   │   ├── buffersink.h
│   │   ├── buffersrc.h
│   │   └── version.h
│   ├── libavformat
│   │   ├── avformat.h
│   │   ├── avio.h
│   │   └── version.h
│   ├── libavutil
│   │   ├── adler32.h
│   │   ├── aes_ctr.h
│   │   ├── aes.h
│   │   ├── attributes.h
│   │   ├── audio_fifo.h
│   │   ├── avassert.h
│   │   ├── avconfig.h
│   │   ├── avstring.h
│   │   ├── avutil.h
│   │   ├── base64.h
│   │   ├── blowfish.h
│   │   ├── bprint.h
│   │   ├── bswap.h
│   │   ├── buffer.h
│   │   ├── camellia.h
│   │   ├── cast5.h
│   │   ├── channel_layout.h
│   │   ├── common.h
│   │   ├── cpu.h
│   │   ├── crc.h
│   │   ├── des.h
│   │   ├── dict.h
│   │   ├── display.h
│   │   ├── downmix_info.h
│   │   ├── encryption_info.h
│   │   ├── error.h
│   │   ├── eval.h
│   │   ├── ffversion.h
│   │   ├── fifo.h
│   │   ├── file.h
│   │   ├── frame.h
│   │   ├── hash.h
│   │   ├── hmac.h
│   │   ├── hwcontext_bmcodec.h
│   │   ├── hwcontext_cuda.h
│   │   ├── hwcontext_d3d11va.h
│   │   ├── hwcontext_drm.h
│   │   ├── hwcontext_dxva2.h
│   │   ├── hwcontext.h
│   │   ├── hwcontext_mediacodec.h
│   │   ├── hwcontext_qsv.h
│   │   ├── hwcontext_vaapi.h
│   │   ├── hwcontext_vdpau.h
│   │   ├── hwcontext_videotoolbox.h
│   │   ├── imgutils.h
│   │   ├── intfloat.h
│   │   ├── intreadwrite.h
│   │   ├── lfg.h
│   │   ├── log.h
│   │   ├── lzo.h
│   │   ├── macros.h
│   │   ├── mastering_display_metadata.h
│   │   ├── mathematics.h
│   │   ├── md5.h
│   │   ├── mem.h
│   │   ├── motion_vector.h
│   │   ├── murmur3.h
│   │   ├── opt.h
│   │   ├── parseutils.h
│   │   ├── pixdesc.h
│   │   ├── pixelutils.h
│   │   ├── pixfmt.h
│   │   ├── random_seed.h
│   │   ├── rational.h
│   │   ├── rc4.h
│   │   ├── replaygain.h
│   │   ├── ripemd.h
│   │   ├── samplefmt.h
│   │   ├── sha512.h
│   │   ├── sha.h
│   │   ├── spherical.h
│   │   ├── stereo3d.h
│   │   ├── tea.h
│   │   ├── threadmessage.h
│   │   ├── timecode.h
│   │   ├── time.h
│   │   ├── timestamp.h
│   │   ├── tree.h
│   │   ├── twofish.h
│   │   ├── version.h
│   │   └── xtea.h
│   ├── libswresample
│   │   ├── swresample.h
│   │   └── version.h
│   ├── libswscale
│   │   ├── swscale.h
│   │   └── version.h
│   ├── libyuv
│   │   ├── basic_types.h
│   │   ├── compare.h
│   │   ├── compare_row.h
│   │   ├── convert_argb.h
│   │   ├── convert_from_argb.h
│   │   ├── convert_from.h
│   │   ├── convert.h
│   │   ├── cpu_id.h
│   │   ├── macros_msa.h
│   │   ├── mjpeg_decoder.h
│   │   ├── planar_functions.h
│   │   ├── rotate_argb.h
│   │   ├── rotate.h
│   │   ├── rotate_row.h
│   │   ├── row.h
│   │   ├── scale_argb.h
│   │   ├── scale.h
│   │   ├── scale_row.h
│   │   ├── version.h
│   │   └── video_common.h
│   ├── libyuv.h
│   ├── md5
│   │   └── md5.h
│   ├── model_generated.h
│   ├── opencv4
│   │   └── opencv2
│   │       ├── calib3d
│   │       │   ├── calib3d_c.h
│   │       │   └── calib3d.hpp
│   │       ├── calib3d.hpp
│   │       ├── core
│   │       │   ├── affine.hpp
│   │       │   ├── av.hpp
│   │       │   ├── base.hpp
│   │       │   ├── bindings_utils.hpp
│   │       │   ├── bmcv.hpp
│   │       │   ├── bufferpool.hpp
│   │       │   ├── check.hpp
│   │       │   ├── core_c.h
│   │       │   ├── core.hpp
│   │       │   ├── cuda
│   │       │   │   ├── block.hpp
│   │       │   │   ├── border_interpolate.hpp
│   │       │   │   ├── color.hpp
│   │       │   │   ├── common.hpp
│   │       │   │   ├── datamov_utils.hpp
│   │       │   │   ├── detail
│   │       │   │   │   ├── color_detail.hpp
│   │       │   │   │   ├── reduce.hpp
│   │       │   │   │   ├── reduce_key_val.hpp
│   │       │   │   │   ├── transform_detail.hpp
│   │       │   │   │   ├── type_traits_detail.hpp
│   │       │   │   │   └── vec_distance_detail.hpp
│   │       │   │   ├── dynamic_smem.hpp
│   │       │   │   ├── emulation.hpp
│   │       │   │   ├── filters.hpp
│   │       │   │   ├── funcattrib.hpp
│   │       │   │   ├── functional.hpp
│   │       │   │   ├── limits.hpp
│   │       │   │   ├── reduce.hpp
│   │       │   │   ├── saturate_cast.hpp
│   │       │   │   ├── scan.hpp
│   │       │   │   ├── simd_functions.hpp
│   │       │   │   ├── transform.hpp
│   │       │   │   ├── type_traits.hpp
│   │       │   │   ├── utility.hpp
│   │       │   │   ├── vec_distance.hpp
│   │       │   │   ├── vec_math.hpp
│   │       │   │   ├── vec_traits.hpp
│   │       │   │   ├── warp.hpp
│   │       │   │   ├── warp_reduce.hpp
│   │       │   │   └── warp_shuffle.hpp
│   │       │   ├── cuda.hpp
│   │       │   ├── cuda.inl.hpp
│   │       │   ├── cuda_stream_accessor.hpp
│   │       │   ├── cuda_types.hpp
│   │       │   ├── cv_bmcpu.hpp
│   │       │   ├── cv_cpu_dispatch.h
│   │       │   ├── cv_cpu_helper.h
│   │       │   ├── cvdef.h
│   │       │   ├── cvstd.hpp
│   │       │   ├── cvstd.inl.hpp
│   │       │   ├── cvstd_wrapper.hpp
│   │       │   ├── directx.hpp
│   │       │   ├── eigen.hpp
│   │       │   ├── fast_math.hpp
│   │       │   ├── hal
│   │       │   │   ├── hal.hpp
│   │       │   │   ├── interface.h
│   │       │   │   ├── intrin_avx.hpp
│   │       │   │   ├── intrin_cpp.hpp
│   │       │   │   ├── intrin_forward.hpp
│   │       │   │   ├── intrin.hpp
│   │       │   │   ├── intrin_neon.hpp
│   │       │   │   ├── intrin_sse_em.hpp
│   │       │   │   ├── intrin_sse.hpp
│   │       │   │   └── intrin_vsx.hpp
│   │       │   ├── hal.hpp
│   │       │   ├── ion.hpp
│   │       │   ├── mat.hpp
│   │       │   ├── mat.inl.hpp
│   │       │   ├── matx.hpp
│   │       │   ├── neon_utils.hpp
│   │       │   ├── ocl_genbase.hpp
│   │       │   ├── ocl.hpp
│   │       │   ├── opencl
│   │       │   │   ├── ocl_defs.hpp
│   │       │   │   ├── opencl_info.hpp
│   │       │   │   ├── opencl_svm.hpp
│   │       │   │   └── runtime
│   │       │   │       ├── autogenerated
│   │       │   │       │   ├── opencl_clamdblas.hpp
│   │       │   │       │   ├── opencl_clamdfft.hpp
│   │       │   │       │   ├── opencl_core.hpp
│   │       │   │       │   ├── opencl_core_wrappers.hpp
│   │       │   │       │   ├── opencl_gl.hpp
│   │       │   │       │   └── opencl_gl_wrappers.hpp
│   │       │   │       ├── opencl_clamdblas.hpp
│   │       │   │       ├── opencl_clamdfft.hpp
│   │       │   │       ├── opencl_core.hpp
│   │       │   │       ├── opencl_core_wrappers.hpp
│   │       │   │       ├── opencl_gl.hpp
│   │       │   │       ├── opencl_gl_wrappers.hpp
│   │       │   │       ├── opencl_svm_20.hpp
│   │       │   │       ├── opencl_svm_definitions.hpp
│   │       │   │       └── opencl_svm_hsa_extension.hpp
│   │       │   ├── opengl.hpp
│   │       │   ├── operations.hpp
│   │       │   ├── optim.hpp
│   │       │   ├── ovx.hpp
│   │       │   ├── persistence.hpp
│   │       │   ├── saturate.hpp
│   │       │   ├── softfloat.hpp
│   │       │   ├── sse_utils.hpp
│   │       │   ├── traits.hpp
│   │       │   ├── types_c.h
│   │       │   ├── types.hpp
│   │       │   ├── utility.hpp
│   │       │   ├── utils
│   │       │   │   ├── filesystem.hpp
│   │       │   │   ├── logger.defines.hpp
│   │       │   │   ├── logger.hpp
│   │       │   │   └── trace.hpp
│   │       │   ├── va_intel.hpp
│   │       │   ├── version.hpp
│   │       │   └── vsx_utils.hpp
│   │       ├── core.hpp
│   │       ├── cvconfig.h
│   │       ├── dnn
│   │       │   ├── all_layers.hpp
│   │       │   ├── dict.hpp
│   │       │   ├── dnn.hpp
│   │       │   ├── dnn.inl.hpp
│   │       │   ├── layer.details.hpp
│   │       │   ├── layer.hpp
│   │       │   ├── shape_utils.hpp
│   │       │   ├── utils
│   │       │   │   └── inference_engine.hpp
│   │       │   └── version.hpp
│   │       ├── dnn.hpp
│   │       ├── features2d
│   │       │   ├── features2d.hpp
│   │       │   └── hal
│   │       │       └── interface.h
│   │       ├── features2d.hpp
│   │       ├── flann
│   │       │   ├── all_indices.h
│   │       │   ├── allocator.h
│   │       │   ├── any.h
│   │       │   ├── autotuned_index.h
│   │       │   ├── composite_index.h
│   │       │   ├── config.h
│   │       │   ├── defines.h
│   │       │   ├── dist.h
│   │       │   ├── dummy.h
│   │       │   ├── dynamic_bitset.h
│   │       │   ├── flann_base.hpp
│   │       │   ├── flann.hpp
│   │       │   ├── general.h
│   │       │   ├── ground_truth.h
│   │       │   ├── heap.h
│   │       │   ├── hierarchical_clustering_index.h
│   │       │   ├── index_testing.h
│   │       │   ├── kdtree_index.h
│   │       │   ├── kdtree_single_index.h
│   │       │   ├── kmeans_index.h
│   │       │   ├── linear_index.h
│   │       │   ├── logger.h
│   │       │   ├── lsh_index.h
│   │       │   ├── lsh_table.h
│   │       │   ├── matrix.h
│   │       │   ├── miniflann.hpp
│   │       │   ├── nn_index.h
│   │       │   ├── object_factory.h
│   │       │   ├── params.h
│   │       │   ├── random.h
│   │       │   ├── result_set.h
│   │       │   ├── sampling.h
│   │       │   ├── saving.h
│   │       │   ├── simplex_downhill.h
│   │       │   └── timer.h
│   │       ├── flann.hpp
│   │       ├── freetype.hpp
│   │       ├── gapi
│   │       │   ├── core.hpp
│   │       │   ├── cpu
│   │       │   │   ├── core.hpp
│   │       │   │   ├── gcpukernel.hpp
│   │       │   │   └── imgproc.hpp
│   │       │   ├── fluid
│   │       │   │   ├── core.hpp
│   │       │   │   ├── gfluidbuffer.hpp
│   │       │   │   ├── gfluidkernel.hpp
│   │       │   │   └── imgproc.hpp
│   │       │   ├── garg.hpp
│   │       │   ├── garray.hpp
│   │       │   ├── gcall.hpp
│   │       │   ├── gcommon.hpp
│   │       │   ├── gcompiled.hpp
│   │       │   ├── gcompoundkernel.hpp
│   │       │   ├── gcomputation.hpp
│   │       │   ├── gkernel.hpp
│   │       │   ├── gmat.hpp
│   │       │   ├── gmetaarg.hpp
│   │       │   ├── gproto.hpp
│   │       │   ├── gpu
│   │       │   │   ├── core.hpp
│   │       │   │   ├── ggpukernel.hpp
│   │       │   │   └── imgproc.hpp
│   │       │   ├── gscalar.hpp
│   │       │   ├── gtyped.hpp
│   │       │   ├── gtype_traits.hpp
│   │       │   ├── imgproc.hpp
│   │       │   ├── ocl
│   │       │   │   ├── core.hpp
│   │       │   │   ├── goclkernel.hpp
│   │       │   │   └── imgproc.hpp
│   │       │   ├── opencv_includes.hpp
│   │       │   ├── operators.hpp
│   │       │   ├── own
│   │       │   │   ├── assert.hpp
│   │       │   │   ├── convert.hpp
│   │       │   │   ├── cvdefs.hpp
│   │       │   │   ├── exports.hpp
│   │       │   │   ├── mat.hpp
│   │       │   │   ├── saturate.hpp
│   │       │   │   ├── scalar.hpp
│   │       │   │   └── types.hpp
│   │       │   └── util
│   │       │       ├── any.hpp
│   │       │       ├── compiler_hints.hpp
│   │       │       ├── optional.hpp
│   │       │       ├── throw.hpp
│   │       │       ├── util.hpp
│   │       │       └── variant.hpp
│   │       ├── gapi.hpp
│   │       ├── highgui
│   │       │   ├── highgui_c.h
│   │       │   └── highgui.hpp
│   │       ├── highgui.hpp
│   │       ├── imgcodecs
│   │       │   ├── imgcodecs_c.h
│   │       │   ├── imgcodecs.hpp
│   │       │   ├── ios.h
│   │       │   └── legacy
│   │       │       └── constants_c.h
│   │       ├── imgcodecs.hpp
│   │       ├── imgproc
│   │       │   ├── detail
│   │       │   │   └── gcgraph.hpp
│   │       │   ├── hal
│   │       │   │   ├── hal.hpp
│   │       │   │   └── interface.h
│   │       │   ├── imgproc_c.h
│   │       │   ├── imgproc.hpp
│   │       │   ├── types_c.h
│   │       │   └── vpp.hpp
│   │       ├── imgproc.hpp
│   │       ├── ml
│   │       │   ├── ml.hpp
│   │       │   └── ml.inl.hpp
│   │       ├── ml.hpp
│   │       ├── objdetect
│   │       │   ├── detection_based_tracker.hpp
│   │       │   └── objdetect.hpp
│   │       ├── objdetect.hpp
│   │       ├── opencv.hpp
│   │       ├── opencv_modules.hpp
│   │       ├── photo
│   │       │   ├── cuda.hpp
│   │       │   ├── legacy
│   │       │   │   └── constants_c.h
│   │       │   └── photo.hpp
│   │       ├── photo.hpp
│   │       ├── stitching
│   │       │   ├── detail
│   │       │   │   ├── autocalib.hpp
│   │       │   │   ├── blenders.hpp
│   │       │   │   ├── camera.hpp
│   │       │   │   ├── exposure_compensate.hpp
│   │       │   │   ├── matchers.hpp
│   │       │   │   ├── motion_estimators.hpp
│   │       │   │   ├── seam_finders.hpp
│   │       │   │   ├── timelapsers.hpp
│   │       │   │   ├── util.hpp
│   │       │   │   ├── util_inl.hpp
│   │       │   │   ├── warpers.hpp
│   │       │   │   └── warpers_inl.hpp
│   │       │   └── warpers.hpp
│   │       ├── stitching.hpp
│   │       ├── video
│   │       │   ├── background_segm.hpp
│   │       │   ├── legacy
│   │       │   │   └── constants_c.h
│   │       │   ├── tracking.hpp
│   │       │   └── video.hpp
│   │       ├── video.hpp
│   │       ├── videoio
│   │       │   ├── cap_ios.h
│   │       │   ├── legacy
│   │       │   │   └── constants_c.h
│   │       │   ├── registry.hpp
│   │       │   ├── videoio_c.h
│   │       │   └── videoio.hpp
│   │       └── videoio.hpp
│   ├── tpu_bitcasts.h
│   ├── tpu_fp16_base.h
│   ├── tpu_fp16.h
│   ├── tpu_fp16.hpp
│   ├── user_bmcpu_common.h
│   ├── user_bmcpu.h
│   ├── utils.hpp
│   ├── vppion.h
│   ├── vpplib.h
│   └── yolov5.hpp
└── lib├── cmake│   ├── FFMPEGConfig.cmake│   └── opencv4│       ├── OpenCVConfig.cmake│       ├── OpenCVConfig-version.cmake│       ├── OpenCVModules.cmake│       └── OpenCVModules-release.cmake├── libavcodec.a├── libavcodec.so -> libavcodec.so.58.35.100-sophon-0.7.0├── libavcodec.so.58 -> libavcodec.so.58.35.100-sophon-0.7.0├── libavcodec.so.58.35.100-sophon-0.7.0├── libavdevice.a├── libavdevice.so -> libavdevice.so.58.5.100-sophon-0.7.0├── libavdevice.so.58 -> libavdevice.so.58.5.100-sophon-0.7.0├── libavdevice.so.58.5.100-sophon-0.7.0├── libavfilter.a├── libavfilter.so -> libavfilter.so.7.40.101-sophon-0.7.0├── libavfilter.so.7 -> libavfilter.so.7.40.101-sophon-0.7.0├── libavfilter.so.7.40.101-sophon-0.7.0├── libavformat.a├── libavformat.so -> libavformat.so.58.20.100-sophon-0.7.0├── libavformat.so.58 -> libavformat.so.58.20.100-sophon-0.7.0├── libavformat.so.58.20.100-sophon-0.7.0├── libavutil.a├── libavutil.so -> libavutil.so.56.22.100-sophon-0.7.0├── libavutil.so.56 -> libavutil.so.56.22.100-sophon-0.7.0├── libavutil.so.56.22.100-sophon-0.7.0├── libbmcv.a├── libbmcv.so -> libbmcv.so.0├── libbmcv.so.0 -> libbmcv.so.0.7.0├── libbmcv.so.0.7.0├── libbmion.so -> libbmion.so.0├── libbmion.so.0 -> libbmion.so.0.7.0├── libbmion.so.0.7.0├── libbmjpuapi.so -> libbmjpuapi.so.0├── libbmjpuapi.so.0 -> libbmjpuapi.so.0.7.0├── libbmjpuapi.so.0.7.0├── libbmjpulite.so -> libbmjpulite.so.0├── libbmjpulite.so.0 -> libbmjpulite.so.0.7.0├── libbmjpulite.so.0.7.0├── libbmlib.so -> libbmlib.so.0├── libbmlib.so.0├── libbmodel.a├── libbmrt.so -> libbmrt.so.1.0├── libbmrt.so.1.0├── libbmvideo.so -> libbmvideo.so.0├── libbmvideo.so.0 -> libbmvideo.so.0.7.0├── libbmvideo.so.0.7.0├── libbmvppapi.so -> libbmvppapi.so.0├── libbmvppapi.so.0 -> libbmvppapi.so.0.7.0├── libbmvppapi.so.0.7.0├── libbmvpuapi.so -> libbmvpuapi.so.0├── libbmvpuapi.so.0 -> libbmvpuapi.so.0.7.0├── libbmvpuapi.so.0.7.0├── libbmvpulite.so -> libbmvpulite.so.0├── libbmvpulite.so.0 -> libbmvpulite.so.0.7.0├── libbmvpulite.so.0.7.0├── libcpuop.so -> libcpuop.so.0.4.9├── libcpuop.so.0.4.9├── libopencv_calib3d.so -> libopencv_calib3d.so.4.1├── libopencv_calib3d.so.4.1 -> libopencv_calib3d.so.4.1.0-sophon-0.7.0├── libopencv_calib3d.so.4.1.0-sophon-0.7.0├── libopencv_core.so -> libopencv_core.so.4.1├── libopencv_core.so.4.1 -> libopencv_core.so.4.1.0-sophon-0.7.0├── libopencv_core.so.4.1.0-sophon-0.7.0├── libopencv_dnn.so -> libopencv_dnn.so.4.1├── libopencv_dnn.so.4.1 -> libopencv_dnn.so.4.1.0-sophon-0.7.0├── libopencv_dnn.so.4.1.0-sophon-0.7.0├── libopencv_features2d.so -> libopencv_features2d.so.4.1├── libopencv_features2d.so.4.1 -> libopencv_features2d.so.4.1.0-sophon-0.7.0├── libopencv_features2d.so.4.1.0-sophon-0.7.0├── libopencv_flann.so -> libopencv_flann.so.4.1├── libopencv_flann.so.4.1 -> libopencv_flann.so.4.1.0-sophon-0.7.0├── libopencv_flann.so.4.1.0-sophon-0.7.0├── libopencv_freetype.so -> libopencv_freetype.so.4.1├── libopencv_freetype.so.4.1 -> libopencv_freetype.so.4.1.0-sophon-0.7.0├── libopencv_freetype.so.4.1.0-sophon-0.7.0├── libopencv_gapi.so -> libopencv_gapi.so.4.1├── libopencv_gapi.so.4.1 -> libopencv_gapi.so.4.1.0-sophon-0.7.0├── libopencv_gapi.so.4.1.0-sophon-0.7.0├── libopencv_highgui.so -> libopencv_highgui.so.4.1├── libopencv_highgui.so.4.1 -> libopencv_highgui.so.4.1.0-sophon-0.7.0├── libopencv_highgui.so.4.1.0-sophon-0.7.0├── libopencv_imgcodecs.so -> libopencv_imgcodecs.so.4.1├── libopencv_imgcodecs.so.4.1 -> libopencv_imgcodecs.so.4.1.0-sophon-0.7.0├── libopencv_imgcodecs.so.4.1.0-sophon-0.7.0├── libopencv_imgproc.so -> libopencv_imgproc.so.4.1├── libopencv_imgproc.so.4.1 -> libopencv_imgproc.so.4.1.0-sophon-0.7.0├── libopencv_imgproc.so.4.1.0-sophon-0.7.0├── libopencv_ml.so -> libopencv_ml.so.4.1├── libopencv_ml.so.4.1 -> libopencv_ml.so.4.1.0-sophon-0.7.0├── libopencv_ml.so.4.1.0-sophon-0.7.0├── libopencv_objdetect.so -> libopencv_objdetect.so.4.1├── libopencv_objdetect.so.4.1 -> libopencv_objdetect.so.4.1.0-sophon-0.7.0├── libopencv_objdetect.so.4.1.0-sophon-0.7.0├── libopencv_photo.so -> libopencv_photo.so.4.1├── libopencv_photo.so.4.1 -> libopencv_photo.so.4.1.0-sophon-0.7.0├── libopencv_photo.so.4.1.0-sophon-0.7.0├── libopencv_stitching.so -> libopencv_stitching.so.4.1├── libopencv_stitching.so.4.1 -> libopencv_stitching.so.4.1.0-sophon-0.7.0├── libopencv_stitching.so.4.1.0-sophon-0.7.0├── libopencv_videoio.so -> libopencv_videoio.so.4.1├── libopencv_videoio.so.4.1 -> libopencv_videoio.so.4.1.0-sophon-0.7.0├── libopencv_videoio.so.4.1.0-sophon-0.7.0├── libopencv_video.so -> libopencv_video.so.4.1├── libopencv_video.so.4.1 -> libopencv_video.so.4.1.0-sophon-0.7.0├── libopencv_video.so.4.1.0-sophon-0.7.0├── libswresample.a├── libswresample.so -> libswresample.so.3.3.100-sophon-0.7.0├── libswresample.so.3 -> libswresample.so.3.3.100-sophon-0.7.0├── libswresample.so.3.3.100-sophon-0.7.0├── libswscale.a├── libswscale.so -> libswscale.so.5.3.100-sophon-0.7.0├── libswscale.so.5 -> libswscale.so.5.3.100-sophon-0.7.0├── libswscale.so.5.3.100-sophon-0.7.0├── libturing_env.so├── libusercpu.so -> libusercpu.so.0.4.9├── libusercpu.so.0.4.9├── libvideo_bm.so -> libbmvideo.so├── libvpp.a├── libvpp_cmodel.so├── libvpp.so -> libvpp.so.0├── libvpp.so.0 -> libvpp.so.0.7.0├── libvpp.so.0.7.0├── libyuv.a├── libyuv.so -> libyuv.so.0├── libyuv.so.0 -> libyuv.so.0.7.0├── libyuv.so.0.7.0├── pkgconfig│   ├── libavcodec.pc│   ├── libavdevice.pc│   ├── libavfilter.pc│   ├── libavformat.pc│   ├── libavutil.pc│   ├── libswresample.pc│   ├── libswscale.pc│   └── opencv4.pc├── tpu_module│   └── libbm1684x_kernel_module.so└── vpu_firmware├── chagall.bin└── chagall_dec.bin

另外,makefile内容如下

CC      = aarch64-linux-gnu-gcc
CPP     = aarch64-linux-gnu-g++
AR      = ar
RM      = rm -f#Define the resource compiler.
RC = windres## debug flag  
DBG_ENABLE := 0OS = $(shell uname)## source file path  
SRC_PATH  := ./cpp/ #./include/utils/
SRC_PATH_EXT := 
DEMO :=./demo/main.cpp## target file name  
TARGET     := turing_env
DEMO_TARGET := env_demo## get all source files  
SRCS := $(foreach spath, $(SRC_PATH), $(wildcard $(spath)*.c) $(wildcard $(spath)*.cpp))## all .o based on all .c/.cpp
OBJS = $(SRCS:.c=.o)
OBJS := $(OBJS:.cpp=.o) ## macro define
#DEFS := __LINUX__ OS_LINUX _FILE_OFFSET_BITS=64
DEFS := __LINUX__ OS_LINUX #if freeimage is static-linked use this !
#DEFS += FREEIMAGE_LIB## need libs, add at here  
LIBS := bmrt bmlib bmcv dl \opencv_core opencv_imgproc opencv_imgcodecs opencv_videoio  opencv_video \bmvideo swresample swscale avformat avutil \#protobuf gflags glog boost_system boost_filesystem pthread bmjpuapi bmjpulite #asanDEMO_LIBS = $(LIBS)
DEMO_LIBS += turing_env## used headers  file path  
INCLUDE_PATH := ./include ./include/third /usr/local/cuda/include  ./src  ./include/biz_sdk ./include/biz_common  ./include/spdlog ./include/utils ./include/rapidjson ./  
INCLUDE_PATH += ./include/tcp_pubsub  #add by chw
INCLUDE_PATH += ./include
INCLUDE_PATH += ./include/rapidjson
INCLUDE_PATH += ./include/bmruntime
INCLUDE_PATH += ./include/bmlib
INCLUDE_PATH += ./include/third_party/boost/include
INCLUDE_PATH += ./include/opencv4 
INCLUDE_PATH += ./include/ffmpeg ./include#$(warning $(INCLUDE_PATH))## used include librarys file path  
LIBRARY_PATH := ./  ./lib  ./lib/thirdparty/soc ./lib/bmnn/soc ./lib/opencv/soc ./lib/ffmpeg/soc ./lib/decode/soc## debug for debug info, when use gdb to debug  
ifeq (1, ${DBG_ENABLE})   
CFLAGS += -D_DEBUG -g -DDEBUG=1 
else
CFLAGS += -O2 -DNDEBUG
endif#for ENCYPT flagsifeq ($(OS), Linux)
LIBS += dl rt
CFLAGS += -fPIC
TARGET_EXT := .so
LIBRARY_PATH += 
LDFLAGS += -Wl,--rpath=./lib 
LDFLAGS += -Wl,--rpath=./lib/thirdparty/soc 
LDFLAGS += -Wl,--rpath=./lib/bmnn/soc
LDFLAGS += -Wl,--rpath=./lib/opencv/soc
LDFLAGS += -Wl,--rpath=./lib/ffmpeg/soc
LDFLAGS += -Wl,--rpath=./lib/decode/soc
endif#CFLAGS += -msse4.2 -march=core2 -pipe $(foreach m, $(DEFS), -D$(m)) CFLAGS +=  -pipe $(foreach m, $(DEFS), -D$(m)) ## get all include path  
CFLAGS  += $(foreach dir, $(INCLUDE_PATH), -I$(dir))   #-fsanitize=address -g
##CFLAGS  += $(foreach dir, $(INCLUDE_PATH), -I$(dir))  -fvisibility=hidden  CXXFLAGS += $(CFLAGS) -std=c++11 ## get all library path  
#LDFLAGS += -lpthread  -fsanitize=address $(foreach lib, $(LIBRARY_PATH), -L$(lib))
LDFLAGS += -lpthread  $(foreach lib, $(LIBRARY_PATH), -L$(lib))
DEMO_LDFLAGS := $(LDFLAGS)
## get all librarys  
LDFLAGS += $(foreach lib, $(LIBS), -l$(lib))DEMO_LDFLAGS += $(foreach lib, $(DEMO_LIBS), -l$(lib))RCFLAGS ?= -DNDEBUGdefault: all%.o: %.c$(CC) $(CFLAGS) -g -c $< -o $@%.o: %.cpp$(CPP) $(CXXFLAGS) -g -c $< -o $@all: $(OBJS) $(RESOURCE)#$(CPP) $(CXXFLAGS) -o $(TARGET) $(OBJS) $(RESOURCE) $(LDFLAGS)$(CPP) $(CXXFLAGS) -g -shared -o lib$(TARGET)$(TARGET_EXT) $(OBJS) $(RESOURCE) $(LDFLAGS)mv libturing_env.so ./lib$(CPP) $(CXXFLAGS) -g -o $(DEMO_TARGET) $(DEMO) $(DEMO_LDFLAGS)clean:  $(RM) $(OBJS) $(DEMO_TARGET) $(TARGET).* $(RESOURCE)

参考文献:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hadoop FileSystem是否要close

先来说结论&#xff0c;最好不要close&#xff0c;让hadoop自己close&#xff0c;否则容易把进程里其他获取fs的地方一起关了。这是因为 FileSystem.get(Configuration)做了缓存的原因。当然可以设置 conf.setBoolean("fs.hdfs.impl.disable.cache", true); 就不缓存…

Django后台管理(一)

一、admin介绍 Django 最强大的部分之一是自动管理界面。它从你的模型中读取元数据,提供一个快速的、以模型为中心的界面,受信任的用户可以管理你网站上的内容 官网:https://docs.djangoproject.com/zh-hans/4.1/ref/contrib/admin/ 提示 后台管理系统是管理人员使用,不是…

Python之海象运算符

在 Python 3.8 及更高版本中&#xff0c;引入了一种新的语法特性&#xff0c;称为"海象运算符"&#xff08;Walrus Operator&#xff09;&#xff0c;它使用 : 符号。这个运算符的主要目的是在表达式中同时进行赋值和返回赋值的值。 使用海象运算符可以在一些情况下…

WireShark 安装指南:详细安装步骤和使用技巧

Wireshark是一个开源的网络协议分析工具&#xff0c;它能够捕获和分析网络数据包&#xff0c;并以用户友好的方式呈现这些数据包的内容。Wireshark 被广泛应用于网络故障排查、安全审计、教育及软件开发等领域。接下将讲解Wireshark的安装与简单使用。 目录 Wireshark安装步骤…

CSP-201809-1-卖菜

CSP-201809-1-卖菜 解题思路 #include <iostream> using namespace std; int main() {int n;cin >> n;int* array new int[n];for (int i 0; i < n; i){cin >> array[i];}cout << (array[0] array[1]) / 2 << " ";for (int i …

2.20 Qt day1

一. 思维导图 二. 消化常用类的使用&#xff0c;以及常用成员函数对应的功能 按钮类QPushButton&#xff1a; mywidget.h&#xff1a; #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include<QPushButton>//按钮类 #include<QIcon>class MyW…

springboot+vue项目基础开发(17)路由使用

路由 在前端中,路由指的是根据不同的访问路径,展示不同的内容 vue Router的vue.js的官方路由 安装vue Router 再启动 在src下面新建router文件,创建index.js 代码 import {createRouter,createWebHashHistory} from vue-router //导入组件 import Login from @/views/Log…

Kubernetes kubeadm 证书到期,更新证书

1.环境说明 lient Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.6", GitCommit:"fbf646b339dc52336b55d8ec85c181981b86331a", GitTreeState:"clean", BuildDate:"2020-12-18T12:09:30Z", G…

智慧水利数字孪生可视化,满屏黑科技!A3D引擎支持,免费即可搭建

2024年1月&#xff0c;在北京召开的全国水利工作会议&#xff0c;强调了要大力推进数字孪生水利建设&#xff0c;全面提升水利监测感知能力。 除此之外&#xff0c;2035年远景目标也提出&#xff1a;构建智慧水利体系&#xff0c;以流域为单元提升水情测报和智能调度能力。《数…

Open CASCADE学习|为什么由Edge生成Wire不成功?

Wire 是一种复合形状&#xff0c;不是由几何形状构建的&#xff0c;而是由边缘的装配构建的。BRepBuilderAPI_MakeWire类可以从一个或多个Edge构建Wire&#xff0c;或将新Edge连接到现有Wire。 BRepBuilderAPI_MakeWire 类将Edge连接到Wire。添加新Edge时&#xff0c;如果其顶点…

安卓OpenGL添加水印并录制(二)---抖音录制原理

文章目录 前文回顾音频处理留个小思考总结 本文首发地址 https://h89.cn/archives/146.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 源码地址: Gitee: OpenGLRecorder 通过 前文 我们知道了如何采集 Camera 视频&#xff0c;叠加水印、贴纸保存为MP4&#xff0c;…

Vue3 学习笔记(Day1)

「写在前面」 本文为尚硅谷禹神 Vue3 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。 目录 0 课程介绍 1 Vue3 简介 2 创建 Vue3 工程 2.1 基于 vue-cli 创建 2.2 基于 vite 创建&#xff08;推荐&#xff09; 2.3 …

Web3探索加密世界:什么是空投?

随着加密货币行业的迅速发展&#xff0c;人们开始听说各种各样的术语&#xff0c;其中包括"空投"&#xff08;Airdrop&#xff09;。在这里&#xff0c;我们将深入探讨什么是空投&#xff0c;以及它在加密世界中扮演的角色。 什么是空投&#xff1f; 空投是指在加密…

视频生成模型:构建虚拟世界的模拟器 [译]

原文&#xff1a;Video generation models as world simulators 我们致力于在视频数据上开展生成模型的大规模训练。具体来说&#xff0c;我们针对不同时长、分辨率和宽高比的视频及图像&#xff0c;联合训练了基于文本条件的扩散模型。我们采用了一种 Transformer 架构&#…

C# OpenCvSharp DNN Image Retouching

目录 介绍 模型 项目 效果 代码 下载 C# OpenCvSharp DNN Image Retouching 介绍 github地址&#xff1a;https://github.com/hejingwenhejingwen/CSRNet (ECCV 2020) Conditional Sequential Modulation for Efficient Global Image Retouching 模型 Model Properti…

信号系统之连续信号处理

1 Delta 函数 连续信号可以分解为缩放和移位的增量函数&#xff0c;就像处理离散信号一样。不同之处在于&#xff0c;连续 delta 函数比其离散函数复杂得多&#xff0c;在数学上也抽象得多。我们不是用它是什么来定义连续 delta 函数&#xff0c;而是用它所具有的特征来定义它…

汽车电子论文学习---电动汽车用高功率密度碳化硅电机控制器研究

关键重点&#xff1a; sic的特点&#xff1a;耐压高、开关速度快、开关损耗小&#xff1b;采用sic的控制器&#xff0c;损耗降低70%&#xff0c;续航里程提高5%。sic的模块并联设计难度高于IGBT模块&#xff1b;多芯片并联导致热耦合问题、温升不均&#xff0c;导致部分芯片率…

猫毛过敏不能养猫了吗?除猫毛好的宠物空气净化器品牌有哪些?

让我们来探讨一下如何让容易过敏的家庭成员和猫咪更好地相处。很多人喜欢猫咪&#xff0c;但与它们相处一段时间后&#xff0c;可能会出现鼻塞、喷嚏和眼泪不断的过敏症状。那么&#xff0c;为什么会过敏呢&#xff1f;这是因为猫的唾液中含有Fel d1蛋白质&#xff0c;当它们舔…

匠芯创ArtInChip D133CBS芯片:为工业HMI产品提供强大动力与稳健防护的理想之选

引言 当今工业自动化领域&#xff0c;对于高性能和可靠性的需求日益增长。为了满足这些要求&#xff0c;匠芯创ArtInChip推出了全新的D133CBS芯片&#xff0c;它以其卓越的性能和强大的功能&#xff0c;被设计用作工业人机界面&#xff08;HMI&#xff09;产品的主控制器。 D1…

URL、DNS过滤,AV---防火墙综合实验

拓扑图 该实验之前的配置请看我的上一篇博客&#xff0c;这里仅配置URL、DNS过滤&#xff0c;AV 需求 8&#xff0c;分公司内部的客户端可以通过域名访问到内部的服务器 这次的拓扑图在外网多增加了一个DNS服务器和HTTP服务器 DNS服务器IP&#xff1a;40.0.0.30 HTTP服务器…