960路高清视频解码,480路智能解析
576路高清视频解码,288路智能解析
BM1684X,416路高清视频智能解析
X86主控,288路1080p高清视频智能解析
BM1684X,32路高清视频智能解析
BM1684,16路高清视频智能解析
BM1684,192路高清视频智能解析
BM1684,8路高清视频智能解析
CV186AH,8路高清视频智能解析
BM1688,16路高清视频智能解析
72路全高清硬解码与智能分析
96路全高清硬解码,48路智能分析
32路高清硬解码,16路智能分析
32路高清硬解码与智能分析
32路高清硬解码与智能分析
32路高清硬解码,16路智能分析
32路高清硬解码,16路智能分析
深度学习开发者产品组合
视频实时压缩转码上云和监测异常事件,增强道路运行安全事件的发现和处置能力
为交通拥堵、行车安全、车辆违法和道路污染治理问题赋能
以国产化算力支撑海量视频的结构化解析,服务警务应用实战
以数据为中心打造“智能、协同、高效、创新”的步态识别大数据分析系统
为用户快速构建融合人、车、通行等多维数据的业务能力
算能运用自研算力硬件设备SG6/SE5/SE6,搭载SOPHON.TEAM视频分析算法,助力工业安全生产智能化
为粮仓、棉仓等大型仓储园区的办公、质检、磅房、库区等区域提供了违规行为和异常事件的安全监控方案
算能联合SOPHON.TEAM生态伙伴打造烟草行业安全生产深度学习管控解决方案
算能联合SOPHON.TEAM生态伙伴,以自研国产化深度学习算力产品为硬件底座,构建安全生产管理体系,提高白酒企业安全生产管理水平
算能联合SOPHON.TEAM生态伙伴构建智算中心解决方案,建设统一管理和调度的云边协同的智算中心
算能联合SOPHON.TEAM生态共同构建了一套以自研国产化深度学习算力产品为硬件底座,以AutoML零代码自动化深度学习训练平台为基础,实现快速、高效的深度学习工程化落地
输入格式:大小为 1 X 1 的RGB通道图片张量
输出格式:大小为 1 X 1 的BGR通道图片向量
该算子host端和device端API通信结构体为
typedef struct { unsigned int size; unsigned long long output_addr; unsigned long long input_addr; } __attribute__((packed)) param_t;
从host端的代码分析,size
为图片数量,每张图片的原始通道顺序为RGB,in/output_addr
为Global Memory的数据存放地址,图片数据连续存放,同一个图片的RGB三个通道也是连续存放的。
可以参考host/rgb2bgr.cpp
中的rgb2bgr_reference
函数实现:
static inline void rgb2bgr_reference(float *output, const float *input, const param_t ¶m) { for(unsigned int i = 0; i < param.size; i++) { // 分别对每张图片处理 output[i*3+2] = input[i*3]; // 源图像的R通道保存到目标图像的第三个通道 output[i*3+1] = input[i*3+1];// 源图像的G通道保存到目标图像的第二个通道 output[i*3] = input[i*3+2]; // 源图像的B通道保存到目标图像的第一个通道 } }
这里视输入数据大小为 [1, 1, 3, 1]
以1张图片为例:
不考虑一切特殊情况,使用一个NPU,配合GDMA操作就可以完成该算子的实现,参赛选手只需要将R/G/B
三个通道的数据、从input_addr
搬运到Local Memory中,再从Local Memory搬运到output_addr
即可。
这里视输入数据大小为 [2, 1, 3, 1]
扩展到2张图片,可以有以下思路
参赛选手当然可以按照一张图片的处理逻辑进行处理,但是这样效率较低,如果一次性处理两张图片,那么效率可能就会更高一点。如图所示,若参赛选手精心地设计了GDMA的stride
和shape
参数,那么就可以做到将两张图片 [2, 1, 3, 1] 视为按一定规则排放的一张图片 [1, 1, 3, 2],通过自定义stride
和shape
就可以一次完成两张图片的搬运。但该方法也使得GDMA数据读取效率变低,具体的性能如何参赛选手可以进行尝试和探索。
以上两种方法都可以用于任意图片数量的数据处理。
不难发现前两种思路都基于数据为 [N, 1, 3, 1]的数据格式,而根据文档可以发现BM1684的数据搬运,会按照维度 C 切分并搬运到不同NPU上,如此设计shape
浪费了大量NPU空间和性能,那么基于 [1, N, 3, 1]的数据格式,就可以充分利用64个NPU进行数据搬运,在此就不做更详细的描述,若参赛选手完成了思路1的代码,则应该很容易修改为思路3的代码。
在完成基础的算子实现后,参赛选手可以从以下几点考虑改进RGB2BGR算子的实现: