將機(jī)器視覺提速20倍!瑞薩DRP是怎么做到的?
工業(yè)生產(chǎn)要實(shí)現(xiàn)自動化,必然離不開機(jī)器視覺的幫忙。
本文引用地址:http://butianyuan.cn/article/202109/427997.htmRZ/A2M集成了瑞薩特有的DRP(動態(tài)可重新配置處理器)技術(shù),擁有超高性能的圖形圖像處理能力。DRP在擁有硬件級別運(yùn)算能力的同時,也能夠從軟件層面對運(yùn)算邏輯進(jìn)行實(shí)時修改,保證了靈活性的同時也擁有不俗的圖像處理能力。本文中,我們將重點(diǎn)介紹RZ/A2M在工業(yè)自動化領(lǐng)域應(yīng)用的優(yōu)勢,包括更高的圖像處理能力以及超低的功耗。
視頻中的機(jī)械臂之所以能夠如此靈活的識別并抓取目標(biāo)物體,是因為有RZ/A2M獨(dú)有的DRP模塊對機(jī)器視覺的圖像處理過程進(jìn)行加速。外接的顯示器上可以看到,整個圖像處理流程(包括bayer轉(zhuǎn)RGB、陰影校正&白平衡、RGB轉(zhuǎn)二值化圖像、尋找輪廓、圖像降噪、Bayer轉(zhuǎn)灰階送顯示等)只用了不到3ms,最終達(dá)到VGA(640x480)分辨率下60fps的優(yōu)良性能。
什么是DRP?
DRP全稱是Dynamically Reconfigurable Processer,即動態(tài)可重配置處理器。是瑞薩獨(dú)創(chuàng)的體系結(jié)構(gòu),能夠動態(tài)的調(diào)整硬件運(yùn)算單元的邏輯電路,實(shí)現(xiàn)各式各樣的運(yùn)算功能。
DRP有6個獨(dú)立的單元稱為“Tile”,它們可以加載多個配置數(shù)據(jù)(即算法庫)并且并行的執(zhí)行,這些算法庫存放在系統(tǒng)內(nèi)存中,在需要的時候由CPU下發(fā)指令將其加載到各個Tile中。
任何時候都可以修改各個Tile中的算法庫,并且在修改過程中不會影響其它Tile的運(yùn)行。
DRP采用動態(tài)加載的方法可以在極小的硬件資源上實(shí)現(xiàn)應(yīng)用對不同圖像處理算法高速處理的需求。
DRP憑什么這么優(yōu)秀?
DRP是一個硬件資源,所有的運(yùn)算邏輯都在硬件層面實(shí)現(xiàn),每個Tile都是一個獨(dú)立的運(yùn)算單元,Tile擁有的硬件資源是一定的,所以當(dāng)有算法庫用到的硬件資源較多的時候,就需要兩個甚至更多的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)行的過程中,會自動的根據(jù)算法庫的復(fù)雜程度,靈活的對硬件資源進(jìn)行一些整合,比如在一個Tile內(nèi),將兩個16bit的乘法器合并成一個32bit的乘法器使用;或者將一個16bit的乘法器與一個計數(shù)器組合使用等。進(jìn)一步擴(kuò)大了DRP的運(yùn)算能力。
硬件的運(yùn)算能力我們都非常清楚,比如目前應(yīng)用非常廣泛的FPGA的算力就和CPU完全不在一個量級,然而FPGA的缺陷也很明顯,就是運(yùn)算規(guī)模直接和門電路數(shù)量掛鉤,需要實(shí)現(xiàn)復(fù)雜的算法就必須用更多的門數(shù),而且一旦算法要求的門數(shù)超出了項目初期的FPGA選型,則不得不更換更大規(guī)模的FPGA,非常的不方便。
這個時候,DRP的靈活性就體現(xiàn)出來了,它不僅可以在庫與庫之間靈活切換,在同一個庫的內(nèi)部,也能在不同的時鐘周期內(nèi),動態(tài)調(diào)整運(yùn)算電路之間的邏輯,來實(shí)現(xiàn)各種各樣的運(yùn)算方式。通過這種分時復(fù)用的方式,最大限度的提升了運(yùn)算性能,給小體積發(fā)揮大能力提供了無限可能。
動態(tài)可重配置的性能可以在1個時鐘周期內(nèi)內(nèi)修改運(yùn)算電路的組合方式,動態(tài)加載可以在1ms內(nèi)重新裝載整個新的算法庫。
DRP甚至可以通過多個Tile運(yùn)行同一個算法庫來提高處理速度。比如將一張圖片等分為6份,交給6個Tile進(jìn)行圖像處理,性能直接在原有的基礎(chǔ)上提升6倍!
一般來說,性能提升往往會伴隨著功耗的增加。但是用DRP來提升圖像處理能力是一種另辟蹊徑的優(yōu)化方式,而且這種方式的能耗要遠(yuǎn)遠(yuǎn)低于CPU的能耗。
如何使用DRP?
前邊介紹了諸多DRP的優(yōu)勢,大家可能對于DRP的使用方法有諸多猜測,可能會擔(dān)心難以上手。但是!不用擔(dān)心!瑞薩電子為大家提供了完整的服務(wù),目前我們開發(fā)了大約50個算法庫供大家使用,大部分算法庫與opencv庫的功能和接口相似,非常方便即可在一個普通的工程中使用DRP。
圖為cv庫和DRP庫的切換
下面我們以Bayer轉(zhuǎn)RGB的庫為例,看看在使用DRP的時候需要做哪些事情。
首先是函數(shù)接口,需要提供的參數(shù)包括輸入地址、輸出地址、圖像寬高以及是否使用tinning(在轉(zhuǎn)換過程中可以同時對圖像尺寸進(jìn)行壓縮)。
在函數(shù)內(nèi)部,需要先將DRP的庫load到DRP硬件中去,g_drp_lib_bayer_binning2rgb這個數(shù)組中存放的就是編譯好的二進(jìn)制格式DRP庫。我們使用6個Tile并行處理一張圖片的方式,因此給6個Tile都load此庫。
Load之后,依次給每個Tile傳入計算參數(shù)并啟動它。由于這里是同一張圖裁成6份,所以每個Tile只負(fù)責(zé)一張圖的1/6,因此在這里需要分別計算每個Tile的起始位置和輸出位置。計算完畢后下發(fā)Start命令讓這個Tile開始運(yùn)行。
最后等待6個Tile全部運(yùn)算完畢即可。
下面我們來具體看看,機(jī)械臂是如何借助DRP的強(qiáng)大功能,實(shí)現(xiàn)了如此快速的物體檢測與跟蹤的。
在機(jī)械臂上電初始化以后,暫時沒有找到目標(biāo),所以工作在物體檢測的模式。這個模式的工作流程如下:
可以看到camera采集到一幀圖像后,
① 由DRP做了一次Bayer到RGB的轉(zhuǎn)換,這個轉(zhuǎn)換同時將圖像的寬高壓縮到了原來的1/4,可以在不丟失準(zhǔn)確率的前提下加快后續(xù)流程的速度;這個庫只占用1個tile,所以可以將圖片拆分成6份同時進(jìn)行,耗時0.4ms。
② 給DRP中l(wèi)oad陰影校正&白平衡的庫,對上一步的結(jié)果做矯正,這個庫由于使用的資源較多,占用兩個tile,所以需要把圖像拆分成3份操作,耗時0.8ms。
③ 由RGB圖轉(zhuǎn)換為HSV圖并提取其中V的值。方便后續(xù)的移動物體檢測以及輪廓提取,耗時0.2ms。
④ 使用“加權(quán)移動平均法”提取運(yùn)動的物體,此算法耗時0.6ms。
⑤ 根據(jù)上一步得出的物體信息,尋找輪廓和中心點(diǎn)。(由CPU完成)
⑥ 如果找到目標(biāo),則轉(zhuǎn)入物體跟蹤的流程,否則重復(fù)這個過程。
⑦ 其它一些顯示相關(guān)的處理流程。
假如上述流程中找到了目標(biāo),那么就會進(jìn)入物體跟蹤的流程,物體跟蹤模式的工作流程如下
① 可以看到前兩步處理方式都是一樣的,Bayer轉(zhuǎn)RGB + 陰影校正&白平衡共消耗1.2ms。
② 由于這個模式中已經(jīng)確定畫面中存在物體,所以直接對圖像進(jìn)行二值化處理,調(diào)用DRP中RGB轉(zhuǎn)Binary的庫進(jìn)行轉(zhuǎn)換操作,耗時0.8ms。
③ 由CPU尋找輪廓并計算中心點(diǎn)坐標(biāo)和角度。 CPU分別計算坐標(biāo)、角度與畫面中心的偏差值,并根據(jù)此值調(diào)整各個電機(jī)的控制量,耗時0.7ms。
④ 由于前序?qū)D像尺寸做了壓縮,所以上一步計算的坐標(biāo)并不是實(shí)際坐標(biāo),還需要進(jìn)行一次坐標(biāo)換算。
⑤ 用于顯示的Bayer轉(zhuǎn)灰階圖的庫,以及其他顯示相關(guān)的流程,耗時0.3ms。
目前我們可以提供的約50個庫都能實(shí)現(xiàn)2~80倍不等的性能提升,這些性能提升是相對于RZ/A2M 528MHz Cortex A9 CPU做的對比。DRP庫對性能的提升普遍在10~20倍之間,10倍以下的庫提升效果不明顯的原因是這些算法本身過于簡單,優(yōu)化空間太小。以下列舉了部分現(xiàn)有的庫以及運(yùn)算能力對比供大家參考。
當(dāng)然,如果客戶有想要的庫是我們暫時沒有的,也可以給瑞薩電子提需求,我們會綜合考慮后安排到后續(xù)開發(fā)計劃中。
或者,如果客戶有一些自有的比較機(jī)密的算法想移植到DRP中使用,我們也可以提供DRP庫開發(fā)的相關(guān)培訓(xùn),手把手教你開發(fā)DRP庫。
評論