目录

Multi-Platform Image Preprocess (HWC to CHW)

本项目专注于图像算法预处理中核心的 HWC 格式转 CHW 格式(数据重排与分色平面化),并针对嵌入式异构平台进行了极致的硬件底层加速优化。

目前项目已分别在 ARM 处理器DSP 核心 上实现了高效的工程级落地。


一、 项目背景

在深度学习(如目标检测 YOLO、图像分割等)的输入端,前级解码或摄像头捕获的数据通常为 HWC 格式(像素点交错排列:R1G1B1 R2G2B2...)。为了满足神经网络矩阵计算的连续性,必须将其转换为 CHW 格式(通道分量独立平面:R1R2... G1G2... B1B2...)。

传统的纯 C 语言循环由于存在大跨步的内存写入,会导致严重的 Cache Miss 和总线带宽浪费。本项目通过深入各硬件平台的底层架构,实现了大幅度的性能飞跃。


二、 目录结构说明

项目的核心代码与测试用例根据运行的硬件平台进行了模块化拆分:

.
├── LICENSE
├── README.md               <-- (当前) 项目总入口,整体架构概述
├── arm/
│   ├── README.md           <-- ARM 端专属说明(包含 X16 平台编译、NEON 优化解析及测试数据)
│   └── test_hwc2chw.c      <-- ARM 架构下的测试与验证源码(纯 C vs 手写 NEON)
└── dsp/
    └── preprocess/         <-- DSP 端专属目录(包含 DSP 架构下的核心实现与优化说明)

三、 各平台实现概述与导航

本项目在不同硬件架构下采用了截然不同的优化路线(ARM 侧重于极速计算,DSP 侧重于硬件搬运)。如果你需要了解具体的编译方法、运行步骤及调优细节,请点击下方链接进入对应的子目录查看:

  1. 🚀 ARM 平台优化 (./arm) 技术路线:利用 ARM64 架构的 NEON (Advanced SIMD) 高级单指令多数据流技术。

核心加速原理:通过寄存器级别的结构化加载指令(vld3q_u8)在 CPU 内部自动完成 R/G/B 分离,变随机内存跨步写为高效率的连续内存写入。

物理表现:在 X16 板卡上实测,相比于普通优化等级的纯 C 循环,性能取得了 2.68x ~ 3.12x 的飞跃。

  1. ⚡ DSP 平台优化 (./dsp/preprocess) 技术路线:利用 DSP 专用的 DMA(直接内存访问)硬件控制器的多维传输(2D-DMA / Stride 传输) 机制。

核心加速原理:将格式重排任务完全卸载(Offload)给 DMA 硬件。通过配置源地址跨步读取(跳过通道)与目的地址连续写入,实现纯硬件级别的异步数据搬运,从而实现 DSP 核心的 CPU 使用率接近 0%。

详细说明:关于 DSP 端的 DMA 通道配置、内存对齐要求以及具体测试表现,请查阅 DSP 子目录下的 README。


作者 {{xunyingya}}

关于

实现图片的通道转换

76.0 KB
邀请码