關(guān) 閉

新聞中心

EEPW首頁 > 工控自動(dòng)化 > 業(yè)界動(dòng)態(tài) > 將機(jī)器視覺提速20倍!瑞薩DRP是怎么做到的?

將機(jī)器視覺提速20倍!瑞薩DRP是怎么做到的?

作者:瑞薩電子中國 MPU產(chǎn)品部 趙豐 時(shí)間:2021-09-03 來源:電子產(chǎn)品世界 收藏

工業(yè)生產(chǎn)要實(shí)現(xiàn)自動(dòng)化,必然離不開的幫忙。

本文引用地址:http://m.butianyuan.cn/article/202109/427997.htm

RZ/A2M集成了瑞薩特有的(動(dòng)態(tài)可重新配置處理器)技術(shù),擁有超高性能的圖形圖像處理能力。在擁有硬件級(jí)別運(yùn)算能力的同時(shí),也能夠從軟件層面對(duì)運(yùn)算邏輯進(jìn)行實(shí)時(shí)修改,保證了靈活性的同時(shí)也擁有不俗的圖像處理能力。本文中,我們將重點(diǎn)介紹RZ/A2M在工業(yè)自動(dòng)化領(lǐng)域應(yīng)用的優(yōu)勢(shì),包括更高的圖像處理能力以及超低的功耗。

1631169198414176.png

視頻中的機(jī)械臂之所以能夠如此靈活的識(shí)別并抓取目標(biāo)物體,是因?yàn)橛蠷Z/A2M獨(dú)有的模塊對(duì)的圖像處理過程進(jìn)行加速。外接的顯示器上可以看到,整個(gè)圖像處理流程(包括bayer轉(zhuǎn)RGB、陰影校正&白平衡、RGB轉(zhuǎn)二值化圖像、尋找輪廓、圖像降噪、Bayer轉(zhuǎn)灰階送顯示等)只用了不到3ms,最終達(dá)到VGA(640x480)分辨率下60fps的優(yōu)良性能。

image.png

什么是DRP?

DRP全稱是Dynamically Reconfigurable Processer,即動(dòng)態(tài)可重配置處理器。是瑞薩獨(dú)創(chuàng)的體系結(jié)構(gòu),能夠動(dòng)態(tài)的調(diào)整硬件運(yùn)算單元邏輯電路,實(shí)現(xiàn)各式各樣運(yùn)算功能。

DRP有6個(gè)獨(dú)立的單元稱為“Tile”,它們可以加載多個(gè)配置數(shù)據(jù)(即算法庫)并且并行的執(zhí)行,這些算法庫存放在系統(tǒng)內(nèi)存中,在需要的時(shí)候由CPU下發(fā)指令將其加載到各個(gè)Tile中。

任何時(shí)候都可以修改各個(gè)Tile中的算法庫,并且在修改過程中不會(huì)影響其它Tile的運(yùn)行。

DRP采用動(dòng)態(tài)加載的方法可以在極小的硬件資源上實(shí)現(xiàn)應(yīng)用對(duì)不同圖像處理算法高速處理的需求。

image.png

DRP憑什么這么優(yōu)秀?

DRP是一個(gè)硬件資源,所有的運(yùn)算邏輯都在硬件層面實(shí)現(xiàn),每個(gè)Tile都是一個(gè)獨(dú)立的運(yùn)算單元,Tile擁有的硬件資源是一定的,所以當(dāng)有算法庫用到的硬件資源較多的時(shí)候,就需要兩個(gè)甚至更多的Tile來協(xié)同配合,以下是DRP所擁有的硬件資源。

Tile No.

Tile0

Tile1

Tile2

Tile3

Tile4

Tile5

PE(Processer Element)

48

48

48

48

48

48

MUL16(16bit Multiplier)

3

3

3

3

3

3

MUL32(32bit Multiplier)

1

1

1

1

1

1

DIV32(32bit Divider)

1

-

-

1

-

-

CNT(Loop Counter)

1

1

1

1

1

1

Hmem(Large Memory, 4Kb)

1

1

1

1

1

1

Vmem(Small Memory, 512B)

1

1

1

1

1

1

DRP在運(yùn)行的過程中,會(huì)自動(dòng)的根據(jù)算法庫的復(fù)雜程度,靈活的對(duì)硬件資源進(jìn)行一些整合,比如在一個(gè)Tile內(nèi),將兩個(gè)16bit的乘法器合并一個(gè)32bit的乘法器使用;或者將一個(gè)16bit的乘法器與一個(gè)計(jì)數(shù)器組合使用等。進(jìn)一步擴(kuò)大了DRP的運(yùn)算能力。

硬件的運(yùn)算能力我們都非常清楚,比如目前應(yīng)用非常廣泛的FPGA的算力就和CPU完全不在一個(gè)量級(jí),然而FPGA的缺陷也很明顯,就是運(yùn)算規(guī)模直接和門電路數(shù)量掛鉤,需要實(shí)現(xiàn)復(fù)雜的算法就必須用更多的門數(shù),而且一旦算法要求的門數(shù)超出了項(xiàng)目初期的FPGA選型,則不得不更換更大規(guī)模的FPGA,非常的不方便。

這個(gè)時(shí)候,DRP的靈活性就體現(xiàn)出來了,它不僅可以在庫與庫之間靈活切換,在同一個(gè)庫的內(nèi)部,也能在不同的時(shí)鐘周期內(nèi),動(dòng)態(tài)調(diào)整運(yùn)算電路之間的邏輯,來實(shí)現(xiàn)各種各樣的運(yùn)算方式。通過這種分時(shí)復(fù)用的方式,最大限度的提升了運(yùn)算性能,給小體積發(fā)揮大能力提供了無限可能。

1630637345438913.png

動(dòng)態(tài)可重配置的性能可以在1個(gè)時(shí)鐘周期內(nèi)內(nèi)修改運(yùn)算電路的組合方式,動(dòng)態(tài)加載可以在1ms內(nèi)重新裝載整個(gè)新的算法庫。

DRP甚至可以通過多個(gè)Tile運(yùn)行同一個(gè)算法庫來提高處理速度。比如將一張圖片等分為6份,交給6個(gè)Tile進(jìn)行圖像處理,性能直接在原有的基礎(chǔ)上提升6倍!

1630637364749664.png

一般來說,性能提升往往會(huì)伴隨著功耗的增加。但是用DRP來提升圖像處理能力是一種另辟蹊徑的優(yōu)化方式,而且這種方式的能耗要遠(yuǎn)遠(yuǎn)低于CPU的能耗。

如何使用DRP?

前邊介紹了諸多DRP的優(yōu)勢(shì),大家可能對(duì)于DRP的使用方法有諸多猜測(cè),可能會(huì)擔(dān)心難以上手。但是!不用擔(dān)心!瑞薩電子為大家提供了完整的服務(wù),目前我們開發(fā)了大約50個(gè)算法庫供大家使用,大部分算法庫與opencv庫的功能和接口相似,非常方便即可在一個(gè)普通的工程中使用DRP。

1630637403251464.png

圖為cv庫和DRP庫的切換

下面我們以Bayer轉(zhuǎn)RGB的庫為例,看看在使用DRP的時(shí)候需要做哪些事情。

首先是函數(shù)接口,需要提供的參數(shù)包括輸入地址、輸出地址、圖像寬高以及是否使用tinning(在轉(zhuǎn)換過程中可以同時(shí)對(duì)圖像尺寸進(jìn)行壓縮)。

image.png

在函數(shù)內(nèi)部,需要先將DRP的庫load到DRP硬件去,g_drp_lib_bayer_binning2rgb這個(gè)數(shù)組中存放的就是編譯好的二進(jìn)制格式DRP庫。我們使用6個(gè)Tile并行處理一張圖片的方式,因此給6個(gè)Tile都load此庫。

image.png

Load之后,依次給每個(gè)Tile傳入計(jì)算參數(shù)并啟動(dòng)它。由于這里是同一張圖裁成6份,所以每個(gè)Tile只負(fù)責(zé)一張圖的1/6,因此在這里需要分別計(jì)算每個(gè)Tile的起始位置和輸出位置。計(jì)算完畢后下發(fā)Start命令讓這個(gè)Tile開始運(yùn)行。

image.png

最后等待6個(gè)Tile全部運(yùn)算完即可。

image.png

下面我們來具體看看,機(jī)械臂是如何借助DRP的強(qiáng)大功能,實(shí)現(xiàn)了如此快速的物體檢測(cè)與跟蹤的。

在機(jī)械臂上電初始化以后,暫時(shí)沒有找到目標(biāo),所以工作在物體檢測(cè)模式。這個(gè)模式的工作流程如下:

1630637478361462.png

可以看到camera采集到一幀圖像后,

①  由DRP做了一次Bayer到RGB的轉(zhuǎn)換,這個(gè)轉(zhuǎn)換同時(shí)將圖像的寬高壓縮到了原來的1/4,可以在不丟失準(zhǔn)確率的前提下加快后續(xù)流程的速度;這個(gè)庫只占用1個(gè)tile,所以可以將圖片拆分成6份同時(shí)進(jìn)行,耗時(shí)0.4ms。

②  給DRP中l(wèi)oad陰影校正&白平衡的庫,對(duì)上一步的結(jié)果做矯正,這個(gè)庫由于使用的資源較多,占用兩個(gè)tile,所以需要把圖像拆分成3份操作,耗時(shí)0.8ms。

③  由RGB圖轉(zhuǎn)換為HSV圖并提取其中V的值。方便后續(xù)的移動(dòng)物體檢測(cè)以及輪廓提取,耗時(shí)0.2ms

④  使用“加權(quán)移動(dòng)平均法”提取運(yùn)動(dòng)的物體,此算法耗時(shí)0.6ms。

⑤  根據(jù)上一步得出的物體信息,尋找輪廓和中心點(diǎn)。(由CPU完成)

⑥  如果找到目標(biāo),則轉(zhuǎn)入物體跟蹤的流程,否則重復(fù)這個(gè)過程。

⑦  其它一些顯示相關(guān)的處理流程。

假如上述流程中找到了目標(biāo),那么就會(huì)進(jìn)入物體跟蹤的流程,物體跟蹤模式的工作流程如下

1630637498125369.png

①  可以看到前兩步處理方式都是一樣的,Bayer轉(zhuǎn)RGB + 陰影校正&白平衡共消耗1.2ms。

②  由于這個(gè)模式中已經(jīng)確定畫面中存在物體,所以直接對(duì)圖像進(jìn)行二值化處理,調(diào)用DRP中RGB轉(zhuǎn)Binary的庫進(jìn)行轉(zhuǎn)換操作,耗時(shí)0.8ms。

③  由CPU尋找輪廓并計(jì)算中心點(diǎn)坐標(biāo)和角度。 CPU分別計(jì)算坐標(biāo)、角度與畫面中心的偏差值,并根據(jù)此值調(diào)整各個(gè)電機(jī)的控制量,耗時(shí)0.7ms。

④  由于前序?qū)D像尺寸做了壓縮,所以上一步計(jì)算的坐標(biāo)并不是實(shí)際坐標(biāo),還需要進(jìn)行一次標(biāo)換算。

⑤  用于顯示的Bayer轉(zhuǎn)灰階圖的庫,以及其他顯示相關(guān)的流程,耗時(shí)0.3ms。

目前我們可以提供的約50個(gè)庫都能實(shí)現(xiàn)2~80倍不等的性能提升,這些性能提升是相對(duì)于RZ/A2M 528MHz Cortex A9 CPU做的對(duì)比。DRP庫對(duì)性能的提升普遍在10~20倍之間,10倍以下的庫提升效果不明顯的原因是這些算法本身過于簡單,優(yōu)化空間太小。以下列舉了部分現(xiàn)有的庫以及運(yùn)算能力對(duì)比供大家參考。

1630637522376512.png

當(dāng)然,如果客戶有想要的庫是我們暫時(shí)沒有的,也可以給瑞薩電子提需求,我們會(huì)綜合考慮后安排到后續(xù)開發(fā)計(jì)劃中。

或者,如果客戶有一些自有的比較機(jī)密的算法想移植到DRP中使用,我們也可以提供DRP庫開發(fā)的相關(guān)培訓(xùn),手把手教你開發(fā)DRP庫。

1631172792130630.png



關(guān)鍵詞: 機(jī)器視覺 DRP

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉