扫一扫,分享给好友
接上回,这次说一说第三阶段的进展,一直在想如何将cnn融合进高云以后的视频案例里面,比如:下图 上面图中文件之间的关系应该是这样的:
根据这些文件名,我们可以清晰地勾勒出整个数据流的路径。这是一个典型的FPGA图像处理系统架构:
输入端 (Camera Input) -> ISP (图像信号处理) -> DDR3 缓存 (Frame Buffer) -> 显示输出 (Display Output)
下面是每个阶段涉及的模块和具体工作:
物理层: 数据首先从摄像头传感器通过高速差分接口(如MIPI或LVDS)进入FPGA。
协议层: 接收到的串行数据需要被解码成并行的像素数据。
输出: 这个阶段的最终输出是原始的、未经处理的Bayer RAW格式的像素数据流。
原始的Bayer数据是不能直接观看的,必须经过一系列复杂的ISP算法处理,才能变成我们肉眼看到的彩色图像。
Bayer到RGB转换 (Demosaicing):
色彩校正 (Color Correction):
图像几何变换:
输出: 经过ISP流水线处理后,我们得到了可以直接显示的RGB格式的图像数据流。
视频数据流的速度和显示刷新的速度往往不匹配,或者后续处理需要访问整帧图像,因此需要一个大容量的DDR3内存作为帧缓冲。
这是一个非常关键的架构决策问题。根据处理任务的不同,CNN可以介入在不同的阶段,但有一个最佳的介入点**。**
位置: 将CNN处理模块插入到 ISP流水线 和 axi4_ctrl.v的写通道 之间。
数据流: ISP -> (清晰的RGB图像) -> CNN模块 -> (处理后的图像或特征) -> AXI控制器 -> DDR3
为什么这是最佳方案?
处理高质量图像: ISP已经完成了去噪、白平衡、色彩校正等基础工作,输出的RGB图像质量最高,最适合作为CNN的输入,能获得最高的识别/分析准确率。
流式处理(Streaming): 这种“在线(On-the-fly)”的处理方式可以实现极低的延迟。ISP每输出一个像素或一个像素块,CNN模块就可以立即开始处理,无需等待整帧图像被写入DDR。这对于实时应用(如自动驾驶、工业检测)至关重要。
节省DDR带宽:
易于实现ROI: ISP中的裁剪模块可以先提取出感兴趣区域(ROI),然后只将ROI部分送入CNN,减少了CNN的计算量。
位置: CNN模块从DDR3中读取图像,处理后再写回DDR3,或者直接送给显示控制器。
数据流: ISP -> AXI -> DDR3 -> AXI -> CNN模块 -> DDR3/Display
缺点:
发布
FPGA高云fpga
【开源FPGA硬件】硬件黑客集结:开源FPGA开发板测评活动全网火热招募中......
JEDSD204B标准verilog实现-协议演进
NVMe高速传输之摆脱XDMA设计16:TLP优化
RDMA over RoCE V2设计1:通用,稳定及高性能!
【高云GW5AT-LV60 开发套件试用体验】三、LED灯控制实验
【高云GW5AT-LV60 开发套件试用体验】基于开发板进行深度学习实践,并尽量实现皮肤病理图片的识别,第四阶段
【RK3568+PG2L50H开发板实验例程】FPGA部分 | 光纤通信测试实验例程
【RK3568+PG2L50H开发板实验例程】FPGA部分 | DDR3 读写实验例程
【RK3568+PG2L50H开发板实验例程】FPGA部分 | ROM、RAM、FIFO 的使用
【RK3568+PG2L50H开发板实验例程】FPGA部分 | Pango 的时钟资源——锁相环
电子发烧友网
电子发烧友论坛