• 沒有找到結果。

Census Template Mini-Census Template

Census Template Mini-Census Template

圖48. Mini-Census

接著,以 Weight Generation 以量子化指數曼哈頓色彩距離產生 Weight,此 Weight 用於加權相鄰像素 matching cost 的匯聚。Weight 在影 像上的分布如圖 49 所示,Proximity 表示距中心越近的像素點比重越高,

Color Similarity 表示與中心顏色越接近得像素點比重越高。此兩項相乘成 為 matching cot 匯聚的比重。

Proximity Color Similarity

圖49. Cost Aggregation

為減少運算量,我們分析 Weight 有無 Proximity 在視差圖準確度上的 變化。圖 50 顯示對於有 Proximity 的視差圖而言,在 Mask size 大於 39 時較無改變。並且,對於 Mask size 在 39 以內,無 Proximity 與有 Proximity 的視差準確度是相同的。因此我們可以省略 Proximity 於 Weight 中,並設 定 Mask size 於 39 以內,即可達到相同於包含 Proximity 的效果。

Mask Size Mask Size With Proximity Without Proximity

圖50. 比較有 Proximity 與無 Proximity 在視差圖準確度的差別 為提升 Weight Generation 的運算速度,我們在匯聚 matching cost 時 分 離 原 始 運 算 成 垂 直 匯 聚 (Vertical Cost Aggregation) 與 水 平 匯 聚 (Horizontal Cost Aggregation)兩步驟。利用以上所提之方法,可減少原始 演算法運算量的 64.2%。另外,我們化簡 Color Similarity 的 exp 運算為 2 冪次的查表運算,各種運算化簡的方式如圖 51 所示。最後我們選擇圖中 x64, Quantize P1-bit 的簡化方式。

0

x64, Quantized, P 2-bits

0

x 64, Quantize, P 1-bits

圖51. 比較 Color Similarity 的運算化簡

總和以上改變演算法以利於硬體設計的技巧,在個人電腦運算時間與 視差圖準確度如下表所示。對於準確度約降低 1.2%以內,而運算時間大 幅降低至原始運算的 1.9%。如此的硬體導向演算法將有利於進一步的硬 體架構設計。

Error Rate % Method

TSUKUBA VENUS TEDDY CONES

Exec.

Time(sec)

Original 1.85 1.19 13.3 9.79 95.65

+MC+2P 3.47 0.91 14.3 11.2 4.75

+MC+2P+ Manhattan 3.08 0.59 14 10.1 3.12

+MC+2P+ Manhattan +Truc(64,2) 3.03 0.61 14 10.1 2.52 +MC+2P+ Manhattan+Truc(64,1) 3.06 0.66 13.9 10.1 1.84

在硬體架構設計方面,我們針對 Mini-Census 及 Cost Aggregation 的 運算分析各種資料對記憶體存取的方法。在 Mini-Census 有視差優先再利 用(Disparity-Order Reuse)以及像素優先再利用(Pixel-Order Reuse)之方 法。在 Cost Aggregation 有列局部再利用(Partial Column Reuse)以及行垂直 延伸再利用(Vertically Expanded Row Reuse)。考慮運算量、記憶體用量以 及 頻 寬 用 量 , 最 後 採用 Disparity-Order Reuse 、 Pixel-Order Reuse 與

Vertically Expanded Row Reuse 方法於硬體實現。硬體架構如圖 52 所示。

此架構所有運算皆以握手機制(Handshaking)讀寫資料,以達到各運算處理 時間的彈性。

BUS

圖52. 視差資料估測架構圖

本硬體架構在聯華電子 90 奈米製程可工作於 100MHz 且 bus 寬度為 32-bit,可處理 CIF(352x288)影像大小且 64 視差範圍(disparity range)達到 42 fps。下表為合成的記憶體用量與組合電路的邏輯閘數量。總內部記憶 體用量約 21k 位元組,總組合電路用量約 562k 邏輯閘。如此硬體效能已 達到子計畫一的目標。

Performance under UMC 90nm Technology

Clock rate 100 MHz

External bus width 32 bit

Image size 352x288

Disparity level 64

Logic 562k equivalent gate counts Internal memory 21k bytes

FPS 42

對於演算法之效能,以下比較本演算法與其他文獻視差圖的錯誤率以 及運算速度。我們的演算法可達高準確度且即時運算速度。

Ground truth Proposed TrellisDP

HBP RealTimeBP RealTimeGPU

ReliabilityDP SepLaplacian RealDP

ReliableGPU CBiased

圖53. 視差圖比較

Design Category MDE/s TSU VEN TED CON SAW MAP

Proposed Hardware 272.5 2.80 0.64 13.7 10.1 2.11 3.21

TrellisDP [39] Hardware 294 2.63 3.44 - - 1.88 0.91

HBP [80] Hardware 73.7 2.85 1.92 - - 6.25 6.45

EffectAggr [40] CPU 18.9 2.96 3.53 10.7 4.92 -

-RealDP [41] CPU 209 2.85 6.42 - - 6.25 6.45

Cbiased [42] CPU+GPU 605 4.77 10.2 - - 0.82 0.65

SepLaplacian [43] CPU+GPU 679 13.0 - - - -

-RealTimeBP [44] CPU+GPU 19.6 3.40 1.90 13.2 11.6 -

-RealTimeGPU [45] CPU+GPU 19.6 4.22 2.98 14.4 13.7 -

-ReliableGPU [46] CPU+GPU - 1.36 1.09 - - 2.35 0.55

GradientGuided [47] CPU+GPU 117 2.48 3.91 - - 1.63 0.73

針對全域估測演算法,本子計畫分別開發了適於硬體設計 BP 演算法 及 DP 演算法。針對 BP 演算法,本子計畫提出低記憶體用量的運算元(PE) 架構,其架構如圖 54 所示。另外,本子計畫提出低記憶體用量的資料配 置方法,其方法如圖 55 所示。

min min

圖54. Buffer-free PE 架構

圖55. Spinning message 記憶體配置方法

所提出之硬體架構可適用於現存的各種 BP 演算法,並且達到低記憶 體用量與即時處理的運算速度,其硬體電路效能如下表所示。然而,該硬 體設計的整體成本仍過高,導致無法整合於總計畫之目標平台,故最終整 合平台的演算法並非採用 BP。

Baseline BP

4,608,000 1,212,000 4,608,000 4,915,200

Operating

Frequency (MHz)

285 285 285 285

Number of PE 33 9 32 32

Gate Count (K) 273.9 74.7 265.6 265.6

Size of Memory Cost of

Messages and Data costs (KB)

2,793 465 186 49

FPS 30.01 31.12 29.11 27.29

本子計畫亦針對 DP 演算法改善其高記憶體用量的問題,使得 global approach 演算法可實現於總計畫的 FPGA 整合平台。原始的 DP 演算法包 含兩主要步驟:forward cost accumulation 與 backward path tracing。由於兩 步驟的運算流程,必須存取一整列的資料,導致記憶體用量過高。因此,

本子計畫提出單步驟的演算法,將原始的兩步驟合併,直接在第一步驟中 就決定 path,其流程圖如圖 56 所示。。由於大幅降低記憶體用量,DP 演 算法可順利地實現於總計畫 FPGA 的整合平台。圖 57 及圖 58 分別為本子 計畫所實現的 DP 演算法之 ASIC 與 FPGA 的硬體效能。

Wrapper BUS/IP Interface

SAD Initial Cost Building

Dynamic Programming DP Cost Building Depth Assignment Occlusion detection

Hole Filling

圖56. DP 演算法

Performance under UMC 90nm Technology

Clock rate 100 MHz

External bus width 32 bit Image size 352x288 Disparity level 32

Logic 91k equivalent gate counts

FPS 46

圖57. DP 演算法之 ASIC 硬體設計效能

Item Sub1 System

Number of Slice Registers 4644 out of 44800 10% 21139 out of 44800 47%

Number of Slice LUTs 15703 out of 44800 35% 31194 out of 44800 69%

Number of LUT Flip Flop pairs used

15830 41322

Number of IOs 795 232

Number of BUFG/BUFGCTRLs 1 out of 32 3% 10 out of 32 31%

Frequency(max) 154MHZ 100MHZ

圖58. DP 演算法之 FPGA 硬體設計效能

子項目二:可重組之 3D 繪圖加速器設計(Reconfigurable 3D Graphics Accelerator)

本子項目二之研究重點為可重組之三維繪圖加速器設計如圖 59 所 示。因此我們分別在前端幾何轉換子系統中的打光運算單元以及後端繪圖 子系統中的三角形設定引擎與深度壓縮機制提出可重組式的演算法與對 應的硬體架構,根據不同的輸入規格重組不同的硬體架構,達到系統的最 佳效能。同時也已各別完成前後兩級的基本的硬體電路設計與 FPGA 模擬 驗證平台,另外也成功將前後兩級整合在一起,並已在 FPGA Xilinx ML507 平台模擬驗證完成。

圖59. 重組式 3D 繪圖系統架構圖

本子計畫我們將各子區塊的實作情形以及研究成果分項列出,主要分 為幾何轉換子系統與著色子系統的設計與硬體實現等,最後總結整個子計 畫的實作成果。

幾何轉換子系統(Geometry Engine)

在幾何轉換子系統部分,主要是打光器的演算法與硬體實現,以下分 別深入探討其實際設計的理念。

Approximating Phong Shading

本子計畫在打光器設計上主要有三項突破點以及實現結果,分別是:

三角型切割之演算法與其硬體設計與實現、頂點變數共用機制、邊函數修 正機制。以下分別討論之。

Reconfigur

三角形切割演算法:圖 60 和圖 61 分別是兩種主流打光演算法及 Subdivision Based Shading 的結果,由這三張圖得比較後可知 Subdivision Based Shading 與 Phong Shading 的繪圖結果相當接近,而兩者間運算量的 比較可參考圖 62,圖中黑色的部分表示須作打光運算的像素,由圖可知 在打光效果相近的情形下,切割式著色演算法大約可以省下近 50%的打光 運算。

圖60. 左)Gouraud shading 的茶壺打光 右)Phong shading 的茶壺打光

圖61. Subdivision Based Shading 的茶壺打光

圖62. Phong shading 和 Subdivision Based Shading 運算次數比較 切割器是切割式著色法的核心,而切割器不適合在軟體中實作的其中 一個原因是切割時會產生新的頂點,若切割的動作是在處理器中完成,則 切割出來的新頂點需要花費額外的頻寬將它們送到繪圖硬體上;反之若切

割的動作是在繪圖硬體上完成則新頂點就不需要在匯流排上傳送,如此就 可省下許多的頻寬而使繪圖效能提升。傳統的切割演算法使用遞迴的方 式,但遞迴演算法不適合在硬體上實作,主要的原因在於堆疊的支援與切 割出頂點的管理。由於遞迴式演算法會在共用邊上切割出相同的頂點,管 理這些頂點所需的資料結構在硬體上實現相當複雜。但如果不使用管理頂 點的機制而直接將產生的任何頂點直接送到打光單元中,就會對相同的頂 點重複打光。打光的運算是相當耗時的,所以我們希望盡量避免重複的打 光動作,為了兼顧硬體複雜度與效能我們使用了漸增式(Incremental)切割 的方式來實作切割器。圖 63 說明漸進式切割的概念,要將一個三角形切 成四個小三角形需要計算出在各邊上中點的頂點,而 dy 與 dx 可以事先計 算,透過這種逐一加上一個向量的方式就可以循序地產生所有的頂點。由 於頂點是依序被產生因此可以直接送到打光單元進行打光而不需要擔心 重覆頂點的問題,因此也不需要額外的頂點管理機制。漸增式切割可以很 容易的進行任意數量的切割運算,如圖 64 所示,只要計算出需要的 dx 與 dy 向量並透過漸增的方式即可產生所有需要的頂點。

圖63. 漸增式切割演算法

圖64. 任意數量的漸增式切割

頂點變數共用機制:而經由切割器切割後產生的許多小三角形無疑的 會對效能造成衝擊,頂點數量增加意味著需要更多的幾何轉換,三角形的 數量增加也代表三角形準備的運算和後端著色子系統所有的效能負擔的 增加,因此前後端如何互相配合才能不影響系統效能也成為我們的研究重

點。在後端我們透過了係數共用的機制便可以減少一半以上的三角形準備 運算,如圖 65 所示,共用的係數一旦被計算出來便可以提供給所有切割 出來的三角形使用而不需要重新計算這些係數。Table.3 整理了變數共用 機制前後的運算量比較,可以看出使用這套方法確實能有效的降低運算複 雜度進而減少切割式渲染演算法對系統效能的影響。

圖65. 係數共用機制圖

Table.3. 變數共用機制前後運算量之比較表

Conventional subdivision algorithm

Proposed subdivision algorithm

Complexity reduction in percent

Number of the lighting operations 24 15 37.5%

Number of the 4x4 matrix multiplications for perspective

transformation

24 3 87.5%

Number of the clipping/culling

test operations 16 1 93.75%

Number of the 3x3 matrix multiplications for setup operation for rasterization

80 27 66.25%

Rasterization anomalies Sometimes occur Completely eliminated

邊函數修正機制:第二個問題來自於切割過程中產生的誤差,如圖 66 所示,原本在共用邊上的頂點應該要在相同的位置上,但是切割時的 誤差使得最後的位置產生落差,因而造成像素化異常的現象,如圖 66 之 上所示,我們在畫面上可以看到物體上因為像素化異常而產生破洞。為了 處理這個問題,我們也提出以原本三角型的頂點取代部分切割後的頂點的 方法,成功的解決了這個問題,如圖 67 之下所示所有的破洞已經完全消 失。

(a) Before subdivision (b) After subdivision

(c) Rasterization result (a) (d) Rasterization result (b)

圖66. 破洞圖解說明

圖66. 破洞圖解說明

相關文件