差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
digi:arm-embedded:arm-embedded-som:ml_ai [2021/02/23 14:34] robindigi:arm-embedded:arm-embedded-som:ml_ai [2021/02/23 14:44] (当前版本) robin
行 6: 行 6:
 在实际应用中,往往是OpenCV+TensorFlow或OpenCV+Pytorch来实现结合做图像识别等应用。比如,OpenCV 创始人 Gary Bradski 等人近期就发表了一篇 Kornia 的综述。Kornia 是一个基于 PyTorch 的可微分的计算机视觉库。嵌入式人工智能和机器学习一般都和视觉应用有关。在Digi的ConnectCore系列中,主要是在DEY上实现OpenCV的相关开发和应用。 在实际应用中,往往是OpenCV+TensorFlow或OpenCV+Pytorch来实现结合做图像识别等应用。比如,OpenCV 创始人 Gary Bradski 等人近期就发表了一篇 Kornia 的综述。Kornia 是一个基于 PyTorch 的可微分的计算机视觉库。嵌入式人工智能和机器学习一般都和视觉应用有关。在Digi的ConnectCore系列中,主要是在DEY上实现OpenCV的相关开发和应用。
  
 +**典型应用:**
 +  * 仪器仪表  
 +  * 医疗仪器 (CT或图片病理病样识别诊断)
 +  * 交通设施 (障碍识别,行人检测,违规探测)
 +  * 工业应用 (机器流程识别,探伤,螺丝检测……)
 +  * 人脸识别的商业应用
 +  * 等等
 ===OpenCV进阶理解=== ===OpenCV进阶理解===
 机器学习框架一般是基于OpenCL标准在异构平台上运行程序的框架,所谓异构平台,一般情况我们指GPU和CPU两种处理器混合的平台。由于GPU本身特殊的硬件架构,GPU被设计成拥有非常强大的并行运算能力,这正是神经网络机器学习所需要的。通过openCL可以利用GPU强大的并行能力代替CPU进行运算,OpenCL由在OpenCL设备上运行的kernel函数语言和控制平台的API组成。 机器学习框架一般是基于OpenCL标准在异构平台上运行程序的框架,所谓异构平台,一般情况我们指GPU和CPU两种处理器混合的平台。由于GPU本身特殊的硬件架构,GPU被设计成拥有非常强大的并行运算能力,这正是神经网络机器学习所需要的。通过openCL可以利用GPU强大的并行能力代替CPU进行运算,OpenCL由在OpenCL设备上运行的kernel函数语言和控制平台的API组成。
行 14: 行 21:
 OpenCV的OCL模块中,在GPU上进行运算之前我们必须把内存转成GPU可以直接调用的显存。而在GPU上的运算结束后,我们还需要将在GPU显存上的数据转移到CPU可用的内存上。这两个操作在oclMat中定义为两个成员函数,分别为oclMat::download和oclMat::upload。由于这两个数据传输操作受PCI总线宽带的限制,在实际应用中应尽量减少数据传输,把尽可能多的运算在gpu device上计算完成后,再把数据传回cpu host,以达到最大的数据吞吐量。 OpenCV的OCL模块中,在GPU上进行运算之前我们必须把内存转成GPU可以直接调用的显存。而在GPU上的运算结束后,我们还需要将在GPU显存上的数据转移到CPU可用的内存上。这两个操作在oclMat中定义为两个成员函数,分别为oclMat::download和oclMat::upload。由于这两个数据传输操作受PCI总线宽带的限制,在实际应用中应尽量减少数据传输,把尽可能多的运算在gpu device上计算完成后,再把数据传回cpu host,以达到最大的数据吞吐量。
  
 +===在DEY上集成OpenCV===
 +
 +本文未完待续,相关资料待试验和整理,方法框架如下:
 +NXP官方相关资料:https://blog.nxp.com/tech-insights/nxp-eiq-software-for-iot-industrial-and-automotive-applications?elq_mid=7996&elq_cid=1771945
 +相关内部资料:
 +[[https://confluence.digi.com/download/attachments/201045885/L4.19.35_1.1.0_LINUX_DOCS.zip?version=1&modificationDate=1588589287171&api=v2|L4.19.35_1.1.0_LINUX_DOCS.zip]] (Newer version will arrive)
 +   Maybe not all the features are supported but at least the basics one will be supported as the libraries will have access to the GPU. You might want to have a look to:
 +   Page 319: “i.MX_Reference_Manual.pdf”
 +   Page 61 & 2 (Supported platforms): “i.MX_Linux_User's_Guide.pdf”
 +For OpenCV: [[https://confluence.digi.com/pages/viewpage.action?pageId=193757330|How to use OpenCL & OpenCV in DEY]]
 +NXP Forum question: https://community.nxp.com/thread/476211
 +Application note from NXP: AN12224.pdf
 +For the future; There’s a layer to be added: meta-machinelearning -> http://layers.openembedded.org/layerindex/branch/master/layer/meta-machinelearning/