1.6 SDK更新记录
Sophon
3.0.0
SDK
增加部分对bm1684x芯片的支持
SDK发行包名称修改,开发docker名称优化
更新docker启动脚本为docker_run_sophonsdk.sh,默认在后台创建docker容器,并自动进入docker容器
SDK中移除了examples目录,相关例程统一放在github开源:https://github.com/sophon-ai-algo/examples/
SDK中以下lib库的路径进行了修改,请特别注意:
lib/opencv/x86 修改为 lib/opencv/pcie lib/ffmpeg/x86 修改为 lib/ffmpeg/pcie lib/decode/x86 修改为 lib/decode/pcie
bmlib & driver
增加了对bm1684x 芯片的支持
修复了若干bug,列出主要:修复了bm-smi 版本号显示的问题、修复了RedHat 8.2下的驱动编译问题
bmcv
bmcv中api 添加1684x的底层支持,目前还没有全加完, 1684x的vpp新增了cmodel模式,新增了些色彩格式和数据类型格式。新增某些1684x的test case,还在完善。
添加bmcv_api_yuv_resize.cpp,bmcv_api_bitwise.cpp, bmcv_api_matmul.cpp。
添加缩放选项 BMCV_INTER_BICUBIC的代码支持,底层用1684 vpp实现的api接口都支持了。
部分代码添加了错误退出时释放设备内存,减少内存泄露风险。
test_cv_lkpyramid.cpp 中的结果对比精度,从0.5改为了20. 认为精度存在误差。
pcie_arm64对于opencv3.4.1的动态库链接改为静态库。
bmcv中增加对bicubic缩放算法的支持。
bmvid/middleware
ffmpeg/opencv编解码部分添加bm1684x支持,其他待扩展
增强gb28181的稳定性
opencv writer接口中增加录制mp4中extradata的功能
增加cvtColor中对yuvMat的支持
ko中对于空url进行特殊保护处理
增加对extra_frame_num大小的检查
解决gop_Preset不当引入的avc格式的编码马赛克
bug修正:bmcpu_opencv接口完善,加强bmcv_jpeg_decode对输出内存的检查,修正hwdownload在soc模式下的处理等
nntc
增加了对1684x芯片的支持,包括前端接口、fp16/bfp16等类型支持、后端常用算子等
支持mlperf相关网络的静态编译
完成动态编译框架,目前支持resnet50
bmtflite支持原生量化的resnet50
后端算子与bm1684对齐
TPU1686的TPUKernel库编程支持
编译器重构,完全移除了对bmlib的依赖。用TPU1684工程取代bm168x工程,多种类型设备支持更加灵活统一
完善了bmlang的c++和python接口,提升了易用性,并针对bm1684x增加了新的接口及算子;
bmnetu利用bmlang重构,大部分量化算子用bmlang重写
前端增加了新的算子支持(部分以补丁形式进入2.7.0了)
bmpaddle: swish, layer_norm, assign, temporal_shift、flip、stack、tile、meshgrid、sqrt
bmneto:conv3d、deconv3d
bmnetp:min/max支持同时输出值和索引、group_norm、full,
bmnetc:合并upsampe和upsampecopy,解决yolov3的Upsample问题、增加elu支持
bmnetm:l2norm的instance mode
bmnett: 增加pool和conv的padding='SAME'标记,以支持动态运行
bmcompiler若干优化(这里列出主要的):
增加detect_out相关结构的合并,对paddle的yolo,以及onnx的maskrcnn的后处理转换
增加了dump local layer data功能
支持外部强制设定tensor的shape和data功能
优化reduce_full实现
active接口支持coeff参数
若干bug修复(这里列出主要的)
修复TPU NMS误检框问题
修复了bmneto输入个数大于10出错问题
修复了各个layer的shape_infer
Quantization量化工具
新增对1684x芯片量化支持,1684x量化方法支持per-channel量化。
可视化工具升级。
auto-cali用户命令接口优化,完善多输入网络支持,完善paddle等框架支持。
增加auto-cali增加敏感层搜索等调优方法。
bug-fix
ufw
支持1684x芯片推理和量化。
python接口重构,去除boost依赖。
去除对opencv依赖。
bug-fix。
Sophon-inference
添加保存输入输出的接口 set_dump_io_flag (python/c++)
Handle添加get_sn接口 (python/c++)
添加多卡推理引擎MultiEngine(python)
添加putText和putText_接口(python/c++)
添加image_add_weighted接口 (python/c++)
添加image_copy_to接口(python/c++)
添加image_copy_to_padding接口 (python/c++)
添加set_decoder_env接口(python/c++),用来自定义ffmpeg参数
PaddingAttr添加构造函数(python/c++)
Engine添加 create_input_tensors_map接口(python/c++),根据bmodel创建input tensor map
Engine添加 create_output_tensors_map接口(python/c++),根据bmodel创建output tensor map
Engine对输入数据格式为fortran的numpy进行优化,优化了fortran转换为contiguous的时间,在普通PC机上对于640*640的彩色图像在普通pc机上时间由40ms,缩短为3.5ms
添加nms接口(python/c++)
添加warp_perspective接口(python/c++)
BSP
针对SE6的大量修正
修正SE5混用宽温版、客户16GB板子支持等问题
1684分bin芯片支持
bmcpu bugfix
增加ubuntu lite
2.7.0 patched on 20220531
middleware
修复bug:url为空可能导致的VPU异常
修复bug:国标拉流偶尔失败
修复bug: 国标拉流段错误修复bug:url为空可能导致的VPU异常
nntc:
bmneto增加logsoftmax、reduce_l2
bmnetp增加sign、relu6、softplus、hardswish、hardsigmoid
bmpaddle增加hardswish、hardsigmoid支持
优化depthwise deconv实现
bmcompiler增加active层扩展功能
修复问题:
修复bmnetp的多维linear fc问题
修复pad value用整型溢出问题
修复bmneto的clip层问题
修复同名constant的问题
修复bmnetp的输入为int32格式pow算子bug
修复bmruntime example的脚本问题
修复bmnetu的prec参数问题
修复bmlog引起脚本初始化出错问题
后端修复动态fc shape推理
后端修复arg的dtype convert参数溢出问题
后端修复depthwise conv的local mem切分bug
后端修复select层问题
后端修复expand层在4N模式下出错问题
后端修复动态shape const 层问题
calibration
auto-cali增加paddle支持
auto-cali支持多输入网络
ufw/cali SoftPlus,Hswish, Hsigmoid支持
修复PReLU量化问题
auto-cali batchsize问题修复
ufw修复输入顺序问题
ufw/cali大blob支持
量化shape问题修复
量化门限问题修复
文档更新
sail
修复bug:使用numpy作为输入时,若sail.Engine初始化时未指定IOMode,后续再设置IOMode可能造成的Tensor内存未分配程序崩溃的问题;
修改sail.Decoder解析rtsp流时默认的extra_frame_buffer_num值,修复当该值过大时解析某些要求缓存帧数较多的码流可能引起的解码错误;
完善接口:sail.Decoder增加release和reconnect接口。
BSP
pcie 模式修正start a53 打印错误的issue
pcie 模式修正mix mode 启动后 I2c 错误问题
examples:修复完善examples中的若干问题
2.7.0
middleware
支持bmcpu opencv,即pcie模式下,在卡上cpu执行opencv的相应函数,已支持函数列表见《多媒体用户手册》文档
bmcv jpeg decoder接口当遇到硬件不支持的格式的时候,自动切换到turbojpeg软解码
增加opencv capture.read_record接口,解码同时提供码流录制功能
提供opencv imread的解码鲁棒性,当图像存在错误的时,仍然尽可能输出可解码部分的图像。由IMREAD_RETRY_SOFTDEC标志位控制
将gb28181中的sip协议库由GPL协议的osip库替换为自研的sip库
增加opencv capture中的fourcc支持
opencv在x86下增加abi0/1两套库,abi0针对centos等低于gcc5的编译器,abi1针对ubntu系统
修定部分4k视频下因为secondary axi ram不够导致的解码失败问题
丰富vidmulti例子,融合了多路编码的命令行选项
bmcv::toBMI增加了8SC3/8SC1类型的转换
bmcv::dumpMat增加对视频压缩格式的支持
增强错误码流的鲁棒性处理,当码流错误导致底层堵塞的时候,avcodec_decode_video2或者send_packet/receive_frame接口会返回-1,以便上层应用重新连接或者做相应处理
一些bug修订
bm168x
PCIE加载驱动的时候默认使能A53。
支持PCIE虚拟网卡功能。
bm-smi
a53 使能时,bm-smi recovery重新加载a53
支持PCIE MIX MODE ,pcie 模式下,使能完整的soc 功能,推理,视频图像编解码任务在soc 环境下完成,pcie 只作为通信通道。
bmcompiler与bmruntime
增加了新的算子支持和优化
改进了bmodel及bmruntime的内存分配机制,可以支持大模型运行,如BasicVSR
增加了数据统计模式,通过export BMCOMPILER_STAT_ERR=1,可以在开比对情况下,会统计层数据的相似度,不会因为个别数据超过阈值而中断编译
代码结构优化:与bmlib解耦、bmcompiler layer重构等
bug fix
Quantization量化工具
支持新的ubuntu16.04+python3.7 docker
U-FrameWork优化制作lmdb程序接口,提供ufwio python安装包,易于嵌入用户开发环境制作lmdb。
删除convert_imageset二进制工具,改用上述ufwio接口制作lmdb,提供制作python例程可以直接使用或者修改使用。
量化工具增加MSE,PERCENTILE量化算法。
auto-cali整合到ufw whl包,便于依赖管理。代码进行了重构,优化一键量化调用接口,增加了更多的自动量化策略。推荐用户cv类量化优先使用一键量化。
增加新版本可视化工具,旧版可视化工具暂时并存。新版工具展示网络结构,更加方便操作,推荐使用新版本可视化工具。
bug-fix
Sophon-inference
重构头文件,隐藏实现细节,提高兼容性
修复crop/resize/convert等接口会将传入的指定了输出格式的BMImage强制转换为BGR_PLANAR的问题
增加了打印推理过程中主要耗时情况的开关接口set_print_flag()
Python中sail.Decoder删除了以bm_image为返回值的read_接口
BMImageArray中增加了从BMImage中copy和attach数据的接口copy_from()和attach_from()
修改了Python中sail.Tensor的初始化方法,添加own_sys_data标志位,支持创建只包含设备内存的Tensor
Bmcv中增加了适用于bm_image的图片保存接口imwrite_
Python中sail.Bmcv增加了适用于bm_image的绘制矩形接口rectangle_()
Python中sail.Bmcv增加了接口vpp_convert_format()
Python中sail.Bmcv增加了接口convert_format()
Python中sail.Bmcv增加了接口crop_and_resize_padding()
增加了Python开发中的语法提示
修复若干文档错误
SE5固件
SE5 v2支持
解耦gate相关(预置的人脸抓拍识别应用)- 仅针对Ubuntu20.04版本
把sophon system 这套界面和restful api 接口移植到全家桶box,以提供给客户一些系统信息(tpu/vpu/fan等)
把gate 文件系统里 bm_bin的一些基本命令移植到全家桶box,提高用户体验
oemconfig.ini 生成
增加升级命令(bm_upgrade_runtime),从官网下载最新升级包,并升级
qt5.14的lib 移植到box
SophUI(hdmi 显示界面),显示信息,修改ip
documents
之前随SDK发布的各个模块文档修改为统一在官网文档中心发布,可在线查看或下载PDF
2.6.0
bmlib&driver:
新增了loongarch64 平台的支持
修正了firmware 超过1M 后会overflow的问题
bmvid / middleware、bmcv:
增加proc中vpu/jpu使用率信息
opencv videowrite增加对rtsp/rtmp的直接支持,并增加示例
大幅更新multimedia_guide文档,增加multimedia_faq文档
更新并完善ffmpeg中bm-scale filter的功能:增加更多色彩的csc转换,支持常规模式下的滤波用法
pcie opencv使能bmcpu功能,提供A53下的font/rectangle/line等基本drawing操作
bmcv/vpp增加对argb颜色的支持
ffmpeg bmcodec增加对loop-decoding的支持
增加对loongarch64平台的支持
windows/mips64/sw64/loogarch64平台增加x86 linux下的sample用例
增加opencv/ffmpeg的各种示例,展示ffmpeg+bmcv之间的切换调用
bug修正:支持crop图像的jpeg编码,减少opencv下视频解码的内存占用空间,移除libbm_x264,opencvModule.cmake中移除绝对路径等
Sophon-inference:
修复bugs,增强稳定性
增加了帧率获取接口
支持int32模型输入类型
增加多进程Demo
文档修改
nntc:
增加了bmneto,支持onnx模型编译
bmnett支持tensorflow 2.x, saved_model模型格式
增加了conv3d、deconv3d等3d算子及相关优化,支持slowfast和3dunet等3d模型
增加了strideslice、transpose、depth2space等优化,提升yolov5相关模型性能
优化timestep过程,减少编译时间
相关工具支持的python版本升级,支持python3.7
修复若干bugs
cali:
文档修改
图优化速度优化,c++实现代替python实现
reverse层量化支持,lstm,batchmatmul层量化设置为浮点推理
bugfix
ufw:
增加了支持onnx模型转umodel
支持保留用户定义的输入输出名
若干bug修复
bsp:
更新SM750驱动;增加XFS支持
增加了pcie mixed mode支持;修正刷机包单个gz文件太大会越界的问题;升级开源sdk和newos打包脚本;增加lte modem service;修正ethtool工具版本问题
2.5.0
bmlib&driver:
Windows SDK开发支持
目前驱动可以在debug模式下安装,支持单芯卡和三芯卡
支持bm-smi基本功能
支持VPU/JPU编解码基本功能
支持bm_opencv, ffmpeg库加速
支持网络推理运行时库
增加了vpu、jpu利用率的统计和显示
在申威服务器上做了适配
更改了Bm-smi的显示界面
增加了执行Bm-smi recovery操作时的保护,防止系统崩溃
bmcv:
增加2个算子: bmcv_image_axpy, bmcv_image_lapacian
vpp padding 支持带有 stride。
bmvid / middleware:
支持SC5模式下A53 opencv运行模式,支持warp, affine, sobel, erode, dialet, morphologyEx, line, calcOpticalFlowPyrLK, OpticalFlowFarneback, calcHist, boxFitler, bilateralFilter, gaussianBlur,
修正rtsp mjpeg解码的问题
修正硬件编码下flv的打包问题
ffmpeg支持lame mp3解码
ffmpeg支持hls协议
ffmpeg命令行增加zero_copy选项,支持硬件解码的yuv输出
扩展平台支持到龙芯,申威,以及windows系统
增加vpu/jpu usage信息到proc输出
bug修正
Sophon-inference:
bug fix
文档修正
nntc:
增加用户自定义tpu layer插件,支持bmkernel编写某个layer并插入到网络
增加用户自定义编译优化插件及demo
nms最大支持65536个检测框
bmnetu支持gru layer
bmcpu/bmruntime适配windows/mips64/sw64
int8模型动态编译支持conv3d/pooling3d
性能优化及bug修复
文档更新
cali:
合并leaky relu层等优化
增加使用最大值量化选项
文档更新
bug fix
ufw:
优化内存使用,有效减少50%内存占用
layer增加Tag功能,可以对Layer的功能进行归类和特性描述
增加了对CFG语义分析
修正部分bug
bsp:
ATF增加a53 soft reboot功能;u-boot修复重启进入命令行后mcu watchdog timeout问题;linux增加efuse secure key保护等功能,修正tpll切换方式
kernel关闭errutam 843419,修正cpufreq bug
支持kernel5.4和ubuntu20.04系统;兼容新旧两种命名的its node;为sm5增加了一种dts(不兼容!);debian增加ethtool、gate的设备发现工具等;修改lpddr4参数;改善u-boot usb兼容性;kernel4.9增加usb acm支持,删除重复的realtek config
增加SE5 lite支持;修正memory layout工具;修正SM5 mini低配版配置
更新SM750驱动;增加XFS支持
2.4.0
bmlib&driver:
增加板卡管理接口
增加mips工具链和功能支持,达到给客户试用水平
增加Windows SDK bmlib及部分测试用例cmakelist文件和驱动、Bmlib平台适配代码(尚未达到release水平)
修复A53使能后无法重复装驱动的问题
重构Linux下面proc下面文件的组织方式
重构bm-smi代码和界面组织,支持以卡为单位显示
增加了vpp模块hang后软复位功能
增加了bmlib中获取memory heap信息的接口
修复INTC iic2中断被mask导致的smbus读取温度失败问题
bmcv:
新增功能:put_text、draw_lines;
PCIe模式下支持使能A53,使用片上CPU完成部分操作。
bmvid / middleware:
增加mips64平台支持
去除bmvid 自有API中的assert判断,返回错误值
统一所有的jpeg解码输出到planar格式
增加dumpBMImage对float32 int8等格式的支持
更新osip库,提高gb28181的兼容性和稳定性
调整底层调度,多路编解码时调度更加均匀
soc下去除8路限制,支持到24路视频编码
修补问题,增强稳定性
Sophon-inference:
Python功能添加base64支持
增强Bmcv::imwrite功能,支持更多格式。
BMImage处理方面的一些优化
nntc:
【BMNETC】Power算子bugfix,支持L2Normalize算子
【BMNETC】修复了rpnproposal算子计算出错的bug
【BMNETP】pytorch版本升级到1.8.1
【BMNETP】支持BERT模型
【BMNETT】增加arcsin、arccos、arcsinh、arccosh、arctanh、cosh、sinh、tan等三角函数的支持
【BMNETU】新layer支持:ShapeRange
【BMNETU】python接口支持int8 umodel的拆分功能
【BMNETU】增强了daily test
【BMNETU】Tile layer支持两个输入
【BMNETU】修复了包含reorg fix8b layer的动态网络bug
【BMCOMPILER】重构graph filter优化器
【BMCOMPILER】重构layer group优化器成pass结构
【BMCOMPILER】优化了active SILU fix8b的性能,yolov5性能有提升
【BMCOMPILER】增加了对active SIGN layer的支持
【BMCOMPILER】增加了Timestep合并优化和修复了3IC优化问题,yolov3等检测网络性能有些提升
【BMCOMPILER】TOPK算子使用TPU加速,包含TOPK的网络有性能提升
【BMLANG】stride类计算性能优化和支持coeff输入
【BMLANG】condition_select计算支持数据广播
【BMLANG】支持Shape Tensor控制输入,并更新bmlang demo rgb2yuv支持crop区域可动态变化
【BMLANG】多个使用相同mask的masked_select算子的性能优化
【BMLANG】nms算子有数倍以上的性能提升
【BMRUNTIME】去除了exit直接退出,使用c++ exception返回错误值
【BMRUNTIME】对龙芯mips的支持
【BMRUNTIME】包含FC层的网络也支持分辨率动态可变
【BMPROFILE】修复了layer和GDMA显示错乱的问题
【BMKERNEL】支持mips64
【BMKERNEL】增加BMRT + BMKERNEL跑yolov3 backbone + 后处理的demo
【BACKEND 1684】增加高性能分组topk的bmkernel demo
【BACKEND 1684】修复了包含reduce的动态网络跑很多轮后会hang住的问题
【BACKEND 1684】支持任意多算子的动态网络
【BACKEND 1684】修复3d max pooling的一个计算错误bug
【BACKEND 1684】优化了4N/1N转换的性能,一些网络性能会有提升
cali:
修复 batchnorm leakyrelu等layer的bug
增加is_shape_layer标记更好地支持shape相关操作,增加shapeRange、expandDims、shapeAssign以及shapeCast等layer支持int32数据
整理forward_with_float功能,增加稳定性
增加用ADMM方式统计阈值
完善auto_calib功能
ufw:
默认支持包含控制流的网络
支持任意动态shape的网络,以及包含运行时推断shape的网络
部分bugfix
部分layer功能增强
bsp:
增加recovery mode下ramdisk size;增加usb刷机功能
增加SM5 min宽温版支持;修正宽温版调频温度点和CPU调频机制;调整pcie rc初始化代码以支持没有refclk0的板卡;spacc secure key功能;u-boot和BL2瘦身;升级flash update工具;增大recovery分区以支持OTA;bind pcie中断到cpu7;增加fl2000重新枚举功能
ATF增加a53 soft reboot功能
2.3.2
bmlib&driver:
增加了对mips适配
增加了一些mips体系结构的库
修复若干SC5P的bug
增加了一些支持Windows编译的cmake代码和脚本
增加了对SM5-W的支持
bmcv:
修复几个corner case的bug;
新增接口:absdiff、threshold、fft、max_min、calc-hist;
整理后端代码存放位置,只有个别api放于itcm,以后新增的均放置于ddr。
bmvid:
支持龙芯平台编译
middleware:
扩展opencv支持到512路视频
ffmpeg osip库更新
修正bug
支持龙芯平台编译
Sophon-inference:
修正了文档中URL地址连不上的问题。
nntc:
【BMLANG】增加deconv的perchannel int8计算demo。
【BMLANG】Select/Condition select支持int8。
【BMLANG】优化了NMS的性能
【BMNETC】增加CONV3D和POOLING3D的支持。
【BMNETT】增加用户自定义输入数据和数据类型。
【BMCOMPILER】修复了一些bug来支持客户模型。
【BMCOMPILER】优化了跑INT8网络的等待时间。
【BMNETP】增加BMM、LAYER NORM、EINSUM算子的支持。
【BMNETU】完善的单元测试。
【BMPROFILE】增加CSV的导出功能。
【BMPROFILE】增加解析Global memory操作的功能。
【BMRUNTIME】适配了龙芯。
【BACKEND_1684】优化了GDMA GEN CMD的时间开销。
【BACKEND_1684】修复了后端bug。
【BACKEND_1684】优化后的分组topk和全库topk的demo。
cali:
修复batchnorm layer的bug
增加auto_calib功能
ufw:
修复若干bug
增强了analysis工具的稳定性
支持了conv per-channel计算
移除了部分ufw blob data的python API
bsp:
ATF里的DDR数据拆出一个单独的bin文件
换用MCU watchdog
SM5宽温板卡支持
BSP SDK开源相关
2.3.1
bmlib&driver:
增加设备管理接口并跟新文档
增加MIPS体系结构工程
fix 编译中的warn信息
增加对SC5P的适配
重构了驱动中更新芯片和板级温度、tpu利用率的机制
bmcv:
新增sobel、gaussian-blur、add-weighted、dct、yuv2hsv、batch-topk算子;
优化并扩展nms,使其最大可支持65535个box的输入,并提高其性能;
扩展matmul,支持输出float32的类型;
bugfix
middleware:
sobel接口的8UC1→8UC1,BORDER_DEFAULT case采用硬件加速实现
gaussion_blur接口的8UC1输入采用硬件加速实现
增加对hikvision smart选项的支持
优化opencv在yuv下的font字体渲染的效果
更新multimedia文档
提高稳定性,修补bug
Sophon-inference:
问题修正,稳定性提高
nntc:
【bmcompiler】对包含C axis CONCAT算子的网络有性能优化。
【bmnetu】【bmnetp】增加3D Conv/Pooling的支持。
【bmnetu】增加对多输入网络的支持。
【bmnett】增加check ops的功能。
【bmnetp】增加对Pytorch GRU/LSTM模型的支持。
【bmnetp】升级到支持pytorch 1.7版本。
【bmlang】Deconv算子支持16bit输出。
【bmlang】增加性能优化后的分组topk业务程序demo。
【bmlang】GEMM支持INT8输入/FP32输出,且支持perchannel的scale。
【bmlang】增加deconv做perchannel量化计算的demo。
【backend_1684】nms算子在大于1024 box时比2.3.0有性能提升。
【backend_1684】1N、4N数据转换的性能提升。
【all】BUGs修复,提高稳定性。
ufw:
float计算支持了包含控制流的网络
UFW python blob 兼容numpy数据类型
UFW支持了部分空集输入和计算
bsp:
预装perfetto工具
预装板上编译kernel module需要的deb包
VPP driver代码优化
使能PMU
最后更新于