關 閉

新聞中心

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

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

作者:瑞薩電子中國 MPU產品部 趙豐 時間:2021-09-03 來源:電子產品世界 收藏

工業(yè)生產要實現自動化,必然離不開的幫忙。

本文引用地址:http://2s4d.com/article/202109/427997.htm

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

1631169198414176.png

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

image.png

什么是DRP?

DRP全稱是Dynamically Reconfigurable Processer,即動態(tài)可重配置處理器。是瑞薩獨創(chuàng)的體系結構,能夠動態(tài)的調整硬件運算單元邏輯電路,實現各式各樣運算功能。

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

任何時候都可以修改各個Tile中的算法庫,并且在修改過程中不會影響其它Tile的運行。

DRP采用動態(tài)加載的方法可以在極小的硬件資源上實現應用對不同圖像處理算法高速處理的需求。

image.png

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

DRP是一個硬件資源,所有的運算邏輯都在硬件層面實現,每個Tile都是一個獨立的運算單元,Tile擁有的硬件資源是一定的,所以當有算法庫用到的硬件資源較多的時候,就需要兩個甚至更多的Tile來協同配合,以下是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在運行的過程中,會自動的根據算法庫的復雜程度,靈活的對硬件資源進行一些整合,比如在一個Tile內,將兩個16bit的乘法器合并一個32bit的乘法器使用;或者將一個16bit的乘法器與一個計數器組合使用等。進一步擴大了DRP的運算能力。

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

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

1630637345438913.png

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

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

1630637364749664.png

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

如何使用DRP?

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

1630637403251464.png

圖為cv庫和DRP庫的切換

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

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

image.png

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

image.png

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

image.png

最后等待6個Tile全部運算完即可。

image.png

下面我們來具體看看,機械臂是如何借助DRP的強大功能,實現了如此快速的物體檢測與跟蹤的。

在機械臂上電初始化以后,暫時沒有找到目標,所以工作在物體檢測模式。這個模式的工作流程如下:

1630637478361462.png

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

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

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

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

④  使用“加權移動平均法”提取運動的物體,此算法耗時0.6ms。

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

⑥  如果找到目標,則轉入物體跟蹤的流程,否則重復這個過程。

⑦  其它一些顯示相關的處理流程。

假如上述流程中找到了目標,那么就會進入物體跟蹤的流程,物體跟蹤模式的工作流程如下

1630637498125369.png

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

②  由于這個模式中已經確定畫面中存在物體,所以直接對圖像進行二值化處理,調用DRP中RGB轉Binary的庫進行轉換操作,耗時0.8ms。

③  由CPU尋找輪廓并計算中心點坐標和角度。 CPU分別計算坐標、角度與畫面中心的偏差值,并根據此值調整各個電機的控制量,耗時0.7ms。

④  由于前序對圖像尺寸做了壓縮,所以上一步計算的坐標并不是實際坐標,還需要進行一次標換算。

⑤  用于顯示的Bayer轉灰階圖的庫,以及其他顯示相關的流程,耗時0.3ms。

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

1630637522376512.png

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

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

1631172792130630.png



關鍵詞: 機器視覺 DRP

評論


相關推薦

技術專區(qū)

關閉