CEVA-DSP算法移植--1

一、项目需求

简单说下项目需求,首先基于CNN(卷积神经网络)框架的人脸识别和人脸追踪的算法能在Linux环境下单独地编译,能实现功能;其次把这两个算法移植到CEVA-DSP上;然后对算法进行优化,其中涉及代码矢量化。最后是编译算法,将其加到bin文件中去。

二、准备工作

       EMCV即Embedded Computer Vision Library,是一个可在TI DM64x系列DSP上运行的计算机视觉库。其提供了跟OpenCV完全一致的函数接口(包括IplImage, CvMat,CvSeq等基本数据结构),通过EMCV,可以轻松的将OpenCV算法移植到DSP。
       EMCV并不是一个官方库,其是由Shiqi Yu老师在2008年启动的开源项目,目前已经支持IplImage, CvMat,CvSeq等基本OpenCV数据结构,也可使用cvCreateImage等创建和释放图像,以及contour检测等。但是里面绝大多数函数只有接口却没有实现,所以这里值得注意的,EMCV并不能实现OpenCV的多数功能,不过我们可以利用EMCV里的数据结构。
       此外,需要提一下的是,实现将OpenCV里的代码完全移植到DSP是可以的,目前已经有人这么做了!
       本节主要参考这个文档:Shiqi Yu老师的EMCV:可在DSP上运行的OpenCV:http://www.opencv.org.cn/forum.php?mod=viewthread&tid=3569&extra=page%3D1

详细的资料可以看这个链接:https://blog.csdn.net/tostq/article/details/51246746
例程下载:https://github.com/tostq/EasyMulticoreDSP/tree/master/2.emcv

       EMCV库实际上是余老师根据opencv源码移植成c语言版本,是个大牛。EMCV相关资料从2013年以后就基本没有了,可能是跟DM64x系列被淘汰了有关。EMCV库可以在Ti c6000系列DSP上用,但没有实际操作过。目前发现是能在DM64x系列能用。我尝试着把EMCV库用在CEVA-tool-box上,始终有一个error,编译通不过。经过一番挣扎,基本上已放弃把EMCV库移植到CEVA-dsp上的想法。

三、CEVA-ADK

       经过很多次尝试后,去CEVA官网去逛了一圈,发现一个信息。真是柳暗花明又一村。接下来介绍CEVA-ADK官方提供的开发工具包。

       Application Developer Kit用于CEVA-XM智能视觉DSP和NeuPro AI处理器的SLAM,视觉库,RTOS和驱动程序。

概观

       CEVA-XM和NeuPro的应用程序开发工具包(ADK)简化了高级视觉和AI应用程序所需的软件开发和集成工作。它使整个应用程序能够在更熟悉的CPU环境中运行,同时在更节能的DSP上自动转换和优化代码。

       ADK帮助软件工程师开发计算机视觉应用程序,使他们能够优化电源效率和内存管理,处理成像和视觉算法的复杂性,并简化涉及框架,磁贴等的系统处理任务。

优点

       CEVA ADK通过直接从CPU中提取基于CEVA-XM和NeuPro的平台上的计算机视觉使用来缓解挑战。程序员可以从使用ADK大大简化和缩短整个软件开发周期,并提供显着的性能,内存带宽和功耗节省中受益。

CEVA-DSP算法移植--1_第1张图片

主要特点

CEVA-SLAM SDK:同步本地化和映射(SLAM)软件开发套件通过以下方式加速SLAM开发:
                                从CPU启用详细界面,将重型SLAM构建块卸载到CEVA-XM和NeuPro处理器
                                这些构建模块利用DSP效率支持定点和浮点数学运算,从而延长器件的电池寿命。
                                SDK构建模块包括图像处理功能(包括特征检测,特征描述符,特征匹配),线性代数(包括矩阵操作,线                                  性方程求解),快速稀疏方程求解束调整等。
CEVA-CV:基于OpenCV的视觉处理功能标准库,完全针对CEVA-XM和NeuPro系列进行了优化。它可以为目标应用程序使用预                     优化的内核,从而加速开发并优化性能。
CEVA-VX:旨在处理所有系统资源需求,包括数据传输,DMA事务和内核执行,从而抽象出系统架构并自动化帧处理。CEVA-                       VX支持内核隧道,链接多个功能,最小化内存带宽和降低系统功耗。
实时操作系统(RTOS),调度程序:一个DSP任务管理和调度软件模块,用于处理任务优先级和任务切换。
CEVA-Link驱动程序:通信通道和系统驱动程序,完全抽象CPU-DSP接口,并实现从CPU到DSP的自动任务卸载。

所以只要想办法获得这个ADK就能在CEVA-tool-box软件里调用优化过的opencv函数。完美。

你可能感兴趣的:(CEVA-DSP算法移植,CEVA,DSP)