7. 系统结构

感谢您阅读教程的系统结构介绍部分。

首先znzpi AI相机是基于瑞芯微的RV1106SOC,其基于ARM A7处理器。

并且其具有128MB(G2)/256MB(G3)的DDR3 DRAM

除此之外,其还具有一个0.5TOPS的AI硬件支持的推理,硬件支持的图形加速器以及视频编解码器。

7.1. 内存结构

znzpi AI相机程序运行在LINUX系统中,其内存有部分由LINUX系统使用,部分由各个外设的驱动使用,其余的由视频处理和视觉处理算法使用

由于视频处理和视觉算法需要大片的连续内存。这些内存会由一个专门的软件系统管理。

而对于micropython部分使用的内存,则由LINUX系统分配,并在其初始化的时候指定其使用的大小。包括其使用的堆和栈。

在视觉处理中使用的内存,比如在程序中调用 sensor.snapshot() 会通过前面提到的专门的软件系统,来分配一个连续的内存,来保存图像数据。通常在内部会以YUV420的格式保存。这些并不会占用micropython的堆或者栈。

虽然这些保存图像的内存也会有不同的大小,但在处理视觉的算法中,这些分配和释放通常都是可以预期的。并不会造成碎片问题。

最后,视觉处理算法,会返回处理结果,通常使用的内存都很小,这些对象是通过micropython的堆来分配的。这些分配的内存,在可用内存耗尽,或视觉处理结束的时候,可以被micropython垃圾收集机制回收处理,

通过上述工作,您可以方便的在内存中处理大的图像,以及使用 sensor.alloc_extra_fb() 来分配额外的内存给视觉处理算法。通常您并不需要显式的调用这个函数,znzpi AI相机会处理这些内存申请。

因而大多数情况下,您可用专注于视觉任务的逻辑,而无需关心这些底层的处理。