• 沒有找到結果。

以细胞神經網路為基礎的拍攝影像穩定技術及其類比電路實現

N/A
N/A
Protected

Academic year: 2021

Share "以细胞神經網路為基礎的拍攝影像穩定技術及其類比電路實現"

Copied!
59
0
0

加載中.... (立即查看全文)

全文

(1)

國 立 交 通 大 學

電機與控制工程學系

碩士論文

以细胞神經網路為基礎的拍攝影像穩定技術

及其類比電路實現

CNN-based Image Stabilization Technique

and Its Analog Circuit Design

研究生:姚吉隆

指導教授:林進燈

博士

(2)

以细胞神經網路為基礎的拍攝影像穩定技術

及其類比電路實現

學生:姚吉隆

指導教授:林進燈 博士

國立交通大學電機與控制工程研究所

摘要

近年來,多數的研究已經說明在細胞神經網路(Cellular Neural Networks; CNN) 型態的架構下,能夠提供一個可程式化的方式來處理多數複雜的影像處理 工作。CNN 的架構中包含了可做即時處理的平行類比計算單元,而這些處理單 元是有規則的二維陣列排列,且本身與鄰近的細胞單元為區域性的元件連接。由 於此種特性,使得這種架構很容易在超大型積體電路上實現。因此本論文提出以 CNN 為基礎的影像穩定技術與它的類比電路實現。整篇論文可分成三大主要部 份:(1)影像穩定技術;(2)建立於 CNN 為基礎的影像穩定技術;及(3)以 CNN 為 基礎,實現上述所提到技術的類比電路設計。針對影像穩定技術,其中包含了計 算與補償震動所產生的移動向量的兩大主體,本論文中為了加強即時運算方面的 能力,將此演算法設計成以 CNN 為基礎的架構,可以用平行即時處理的類比式 電路來實現。 本論文採用應用導向的 CNN 類比電路來實現提出的影像穩定技術。而 CNN 的設計電路採多層次 (Multi-layer) 的方式,以 3×3 為基礎的細胞核心,處理陣 列大小是影像的 1/120。同時為了降低電路複雜度,採用電流模式 (Current mirror; 電流鏡) 的設計架構,且延伸成為可正負雙向電流導通,更容易來實現每個神經 細胞的權重比例 (即電流增益),也使得在節點上的多數訊號易於結合。由於 CNN 具有陣列式平行處理和區域性的元件連接特性,因此很適合實現於混合訊號標準 的 CMOS 製程上。 最後,展現所提技術在 MATLAB 和 HSPICE 電路驗證上的模擬結果。這兩

(3)

種模擬結果,都顯示我們提出以 CNN 為基礎的方式,在影像穩定補償上,擁有 快速有效且即時的處理能力。

(4)

CNN-based Image Stabilization Technique

and Its Analog Circuit Design

Student:Chi-Lung Yao

Advisor:Dr. Chin-Teng Lin

Department of Electrical and Control Engineering

National Chiao Tung University

Abstract

Recently, many researches have been proved that a programmable method can perform most of complicated image process tasks under the architecture of Cellular Neural Network (CNN). Real-time and parallel analog computing elements are contained in the architecture of CNN. There is an ideal characteristic that each computing unit is regular two-dimensional array and connects with its neighborhood locally. Because of this characteristic, the architecture of CNN is easy for VLSI implementation. There are three parts in the thesis: (1) image stabilization technique, (2) CNN-based image stabilization technique and (3) its analog circuit design by (2). Image stabilization technique contains two main blocks. One is the computation of the motion vectors caused by vibration and the other is in compensation for the motion vector. In the thesis, in order to enhance the ability of real-time processing, the algorithm is designed to be the CNN-based architecture and with the implementation of parallel and real-time analog circuit.

We aim at the property of the proposed algorithm to design application-driven CNN circuit for the image stabilizer. The CNN circuit is a multi-layer structure and its template is 3¯3. The size of CNN array is 1/120 of an image. Current mirror is

(5)

used to reduce complexity and to extend positive and negative current for weighting of each cell. Current signals are easily combined in the same node as well. Due to parallel processing and local connectivity, CNN is suitable for implementation of standard mixed-signal CNOS process.

Finally, the simulation results of MATLAB and HSPICE show that the proposed CNN-based image stabilization technique has the fast and real-time processing ability in image compensation.

(6)

誌謝

兩年的研究所生涯隨著論文的完成劃上了句點,於此同時,要感謝許多人 的幫忙,使我能夠順利地完成研究所的學業。 首先要感謝的是我的指導教授—林進燈老師。林進燈老師是十分傑出的一 位教授,感謝他提供我一個理想的工作環境以及正確的引導。在老師的照顧與 耐心的指導下,讓我學習到解決問題的方法與求學時應有的態度,使我獲益良 多。 另外要感謝實驗室仁峰和朝暉學長的細心教導,開闊了我的視野,使我增 進了不少積體電路設計和軟體上的專業知識。也感謝實驗室同學世安、愷翔、 國基、志賢和德淵的協助與關心。 最後要感謝我的家人和瑋茹的支持,讓我能夠專心於學業上的研究,撐過 所有難關,謝謝你們!謝謝!

(7)

目錄

中文摘要...ii 英文摘要...iv 誌謝...vi 目錄...vii 圖目錄...ix 第一章 緒論... 1

第二章 Cellular neural network... 3

2.1 基本理論...3

2.2 電路架構...4

第三章 Image Stabilization 演算法... 7

3.1 Image Stabilization的系統架構...7

3.2 移動估測...8

3.2.1 RPM和局部的移動估計(local motion estimation)...8

3.2.2 Irregular condition detection ...9

3.2.3 Irregular移動向量的產生...14

3.3 整體性的移動向量估測(global motion estimation)...15

3.4 移動補償與估算...17

3.5 CNN-based image stabilization...20

3.5.1 Image difference...22 3.5.2 Adaptive threshold...23 3.5.3 找出最小值所在的座標...24 第四章 CNN-based IS 硬體設計 ... 26 4.1 Current-mode CNN電路設計 ...26 4.2 Initialization和template A、B電路設計 ...28 4.2.1 Initialization電路 ...28 4.2.2 Template A 設計...29 4.2.3 Template B設計 ...30 4.2.3 Boundary的考量 ...31 4.3 CNN-based IS電路設計 ...31 4.3.1 Image difference...31 4.3.2 Adaptive threshold...32 4.3.3 累加器...33

4.3.4 Median circuit 和Error function...35

(8)

4.4.1 絕對值...36

4.4.2 電流比較器...37

第五章 模擬結果... 39

第六章 結論和未來展望... 46

(9)

圖目錄

圖 2-1 The dynamic route of state in CNN ... 3

圖 2-2 The output function of CNN. ... 3

圖 2-3 二維的 CNN 結構 ... 4

圖 2-4 以電路形式表示 CNN cell ... 5

圖 3-1 所提出的 image stabilization 的系統架構 ... 7

圖 3-2 估測局部移動向量的影像切割 ... 8

圖 3-3 The block diagram of LMVs and IMV estimation ... 8

圖 3-4 Various correlation curves corresponding to image sequences with different conditions (I) ... 10

圖 3-5 Various correlation curves corresponding to image sequences with different conditions (II) ... 11

圖 3-6 Examples of minimum projections of correlation curve from x and y directions in four regions: (a) regular image sequence and (b) ill-conditioned image sequence ... 12

圖 3-7 Illustration of the proposed inverse triangle method ... 13

圖 3-8 Areas for background detection and evaluation... 16

圖 3-9 Performance comparison of three different CMV generation methods applied to a video sequence with panning and hand shaking. (a) CMV generation method in (3.15). (b) CMV generation method in (3.15) with clipper in (3.18). (c) The proposed method in (3.19)... 19

圖 3-10 Block diagram of the proposed CMV generation method. ... 19

圖 3-11 CNN-based motion estimation... 21

圖 3-12 Inversion template... 22

圖 3-13 First addition template ... 22

圖 3-14 Second addition template... 22

圖 3-15 Threshold template... 24

圖 3-16 Vertical hole detection template... 25

圖 3-17 Horizontal hole detection template ... 25

圖 4-1 CNN basic cell 的架構 ... 27

圖 4-2 在不同的電流增益下,用 Hspice 模擬 cell 的輸出函數。 (a) positive (b) negative slopes... 28

圖 4-3 Initialization 電路圖 ... 28

圖 4-4 Template A 電路圖 ... 29

圖 4-5 Template B 電路圖 ... 30

圖 4-6 用 Hspice 模擬 image difference 之結果 ... 32

圖 4-7 用 Hspice 模擬 threshold 電路之結果... 33

圖 4-8 累加器的架構 ... 33

圖 4-9 current adder ... 35

圖 4-10 switch-current memory cell ... 35

圖 4-11 絕對值電路圖... 36

(10)

圖 4-13 比較器電路圖 ... 37 圖 4-14 用 Hspice 模擬電流比較器之結果 ... 38 圖 5-1 補償向量的值 (a) IS 演算法 (b)CNN-based IS 演算法 ... 40 圖 5-2 原本移動向量和補償後向量比較 (a) IS 演算法 (b)CNN-based IS 演算法 ... 41 圖 5-3 輸出影像比較 (a)原本影像 (b) IS 演算法 (c)CNN-based IS 演算法 ... 42 圖 5-4 IS 演算法 (a)補償向量的值 (b)原本的移動向量和補償後向量... 43 圖 5-5 CNN-based IS 演算法 (a)補償向量的值 (b)原本移動向量和補償後向量 ... 44 圖 5-6 輸出影像比較 (a)原本影像 (b) IS 演算法 (c)CNN-based IS 演算法 ... 45

(11)

第一章

緒論

在使用隨身用小型的相機或是攝影機時,拍得的影像常會被一些不預期有 的震動所影響,這些震動來自於不穩定的手部振動或是平台的移動,這些震動 會影響拍攝影像的視覺品質和之後的影像處理,如移動編碼(motion coding)、 影像壓縮(video compression)或是特徵追蹤(feature tracking)等等。雖然這 些想去除的震動多半是沒有規則的而且和一些整體性的移動(如水平位移攝影 機或是追蹤物體)不能相比,但影像穩定系統的最大的挑戰在於如何補償這些 不期望有的震動但卻不會影響攝影機的位移和物體的移動。

影像穩定系統(image stabilization, IS)主要可以分成兩種方法:前處理(又 分成電子和光學)和後處理的方法。電子式影像處理器的方法是利用偵測移動 的感測器,去偵測攝影機的移動,再補償回原來的影像。光學式影像處理器的 方法是利用稜鏡將反方向的攝影機震動和原本的震動集合在一起來補償影像。 這兩種穩定器都需要機械架構的輔助,而後處理的方法是利用影像處理的技術 產生補償向量而不需要 gyro sensor 或是 fluid prism,用後處理方法的好處有:(1) 沒有限制一定要 on line 或是 off line。(2)用硬體實現的體積較小,因為不需要 額外的機械設備來協助影像補償。這種穩定影像的方法可以用在視訊影像的後 處理,或是在校準的過程中即時的補償,端看應用面的考量。已拍好的影片就 需要用後處理的方法來做處理,拍攝影片的人就需要即時的補償處理。

Cellular neural network(CNN)是可以即時處理訊號的一種 large-scale 的非 線性類比電路,它是由一群細胞(cell)有秩序的放置和連接而成,cell 是由電 容、電壓控制的電流源和一些線性電路元件所組成的,每個 cell 本身只和最靠 近的 cell 們相連接,並且透過可調整的權重(我們稱之為 template)來互相影 響。在應用面,CNN 已被廣泛的使用在影像處理和 texture 邊界偵測上。

(12)

1、影像穩定器若要直接安裝在攝影機上使用,需要能夠做即時(real-time)的 處理。

2、 CNN 有兩個很好的特點:(1)continuous-time:使 CNN 可以做即時的信號 處理。(2)local interconnection:使 CNN 易於用 VLSI 實現。

3、若用類比電路實現會比用 DSP 節省更多的運算時間。 4、設計以應用為導向的 application-specific CNN,並分析影像穩定的演算法, 以期能找出最適當的 CNN-based IS 硬體架構,提高在 CNN 電路上的效能。 本篇論文中,第二章介紹 CNN 的基本架構,說明原理和理論。第三章詳 述影像穩定技術,說明偵測震動的移動向量以及計算補償向量的方法,最後在 將其轉變為 CNN 能實現的方式。第四章則是整套影像穩定系統的電路實現, 介紹每一個處理方塊的執行動作及架構,並說明電路的工作原理。第五章比較 IS 和 CNN-based IS 模擬結果的差異,並做討論和說明。最後,在第六章做結論 和未來展望。

(13)

第二章

Cellular neural network

2.1 基本理論

Chua 和 Yang 所提出的 Cellular Neural/Nonlinear Networks (CNN)[1][2],是 由許多相同的細胞(cell)處理單元,所組成的一個二維陣列,這些 cell 都會和 附近的 cell 互相連接,而狀態變化是根據其他 cell 的輸出乘上權重 的總 和、本身 cell 的輸入乘上權重 、和偏壓值 l k j i A,; , l k j i B,; , I所決定,是連續且有上下界的。

圖 2-1 為 CNN 的dynamic route of state,寫成狀態方程式(state equation)如下:

I t u B t y A t x t x kl l k j i l k j i l k l k j i l k j i + + + − = ( )

( )

( ) ) ( . , ; , , ; , . , ; , , ; ,  (2.1)

( )

(

( )

)

1

(

( )

( )

1 2 y t = f x t = x t + − x t −1

)

(2.2)

Σ

f

1

*A

*B

u

x x

y

I

圖 2-1 The dynamic route of state in CNN.

(2.2)式表示成 STATE 和 OUTPUT 的關係如圖 2-2 所示:

( )

x t

( )

y t

(14)

由 2.1 式可知輸出的迴授效應主要依賴於 的影響,而輸入的控制效應

則是被 所影響。所以又稱 為 feedback operator, 為

control operator,而 A 和 B 我們通稱為 template。

) , ; , (i j k l A ) , ; , (i j k l B A(i, j;k,l) B(i, j;k,l) CNN 在兩方面都有很好的表現:第一是可以做即時(real-time)的類比訊 號處理,第二是由於組成架構具有規律和 local interconnectivity 特性,因此適合 使用超大型積體電路 VLSI 設計技術,易於硬體實現。

2.2 電路架構

CNN電路的基本單元 cell ,包含有線性的電容、線性和非線性的控制電流 源、和獨立電流源。每個 cell 都只和周圍的 cell 有連接,加上 CNN 在連續時 間(continuous-time)運算時有 propagation delay,因此沒有直接連接的兩個 cell 也是會互相影響。圖2-3是二維的 CNN 結構,其中 C(i, j) 表示位於第i列,第j 行的 cell,Nr 在CNN中定義 r-neighborhood 表示如下:

{

}

{

C

k

l

k

i

l

j

}

r

j

i

N

r

(

,

)

=

(

,

)

max

,

(2.3) 其中 r 是正整數,通常將 r = 1 的 neighborhood 稱為 “3 x 3 neighborhood”。 C(i,j) Nr(i,j) 圖 2-3 二維的 CNN 結構

一個 cell 典型的電路架構如圖2-4所示,u、x、和 y 分別表示 input、state 和 output,C(i, j) 的節點電壓 Vxij 表示 cell 的 state,其初始值會小於或等於1,節

(15)

表示cell 的 output,C 是線性的電容,Rx 和 Ry 是線性電阻,I 是獨立的電流源,

Ixy(i, j; k, I) 和 Ixu(i, j; k, r) 是線性的電壓控制電流源(linear voltage-controlled

current sources),具有以下的關係: Ixy(i, j; k, l) = A(i, j; k, I) Vykl ,

Ixu(i, j; k, I) = B(i, j; k, l) Vykl,

for all C( k, l) Nr( ji, ). (2.4) 唯一非線性的元件Iyx ,是片段線性(piecewise- linear)的電壓控制電流源,定

義如下:

(

1 1

)

2 1 − − + = xij xij y yx v v R I (2.5)

而Eij是與時間無關(time-invariant independent)的電壓源。而所有線性和片段

線性的控制電壓或電流源,都可以用運算放大器(operation amplifier)來實現。 j i

E

,

I

C

R

x

I

(

i

,

j

;

k

,

l

)

xu

I

xy

(

i

,

j

;

k

,

l

)

yx

I

y

R

xij

v

v

yij uij

v

input u

state x

output y

圖 2-4 以電路形式表示 CNN cell

利用 KCL 和 KVL,cell 電路的狀態方程式可將(2.1)和(2.2)式表示為(2.6)和(2.7) 式:

(16)

State equation: . 1 ; 1 , ) ( ) , ; , ( ) ( ) , ; , ( ) ( 1 ) ( ) , ( ) , ( ) , ( ) , ( N j M i I t v l k j i B t v l k j i A t v R dt t dv C j i N l k C ukl j i N l k C ykl xij x xij r r ≤ ≤ ≤ ≤ + + + − =

∈ ∈ (2.6) Output equation: . 1 ; 1 |), 1 ) ( | | 1 ) ( (| 2 1 ) ( N j M i t v t v t

vyij xij xij

≤ ≤ ≤ ≤ − − + − = (2.7) Input equation: . 1 ; 1 , ) ( N j M i E t vuij ij ≤ ≤ ≤ ≤ = (2.8) Constraint conditions: , 1 | ) 0 ( |vxij ≤ 1≤iM;1≤ jN. (2.9) , 1 | ) 0 ( |vuij ≤ 1≤iM;1≤ jN. (2.10) Parameter assumptions: ), , ; , ( ) , ; , (i j k l A k l i j A = 1≤i, jM;1≤i,jN. (2.11) 0 , 0 > > Rx C (2.12)

(17)

第三章

Image Stabilization 演算法

3.1 Image Stabilization 的系統架構

Image stabilization(IS)是利用影像處理的方法,消除在拍攝影片時,因 為手振或是支架不穩定而產生的震動。IS 的系統架構如圖 3-1 所示,由移動估

測(motion estimation)和移動補償(motion compensation)兩個處理單元所

組成,移動估測單元包含三個估計向量的部分,分別得到 local motion vectors (LMVs)、ill-condition vector (IMV)和 global motion vector (GMV)。移動補償單 元則負責估計出 compensating motion vector (CMV)和做最後的影像補償。首先 將連續兩張輸入影像(frame(t−1)和 frame( ))先分成四個區域(如圖 3-2), 再依據 representative point matching (RPM)演算法求出 LMVs。移動估測單元同 時也可以針對 irregular 的影像(例如:缺乏特徵或是有大區域的低對比影像), 而產生 ill-conditioned motion vector。接下來會從之前得到的 LMVs、IMV 和其 他預先選擇好的移動向量中,決定出一個來當作 GMV。移動補償單元則會依 據得到的 GMV 而算出 CMV,並提供給影像作為最後補償的向量。下面各節將 會詳細介紹移動估測和移動補償這兩個處理單元。

t

(18)

region1

(X Yr,r) (Xr+p,Yr q+)

: local motion vector( 1, 2, 3, 4)

i v i= 1 v v3 4 v Sub-region region3 region2 region4 2 v 圖 3-2 估測局部移動向量的影像切割

3.2 移動估測

移動估測單元如圖 3-1 所示,會估測出 LMVs、IMV 和 GMV 三種向量, 由圖 3-3 可知,估測得到的 LMV 和 IMV 可以用來決定 GMV。經由 RPM 演算 法計算連續兩張影像的 correlation 而得到 LMVs。再利用 irregular condition 偵 測和所提出產生 IMV 的演算法,經由運算相關的 confidence indices 也可獲得 IMV。

圖 3-3 The block diagram of LMVs and IMV estimation.

3.2.1 RPM 和局部的移動估計(local motion estimation)

首先,影像先分成如圖 3-2 所示的四個區域,每個區域再細分成 30 個子區 域(大小為 5 列×6 行),每個子區域中心的像素稱為代表點(representative point), 其座標為(X Yr, r),代表這個子區域的 pattern,RPM 演算法如下式: 1 ( , ) ( 1, , ) ( , , ) N i r r r R p q I t X Y I t X + Y+ = =

− − r p r q (3.1) 其中N是指一個區域內代表點的數目,I t( −1,X Yr, r)是指代表點在 frame t-1 時

(19)

的 intensity,而 是指將 frame 的代表點位移 後,和 frame 的 代表點相減後的 correlation 值。令 ) , (p q Ri t (p,q) t−1 iMin R 是第 個區域中最小的 correlation 值, 即 i , ( ( , )) = iMin i p q R Min R p q ,而產生最小 correlation 值的位移向量 就是這個區域中 的 LMV,如下式所示: i v ( , ), for ( , ) i i v = p q R p q =RiMin. (3.2)

3.2.2 Irregular condition detection

分析在不同情況下的影像序列的 correlation 曲線,可以發現 correlation 曲 線和移動偵測的可靠度是有關連的。圖 3-4 和 3-5 展示在不同情況下所採樣到 的影像序列做出的 correlation 曲線,圖 3-4(a)是一般的情形,每個區域的極值 位置都很明顯,但圖 3-4(b)中,曲線看起來像一條帶狀的山谷,這表示 correlation 的資料只有一個維度可以信賴(y 座標),而缺乏 x 座標的特徵。圖 3-4(c)是一 個重複出現相同 pattern 的例子,而這造成了曲線中有多個極值,尤其是在第四 個區域裡面,而重複的 pattern 在 RPM 的方法中也被視為一個特徵。圖 3-5(a) 是有移動物體的情況,一隻熊從畫面的左邊移到右邊,造成第二個區域的曲線 中有兩個極值而且RiMin比圖 3-4(a) 一般影像的情形來得大,圖 3-5(b)的影像右 邊有一大塊低解析度的區域,從曲線可以發現非常難找出第三、四個區域有極 值的地方。

(20)

(a) -20 -10 0 10 20 -20 0 200 200 400 600 800 1000 x Region 1 y -20 -10 0 10 20 -20 0 200 200 400 600 800 1000 1200 x Region 2 y -20 -10 0 10 20 -20 0 200 500 1000 1500 2000 2500 x Region 3 y -20 -10 0 10 20 -20 0 200 500 1000 1500 x Region 4 y (b) -50 0 50 -30 -20 -10 0 10 20 30 0 200 400 600 800 1000 1200 x y -50 0 50 -30 -20 -10 0 10 20 30 0 500 1000 1500 x y Region 2 -50 0 50 -30 -20 -10 0 10 20 30 0 500 1000 1500 2000 x y Region 3 -50 0 50 -30 -20 -10 0 10 20 30 0 500 1000 1500 2000 x y Region 4 Region 1 (c) -40 -20 0 20 40 -50 0 50 0 500 1000 1500 2000 y Region 1 x -40 -20 0 20 40 -50 0 500 500 1000 1500 x Region 2 y -40 -20 0 20 40 -50 0 50 0 500 1000 1500 2000 x Region 3 y -40 -20 0 20 40 -50 0 500 200 400 600 800 1000 1200 x Region 4 y

圖 3-4 Various correlation curves corresponding to image sequences with different conditions (I).

(21)

(a) -20 -10 0 10 20 -20 0 20 0 200 400 600 800 1000 1200 x Region 1 y -20 0 20 -20 -10 0 10 20 400 600 800 1000 1200 1400 1600 x Region 2 y -15 -10 -5 0 5 10 15 -20 0 200 200 400 600 800 1000 x Region 3 y -20 0 20 -15 -10 -5 0 5 10 15 0 200 400 600 800 1000 1200 x Region 4 y (b) -20 -10 0 10 20 -20 0 20 0 500 1000 1500 2000 x Region 1 y -20 -10 0 10 20 -20 0 20 0 500 1000 1500 2000 x Region 2 y -20 -10 0 10 20 -20 0 20 15 20 25 30 35 40 45 x Region 3 y -20 -10 0 10 20 -20 0 200 20 40 60 80 100 x Region 4 y

圖 3-5 Various correlation curves corresponding to image sequences with different conditions (II).

雖然 correlation 曲線和移動偵測的可靠度是有關連的,但卻太複雜而不能 直接應用來找出可靠的移動向量。此處我們提出一個策略,利用 correlation 曲 線分別對 x 和 y 方向的最小投影量和 inverse triangle method 來偵測每個區域的 irregular condition,寫成數學表示式如下: _ min( ) min ( , ) _ min( ) min ( , ) i q i i i p x p R p y q R p = = q q (3.3)

(22)

其中xi_ min( )p 和 是在第 個區域中,correlation 曲線中 x 和 y 方 向的最小投影。圖 3-6 是針對一般情形和 ill-conditioned 的影像取最小投影的結 果。圖 3-6(a)是圖 3-4(a)一般情形下所得到的最小投影,圖 3-6(b)是圖 3-4(b)在 x 方向缺乏特徵下所得到的最小投影,從圖 3-6(b)和 3-4(b)可知,x 方向的 correlation 曲線的最小投影有很多個極值存在,因此很難決定最小值的位置。 _ min( ) i y p i -20 0 20 0 200 400 600 800 1000 1200 1400 x -20 0 20 0 200 400 600 800 1000 1200 y -20 0 20 0 200 400 600 800 1000 x -20 0 20 0 200 400 600 800 y -20 0 20 0 200 400 600 800 1000 1200 x -20 0 20 0 200 400 600 800 y -20 0 20 0 200 400 600 800 1000 1200 x -20 0 20 0 200 400 600 800 1000 y Region 1 Region 3 Region 2 Region 4 (a) -50 0 50 60 70 80 90 100 110 120 x -50 0 50 0 200 400 600 800 1000 y -50 0 50 0 100 200 300 400 500 x -50 0 50 0 200 400 600 800 1000 1200 1400 y -50 0 50 70 80 90 100 110 120 130 140 x -50 0 50 0 200 400 600 800 1000 y -50 0 50 50 60 70 80 90 x -50 0 50 0 200 400 600 800 1000 1200 1400 y Region 1 Region 3 Region 2 Region 4 (b)

圖 3-6 Examples of minimum projections of correlation curve from x and y directions in four regions: (a) regular image sequence and (b) ill-conditioned image

(23)

xi d xi n offset _ min i T

圖 3-7 Illustration of the proposed inverse triangle method.

為了能簡單的決定移動向量的可靠度,我們在x和y方向的最小投影使用了 inverse triangle method來做可靠度的特徵萃取,以獲得reliability indices。由圖 3-7 的inverse triangle method,第一步先由(3.4)式,找出代表第 個區域的最小 投影曲線的最小值T i i_min,第二步則是利用(3.5)式算出Sxi和Syi,offset為inverse triangle 的高度,而nxi和nyi是定義為Sxi和Syi的數目,經由(3.7)式可算出inverse triangle底部的兩個頂點間的距離dxi和dyi,再由(3.8)式可得到x和y方向的信心水 平(confidence level)。由於有多個極值的情況會嚴重的影響到可靠度的判斷, 在(3.8)式中加入對多個極值時的處罰(penalty)來改善可靠度的判別,圖 3-7 是有兩個極值的例子,得到了dxinxi的懲罰。第三步則是用一個基準,來決定 i x 和 的confidence indices。信心水平越小代表可靠度越高。最後一步,將四個 區 域 內 可 信 賴 的 向 量 的 數 目 加 起 來 ( 如 (3.9) 式 ), 可 得 到 和 。 i y ( )i Num x ( ), 1 ~ 4 i Num y i=

步驟 1. 從xi_ min( ) or _ min( )p yi q 找到極小值Ti_ min

(3.4)

_ min min( _ min( )) or min( _ min ( ))

i i i p q T = x p y q 步驟 2. 計算信心水平xi_conf 和yi_conf (3.5) { | _ min( ) _ min } { | _ min( ) _ min } xi i i yi i i S p x p T offse S q y q T offset = < + ⎧⎪ ⎨ = < + ⎪⎩ t

(24)

(3.6) number of number of xi xi yi yi n S n S = ⎧⎪ ⎨ = ⎪⎩ (3.7) max min max min xi xi xi P P yi yi q yi q d S d S = − ⎧⎪ ⎨ = ⎪⎩ S S xi yi _ 2 _ 2 i xi i yi x conf d n y conf d n = − ⎧⎪ ⎨ = ⎪⎩ (3.8) 步驟 3. 設定基準TH , 以決定 reliability indices If _xi conf < TH then x is reliable i else x is unreliable i . If then is reliable _ i y conf < TH i y else yi is unreliable 步驟 4. 計算四個區域x 和i 的數目 (3.9) i y ( ) sum of ( is reliable) ( ) sum of (y is reliable) i i i i Num x x Num y = ⎧ ⎨ = ⎩ for i=1 ~ 4. 3.2.3 Irregular 移動向量的產生

Irregular motion 可以用最小投影和 inverse triangle method 找到並排除,但 是有 ill-condition 像是缺乏特徵、有大塊低對比的區域影像、移動的物體或是重 複出現的 pattern,會使在四個區域中獲得的 MVs 變少。因此,為了得到 IMV, 重新組合這些可信賴的向量是必要的,因此利用求中位數的方法,解決這個問 題。詳細的 IMV 計算方式如下所示:

(25)

情況 1. If Num x t( ( ))i =4 then _ ( ) ( _ ( ), _ ( ), _ ( ), _ ( ), ( 1)) ill x a x b x c x d x x V t =Med V t V t V t V t GMV t− 情況 2. IfNum x t( ( ))i =3 then _ ( ) ( _ ( ), _ ( ), ( )) ill x a x b x c x V t =Med V t V t V _ t 情況 3. IfNum x t( ( ))i =2 then _ ( ) ( _ ( ), _ ( ), ( 1)) ill x a x b x x V t =Med V t V t GMV t− 情況 4. If Num x t( ( ))i =1 then _ ( ) _ ( ) ill x a x V t =V t 情況 5. If Num x t( ( ))i =0 then _ ( ) ( 1) ill x avgx V t = ×γ GMV t− ( ( ))i Num x t 是可靠的 LMVs 的 x 分量的數目, 是 IMV 的 x 分量, , , 和 分別代表不同區域內可靠的 LMVs 的 x 分量, _ ( ) ill x V t Va x_ ( )t _ ( ) b x V t Vc x_ ( )t Vd_x( )t Med( ) 是執行中位數的函數, GMV tx( − 是上一次得到 GMV 的 x 分量, 是 frame1) 的是數目, t

γ 是 attenuation coefficient,範圍在 0< <γ 1。 GMVavgx( )t 可經由下 式得到: ( )GMVavgx tGMVavgx(t− + −1) (1 ζ)GMV tx( ), 0< <1ζ (3.10) 接著用同樣的步驟以獲得Vill_y( )t 。IMV 可用下式表示: _ _ ( ) ( ) ( ) ill x ill ill y V t V t V t ⎡ ⎤ = ⎢ ⎥ ⎣ ⎦ (3.11)

3.3 整體性的移動向量估測(global motion estimation)

每個區域的 LMV 可能是代表整體性的移動向量,畫面中移動物體的移動 向量或是錯誤的向量,錯誤的向量可能是由於 ill condition 或是混合了整體性的 移動向量和畫面中物體的移動向量,雖然可信賴的整體性的移動向量是必須從 LMV 和 IMV 中挑選出來的,但是在最差情況,如果 LMV 和 IMV 都錯誤的話, 補償後和原本影像相比反而會變得更差,所以計算中加入零向量(zero vector),

(26)

可以預防這種情況的發生。同樣的,如果是水平移動的影像,如果補償的不是 先前一次的 GMV,而是零向量或是錯誤的向量的話,也會加大錯誤。在提出 的 DIS 的技術中,利用四個 LMVs、IMV、ZMV(即 0 向量,zero motion vector) 和之前一次的 GMV 總共七個向量來估計現在 frame 的 GMV。一般情況的影像 的 GMV 有很高的機率是其中一個 LMV,ill-conditioned 的影像的 GMV 有很高 的機率是 IMV。ZMV 可以預防當沒有可靠的 MV 時產生錯誤的補償結果,而 上一次的 GMV 可以用在影像水平移動的情況。

圖 3-8 Areas for background detection and evaluation.

另外,如果影像中有大型移動物體,整體性的移動的決定會遇到一些麻煩, 這是由於找出來的移動向量可能會在背景或是大型移動物體間切換,或是完全 被大型移動物體所決定。這樣會導致人造的晃動而對 IS 來說是一大挑戰,因此 提出一種以背景為基礎的演算法(background-based evaluation function)來克服 這個問題,圖 3-8 顯示計算的區域,選出位於影像邊緣處的五個區域來計算結 果,因為前景物體多半位於影像中央的位置,所以邊緣的地方對背景偵測最為 有利。GMV 的估計是利用 summation of absolute difference(SAD):

, , ( 1, , ) ( , , ) , 1 5, 1 7 i i B c c c X Y B SAD I t X Y I t X X Y Y i c ∈ =

− − + + ≤ ≤ ≤ ≤ (3.12) ( 1, , ) I tX Y 是 frame t-1 中座標 ( , )X Y 的強度,B 是影像中第 i-th 的背景區域, i , c c X Y 是七個預先選好的移動向量( pre MV )的 x 和 y 分量。 _ c

(27)

每個區域中不同的pre MV 有不同的_ c ,越小的 代表這個向 量是所求的向量的機率越大,在第 i 個區域中每個的分數以 表示, 月 大表示分數越高,每個 c Bi SAD , B c i SAD , , i c S B c i SAD , _ c pre MV 的總分可以由下式獲得: 5 , 1 c i S S = =

i c (3.13) 五個區域都用點對點的運算可以預防某些高對比的影像區域主宰了運算的 結果,在此演算法中,結果來自那個區域的優先權是一樣的。在(3.13)式中, 是決定 GMV 的索引,擁有最小 的 c S c S pre MV 就是我們想要的 GMV,可以表_ c 達成下式:

GMV=pre MV , for _ i arg(min c) c i= S (3.14) 經過這些區域的精密的計算後,在大多數的環境下,可以正確的偵測到背 景移動向量。

3.4 移動補償與估算

移動補償的第一步就是產生補償移動向量來去除不期望發生的震動,但是 仍然保留影像穩定的移動,傳統的 CMV 估測方法[3]如下: ( ) ( ( 1)) ( ( ) (1 ) ( 1)) CMV t =k CMV t− + αGMV t + −α GMV t− 1 (3-15) t 表示 frame 數,0< <k 1且0≤ ≤α 。增加k會降低不想要的震動,但是 會增加 CMV 的值,後者表示有效的影像區域會變小(如果想要維持一致的影 像大小),要說明這個現象,計算移動軌跡可以用來分析這個問題,移動軌跡可 以由下式獲得: 1 ( ) ( ) t o i MTraj t GMV i = =

(3.16)

(28)

1 ( ) ( ( ) ( )) t c i MTraj t GMV i CMV i = =

− (3.17) 其中MTraj t 和o( ) MTraj t 分別表示 frame t 原來和補償過後的移動軌跡。 c( )

圖 3-9 比較三種不同產生的 CMV 的方法針對於有水平移動和手握震動的 video 影像,每個圖都有兩個軌跡,一個是利用(3.16)式算出的原來軌跡,另一 個是利用式 3-18 算出的補償後軌跡,圖 3-9(a)的 CMV 是用(3-15)式傳統的方法 得到的,MTraj t 相對於c( ) MTraj t 有很大的延遲,這是由於有穩定的水平移o( ) 動所致,這將會減小有效的影像大小。圖 3-9(b)的 CMV 是由 (3-16)式加上 clipper 函數(3-18)式所得到的: ( ) ( ( )) 1

(

( ) ( )

)

2 CMV t =clipper CMV t = CMV t + −l CMV tl (3-18) l是邊界限制--最大可允許的影像移動,在這個例子中,延遲可以減少至某個範 圍,但這也會降低補償的效能。 為了解決上述的問題,Vella, et al.[4]使用了被動式的方法校正,但在水平 移動的情形下不能消除震動,針對這項缺點,我們加入內部的回授和 clipper 函 數來減少穩定移動時的延遲,同時也保持 CMV 在合適的範圍內。圖 3-10 是我 們提出的 CMV 計算方法的 block diagram,在內部的回授中有一個積分器,可 以消除水平移動的情形下,CMV 在穩態的延遲,這表示加入了積分器,有水 平移動影像的震動部分也和一般影像一樣可以被穩定下來。要注意的是,CMV 是 x 和 y 方向分開計算的,所以 x 和 y 的參數可以分開設定,像是水平移動的 情形下,兩個方向震動的 pattern 就不一樣。提出的 CMV 計算步驟如下: ( ) ( 1) [ ( ) (1 ) ( 1)] _ ( 1) _ ( ) _ ( 1) ( ) ( ) ( ( )) CMV t CMV t GMV t GMV t CMV I t CMV I t CMV I t CMV t CMV t clipper CMV t = • − + • + − • − − • − = − + = k α α β (3.19) 其中 0 , , 1 , 表示矩陣乘法,而 代表 3-19 式。 0 1 ⎡ ⎤ ⎡ ⎤ ≤ ≤ ⎢ ⎥ ⎢ ⎥ ⎣ ⎦ k α β ⎣ ⎦ • clipper( ) 圖 3-9(c)是用我們提出的方法產生補償後的移動軌跡,和圖 3-9(a)和(b)相 比,可以減少穩定移動時的延遲,同時也保持 CMV 在合適的範圍內。

(29)

0 50 100 150 200 0 500 1000 1500 2000 2500 Frame Pe l Sum of GMVs Sum of (GMVs-CMVs) 0 50 100 150 200 0 500 1000 1500 2000 2500 Frame Pe l Sum of GMVs Sum of (GMVs-CMVs) (a) (b) 0 50 100 150 200 0 500 1000 1500 2000 2500 Frame Pe l Sum of GMVs Sum of (GMVs-CMVs) (c)

圖 3-9 Performance comparison of three different CMV generation methods applied to a video sequence with panning and hand shaking. (a) CMV generation method in (3.15). (b) CMV generation method in (3.15) with clipper in (3.18). (c) The proposed method in (3.19).

(30)

3.5 CNN-based image stabilization

由於之前所述的 IS 演算法若要在 real-time 的條件下執行過於複雜,因此希 望藉由第二章所介紹的 CNN 結構來執行此 IS 的演算法。使用用 CNN 取代 DIS 架構(圖 3-1)的地方主要是在移動估測,包含計算 LMV 和 IMV,以及 error function 的部分,其運作流程如圖 3-11 所示,而每一個部分的說明將在以下各 節中說明。

(31)

image1 CNN (inverse template

+

CNN array size : 19×25

圖 3-11 CNN-based motion estimation wire addition)

image2

Sum the total

accumulator difference CNN (adaptive threshold template) CNN (projection template)

CNN

bias Find min Current summation Current Find location median circuit Error function Compensated motion vector estimation

(32)

3.5.1 Image difference 此處是指演算法一開始時,將目前的影像和前一張以 representative point 代表的影像相減的動作。減法可以轉形為 inversion 和 addition 的動作,而這兩 種運算都能用 CNN 實現。圖 3-12 是 inversion 使用的 template[5],圖 3-13 和 3-14 是 addition 需要用到的兩個 template,前一個得出的結果只有相加後的 1/2 而已,所以需要再接一個 template 來乘上兩倍。而執行 inversion 的 CNN 單元 的 input 則是前一張以 representative point 作代表的影像,執行 addition 的 CNN 單元的 input 則是目前的影像。

0 =

STATE , INPUT =Static grayscale image P, Z =0, OUTPUT =−P 圖 3-12 Inversion template 0 =

STATE , INPUT =Static grayscale image P, =

Z Static grayscale image Q,

=

OUTPUT 0.5×(P+Q)

圖 3-13 First addition template 0 = STATE , INPUT =0.5 (P+Q), 0 = Z , = OUTPUT P+Q

0 0 0

0 -1 0

0 0 0

0 0 0

0 -2 0

0 0 0

0 0 0

0 -1 0

0 0 0

0 0 0

0 1 0

0 0 0

0 0 0

0 -0.25 0

0 0 0

0 0 0

0 2.5 0

0 0 0

Template B Template B Template B Template A Template A Template A

(33)

3.5.2 Adaptive threshold 就電路上來說,在每一個區域內(共 475 個值)找極小值,是較困難的地 方。在已發表的期刊中[6],有人設計過求極小值的類比電路,多半是針對於輸 入個數不多的情況,以我們的需求而言,必須要有 475 個輸入值,若要用之前 提的方法來實現一個有 475 個輸入的電路,將會非常複雜而不可行,因此我們 提出一種方法,利用CNN加上額外的判斷電路來達成,template是選擇做 threshold的運算,threshold的template如圖 3-14 所示,結果會以Ibias的值為分界 點,大於的會被saturate至+1,小於的則會被saturate至-1。由於輸出是二質化過 的影像(binary image),可以利用這點來找尋極小值的位置。因輸出不是+1 就 是-1,所以可以預測,當threshold定在最小值的時候,整張影像一定只有一個 pixel是+1(如果最小值只發生在一點上),其餘的pixel均為-1,此時把所有輸出 的影像pixel值加起來令為IthIth就是我們在做adaptive threshold時,拿來判斷

是否已經找到最小值的指標。如果在運算中Ibias的值不到Ith,就將Ibias向上加一

個固定的step再把輸出pixel的值加起來,繼續和Ith做比較,而step的值是可以調 整的,若要比較精準,則step的值可以設較小,因為比較不會發生跳過最小值 的情形,但運算速度會比較慢。若 step值調大,可能會發生找錯的情形,也就 是跳過最小值的情形。以下是我們提出的adaptive threshold的執行步驟: 步驟一:決定Ith和 step 的值。 步驟二:先將Ibias調到最大(+1),由於所有 pixel 均小於此值,輸出會全為-1。 步驟三:將輸出總和對 做比較,如果比較小的話,將 調大一個 step,再 繼續收集輸出電流和 作比較,反覆此流程,直到 大於 才停止。 th I Ibias th I Ibias Ith 以 3×3 的 CNN 做例子,假設在理想的情況下(極小值只有在一點上),而

(34)

且 的值已調到接近最小值,輸出會等於 8×(+1)+(-1)=7。所以可定 =7,在 做迴圈調整 時,就一直將輸出加總,來和 比,只要小於 7,就將 加一 個 step,再繼續做,直到輸出大於等於 7,就可以斷定已經找到最小值了。 bias I Ith bias I Ith Ibias

STATE =0, INPUT =Static grayscale image P, Z

Ibias =− , where −1<Z <1

=

OUTPUT Binary image where black pixels correspond to pixels in with grayscale intensity Pij >Z

0 0 0

0 0 0

0 0 0

0 0 0

0 2 0

0 0 0

Template A Template B 圖 3-15 Threshold template 3.5.3 找出最小值所在的座標 找到最小值之後,接下來就是要把所在位置找出來,即為 LMV 的座標, 這邊可以利用一個名為 vertical hole detection 的 template,其原本的作用是找出 垂直的每一行中,有幾個 +1 的點,並將找到的點全部投影到最後幾列上, template 的值如圖 3-14 所示,同時圖中也舉了一個例子,圖中的 input ,在中 央的垂直那一行,黑點的數量加起來總共有三個,所以在 output 的最後一列, 可以看到有三個黑點堆積在最後三列上,而在 範圍之外的區域,由於均沒有 黑點,所以在最後一列上均沒有黑點顯示,所以其效果就像投影一樣。

在經過 adaptive threshold 之後,output 只有某幾個 pixel,也就是可能發生 最小值的地方會是-1,其他點均是+1,所以可以利用上一段提到作投影的 template,把所有-1 的點,都投影到最後一列上,要看哪一個 pixel 是-1,只要 檢查最後一列即可,而不用把每一個 pixel 逐一檢查。從圖中的例子可看出此 template 是負責尋找 x 方向的座標,而 y 方向也有類似的 template 可以達到, 如圖 3-15 所示。

(35)

Static grayscale image P, INPUT =0, STATE = 0 = bias I , =

OUTPUT Binary image that shows the number of vertical holes in each vertical

column of image P.

圖 3-16 Vertical hole detection template

STATE =Static grayscale image P, INPUT =0, 0

= bias

I ,

=

OUTPUT Binary image that shows the number of horizontal holes

in each horizontal row of image P.

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

0 0 0

Template B

0 1 0

0 2 0

0 -1 0

Template A

0 0 0

1 2 -1

0 0 0

Template A Template B

(36)

第四章

CNN-based IS 硬體設計

4.1 Current-mode CNN 電路設計

近年來,類比電路設計者越來越廣泛使用 current-mode 的電路設計方法, 和 voltage-mode 相比,current-mode 具有高速、較大的頻寬和較低的供給電壓。 而針對 CNN 的電路實現,採用 current-mode 的方法,就可以將大量數目的電流 相加在一個節點上,以降低設計的困難度。 很多關於類比類神經網路的電路也在最近被提出,而且越來越多人用 current-mode 來建構基本的元件,例如利用 OTA-based 的處理單元、或是用 switch-current 的訊號處理來設計 CNN,每種設計方法都有利有弊,主要還是因 為類比電路的設計上,可程式化(programmability,這裡的解釋是通過電子手 段(electronically)來改變權重和做參數調整)是不易實現的,部分的設計是有限 制的可程式化能力,大部分設計均是不可調整的。 CNN 的狀態方程式在 2-2 節(2.6)式,為了配合說明之後使用電路的運作原 理,改寫如下, I t i t v j i j i A R t v dt t dv C yij in x xij xij = + + + ) ( ) ( ) , ; , ( ) ( ) ( , (4.1) 其中 代表在 neighborhood 內的其他 cell 的輸出電流 和輸入 電流 的總和。再令 ) (t iin C(i,j) ixykl xukl i dt t di R t ixij( )= x xij( )代入,可以得到以電流描述的 CNN: I t i t i R j i j i A t i dt t di

RxC xij( ) =− xij( )+ (, ; , ) x xij( )+ in( )+ . (4.2)

圖 4-1 是我們採用的 CNN basic cell 的架構[7],從大訊號分析可得: ) ( ) ( ) ( ) (t A1I i t A2i t i t ixij = L+ in + yijC . (4.3)

(37)

輸出電流iyij(t)可以用ixij(t)表示成: L xij yij I A t i A t i = − 1 2 ( ) ) ( . (4.4) 接著可以重寫流過電容 C 的電流成: t xij x t xij xij xij t xij C d t di C R d t di t di t dv C d t dv C i ( ) ( ) ) ( ) ( ) ( = = = . (4.5) x R 以大訊號分析來看,是 的電壓和電流的比例關係,將(4.2)和(4.1)代回 (2.6),再加上適當的定義,可將狀態方程式重新改寫成以下的形式: 1 M ) ( ) ( ) ( ) ( ) ( 2 1 1 2 A A I t i t i A A t i dt t di C

Rx xij =− xij + xij + in + L − . (4.6)

L I A2IL A1IL IL ) ( 2i t Ayij C i ) (t iin 2 : 1 A A1:1 ) (t vxij ) (t ixij ) (t vyij 1 M M2 3 M M4 ) (t iyijDD v SS v x C From neighborhoods 圖 4-1 CNN basic cell 的架構 比較(4.6)式和(4.1),可得到以下關係式: 1 1 A mx = (4.7) 1 2 ) , ; , ( A A j i j i AI = (4.8) 和 ) (A1 A2 I I = L − (4.9)

(38)

所以我們如果要使電路表現某一種的 template,只要設計兩對電流鏡的增 益即可,兩個增益的比例就是 template A 的值。在我們的應用中,均把右邊 、 的增益訂為 1 :1,只改變左邊的電流鏡增益來設計 template A,另外在輸出 的上下限方面,定為 ±10μA ,圖 4-2 為我們用 Hspice 模擬輸出函數的結果。 1 M 2 M (a) (b) 圖 4-2 在不同的電流增益下,用 Hspice 模擬 cell 的輸出函數。

(a) positive (b) negative slopes

4.2 Initialization 和 template A、B 電路設計

4.2.1 Initialization 電路

(39)

圖 4-3 是給 cell 初始值的電路,在 CNN 的運算中,有些 template 要能夠正 確運作,STATE 需要給特定的初始值,例如之前所用的找投影量的 template, 就需要將 STATE 的初始值設為要找投影量的那張影像。 和 主要是控制是 否要將初始值輸入到 cell 中,當 1 in V Vin2 HIGH Vin1 = ,Vin2 =LOW 時, 打開, 關 閉, 就會輸入到 的節點去,也就是 cell 中表示 STATE 的位置,此時動作 是在注入 STATE 的初始值,當 1 M M2 init I Ixu LOW Vin1 = ,Vin2 = HIGH時,則 關閉, 打開, 就會經由 、 流出,而不會流進 cell 裡了,所以 、 基本 上是提供一個放電的路徑,以免將 關閉時,電流會有無路徑可流動的情形。 1 M M2 init I M2 M3 M2 M3 1 M 4.2.2 Template A 設計 neuron A template 圖 4-4 Template A 電路圖

(40)

在 2.1 節中描述,template A 主要是讓輸出乘上權重後,傳給四周的 cell, 因此這裡我們使用電流鏡的技術,給輸出電流乘上一個倍數,再傳給其他的 cell。如圖 4-4 所示,上面框起來的部分為 neuron 本身,也就是 4.1 節提到的 basic cell,左邊的電流鏡,其實也是 template A 的部分,代表的是 template 最 中間的值,表示自己 cell 的輸出迴授給自己的權重,而下面框起來的部分,則 是 template A 中其他的值,表示給周圍 cell 的權重,由於 template 值有正有負,

所以電路也有兩個輸出 和 ,分別代表正值與負值,至於選擇哪一個,則 是依賴 和 來控制。 pa O Ona pa V Vna 4.2.3 Template B 設計 圖 4-5 Template B 電路圖 由於 template B 是控制額外給 cell 的輸入,所以是獨立的電路, 代表的 是 cell 的 input 而 和 、 和 是電流鏡,功能是給 乘上一倍數,以 控制輸入到 cell 的大小,和 template B 一樣,B 也是有正有負,所以輸出亦有 兩個,分別為 (正)和 (負),至於選擇哪一個,則是由 和 控制。 b I 1 M M2 M1 M3 Ib pb O Onb Vpb Vnb

(41)

4.2.3 Boundary 的考量

在 CNN array 中,邊緣的 cell 周圍並沒有可供連接的 neighbor cell,為了避 免這種情形,通常會在整個 array 外面加一層 boundary cell,而 boundary cell 的 template、state 和 input,則需要不同的設計,在 MATLAB 中的 CNN toolbox 中, 對 boundary 的設計,給予三種方法:第一種是複製原來 array 內邊緣的 cell, 第二種是全部接一定值,第三種是以 torus 的函數給值。在軟體實現中,我們使 用第一種或是第二種方法,都有正確的結果,而在硬體實現中,則是採取第二 種方法,因為第一種方法,複製的 boundary cell 的外面還是沒有和其他 cell 做 連接,在缺少 neighborhood 的影響下,會讓 boundary cell 的輸出越來越小(加

上電晶體的漏電效應),最後穩定時會趨近於 0,而這趨近於 0 的電流,會經由

內部連接傳給 array 內的每個 cell,導致最後整個 array 輸出都等於 0。所以採 取第二種方法,在 boundary 接上一定值的電流,讓輸出保持穩定的值,CNN array 才能正確運作。

4.3 CNN-based IS 電路設計

4.3.1 Image difference

在前一章的演算法描述中,用到了 inversion 和 addition 的 template。然而, 在提出的 CNN-based DIS 架構中,由於是用 current-mode 的方法實現,所以在 相加時,可以不必用到 CNN 來處理,只要將兩條導線連到同一點就能做到兩 數相加的效果,同時也簡化硬體的複雜度。

在 template 的實現方面,由於 A、B template 都只有中間有值,所以 4.2.2 節中提到的電路可以省略,只要留下 neuron 的電路即可,neuron 中左邊的電流 鏡要調成 1:1(右邊的電流鏡均固定為 1:1),並且後面要多接一個反相器,使 增益為負,以符合 A template 的值(等於-1),B template 由於也是只有中間有 值,所以 4.2.3 的電路只需要放一組,由於 template 值是-2,所以電流鏡的增益 要設計為 1:2,輸出選擇Onb的端點。圖 4-6 為用 Hspice 模擬 3×3 的 CNN array,

(42)

擷取出其中一個 cell 的輸出結果,在此設定 cell 在10µs時開始工作,圖中標號 1 的區段,是給初始值的時候,而標號 2 的區段,則是 cell 開始經由 template 彼此影響的時候。由波形很快成一條水平線可知,cell 在極短的時間內就會達 到穩定。圖中第三條曲線是拿來做 inversion 的值,原來的值是−2.6µA,而第 二條曲線則是拿來做 wire addition 的值,其值等於5µA,第一條曲線則代表兩 條曲線相減後的答案:5µA−(−2.6µA)=7.6µA。 c d

圖 4-6 用 Hspice 模擬 image difference 之結果

4.3.2 Adaptive threshold

在做adaptive threshold時,需要將CNN array的輸出加總和Ith比較,由於是

current-mode,所以只要將所有cell的OUTPUT連在一點就可以做相加,但是直 接將輸出做連接,會讓其他cell的輸出有通路進到自己cell,因而造成電路運作 的不正確,所以相加的動作必須和neuron絕緣,因此我們在neuron左邊的電流 鏡,再加上一個電晶體 ,gate端和 相連,偏壓電流也和 相仿,所以 的輸出電流會和 大致上相同(由於連接的負載不同,會有些許誤差),由於 的電流即等於輸出電流,所以 的功用是複製輸出電流出來,讓相加的工 作能夠在不影響cell正確工作下進行。 5 M M4 M4 M5 4 M 4 M M5 有了加總的電流後,就把電流值和自己定的threshold Ith相減後輸入到電流 比較器內,比較器的電路在之後 4.4.2 節有詳細的描述,如果加總電流小於Ith則輸出為LOW,若加總電流大於Ith,輸出則為HIGH。

(43)

給予cell array偏壓電流的Ibias由於必須在一次回圈後加一個step,所以應該

設計成像階梯般的輸入電流源,但為了方便硬體實現,這裡直接使用ramp current input,可以降低斜率以增加精確度,當Ibias > Ith後,就打開開關,將做

adaptive threshold的CNN cell輸出到下一個做投影的CNN array,的initialization 電路,當作state的初值。圖 4-7 是用Hspice模擬threshold的結果,CNN array是 3 ×3,threshold值設在−1µA,由圖可看出大於threshold的電流均會被saturate到 A µ 10 ,小於則會被saturate到−10µA。 圖 4-7 用 Hspice 模擬 threshold 電路之結果 4.3.3 累加器 圖 4-8 累加器的架構 累加器的架構如圖 4-8,為了計算所有子區域相對應的 pixel 的差異值之和, 需要一個類比式的累加器(accumulator),由於欲相加的資料,是以 serial 的方 式進入 current adder,所以在相加的資料更新前,需要將之前相加的結果保留

(44)

住,以供和後來的資料繼續相加,所以需要類似儲存的單元,我們利用了 switch-current memory cell,來當作相加電流中間的暫存器。在圖 4-8 中,input1 是提供相加的資料,input2 則是接到最後的輸出,把上一次相加完成的值回傳 到加法器繼續運算,運作流程大致分為兩個階段:

第一階段:將 S1 打開,S2 關閉,S3 打開,此時 input1+input2 的結果會流進 memory cell1 中儲存。

第二階段:將 S1 關閉,S2 打開,S3 關閉。此時存在 memory cell1 的電流會流 進 memory cell2 儲存。此時可更新 input1 的資料。

current adder 的架構如圖 4-9,利用閘極的輸入電阻是無限大就可以分析出 相加的原理。memory cell 的架構則可參考圖 4-10[8],S1 和 S2 的開關是由兩個 互不 overlap 的訊號 和 所控制,在 phase 時,輸入電流 和偏壓電流 I 的和會流入以二極體方式連接的電晶體 ,為了讓 能流過這麼多電流,電 容 C 必須被充電到某個值 1,其大小由汲極電流和電晶體的 DC 特性所決定。 在 phase 時, 被電容 C 維持住因此流過 的電流是固定在 +I 的大 小,所以輸出電流 等於 。 1 φ φ2 φ1 Iin 1 M M1 gs V 2 φ Vgs1 M1 Iin out IIin

(45)

圖 4-9 current adder

圖 4-10 switch-current memory cell

4.3.4 Median circuit 和 Error function

Median circuit 的功能是為了在 LMVs 中找到一個最適合的 MV,在演算法 中,是先把 LMVs 求平均,再找最接近平均的 MVs,在電路實現中,我們採用 類似的方法,先將輸入的 LMVs 電流值分流成四條,等同於除以 4 求平均,後 來再使用比較器,比較每個 LMVs 和平均值的大小,將差值最小的 LMV 輸出 當作最好的 MV。

(46)

Error function 在第三章中已提過是為了計算背景,在整張影像中分割出五 個區域來計算,在此處我們也可以利用像 4.3.1 的方法來實現,利用以 inversion template 為主體的 CNN array 加上 wire addition 來實現出來。

4.4 其他用到的類比電路

4.4.1 絕對值 圖 4-11 絕對值電路圖 在累加每個 pixel 在兩張影像中的差異之前,必須先將每個 pixel 的差異取 絕對值,才能正確估計累加差異的大小並找出最小值。圖 4-11 是我們使用的絕 對值電路[9],具有 current-mode 的操作模式以及取絕對值後的電流和輸入電流 很相近的優點。無論 是向外還是向內,輸出 都是向內進入電路的,當 是 向外流出電路的時候, 會打開而 會關閉,所以 會通過 而流到上半 x I ISN Ix 5 M M6 Ix M5

(47)

部由 PMOS 組成的電流鏡,最後再從 流到下半部的 NMOS 電流鏡。當 是 向內流進電路的時候, 會關閉而 會打開, 會直接通過 而流進下半 部的 NMOS 電流鏡。所以無論 的正負為何,輸出都是同一方向。圖 4-12 是 用 Hspice 模擬的結果,可以看出雖然會受到負載的影響而使響應較慢,但是仍 然有呈現取絕對值的效果。 10 M Ix 5 M M6 Ix M6 x I 圖 4-12 用 Hspice 模擬絕對值電路之結果 4.4.2 電流比較器 圖 4-13 比較器電路圖 在 adaptive threshold 中,需要比較加總後的電流和 的大小,所以需要比 較器,而且需要能比較正和負的值,我們使用如圖 4-13 的電流比較器架構[10], 具有 current-mode 的操作模式,也可以判斷雙向(正負)的電流。 和 是 th I 1 M M2

(48)

class B 的電壓緩衝器(voltage buffer),而 到 是兩組反向放大器(inverting

amplifier), 是兩筆電流相減後的電流值,當作比較器的輸入電流,這電路有

三個操作模式,當 是流進電路的時候,V(1) 被拉到 HIGH,V(1)再被 和

放大,而導致 V(2)變成 LOW, 和 均小於 0,會將 關閉而將 打開,

在這個狀態下,V(1)是低阻抗的節點(low impedance node),因為 是由 所

供給。當 變號時,閘極的驅動能力就不足以讓 buffer 供給 ,所以 V(1)會

暫時變成高阻抗的節點(high impedance node),當 是流出電路的時候,V(1) 被拉到 LOW,V(2)被拉到 HIGH,使得 打開而將 關閉,而 V(1)再變成 低阻抗的節點。圖 4-14 為用 Hspice 模擬之結果,可以看出電流在正變負時, 輸出會從 Vss 變成 Vdd。 3 M M6 in I in I M3 M4 1 GS V VGS2 M1 M2 in I M2 in I Iin in I 1 M M2 圖 4-14 用 Hspice 模擬電流比較器之結果

(49)

第五章

模擬結果

實驗所用的影片,解析度均為 312×200,由於要預留空間補償,所以最後 輸出的影像縮小為 236×142。圖 5-1 是顯示經過 IS 演算法補償後和經過 CNN-based IS 演算法補償後所求出每張影像的補償向量座標,橫座標的 index 是第幾張影像,縱座標則是求得的 FMV。比較兩者結果,可以發現在第 14、 22、45(誤差較大,超過一個 pixel)、48、58、66、70 和 84 張圖 FMV 有誤差 出現,其它的均相同。由 trace 程式中發現,主要誤差來源是來自 adaptive threshold,由於 step 調整不夠好,而導致找尋過程跳過最小值,或是提早停止 而誤將不是最小值的座標當作最小值。再加上找座標的方法也會產生不同的結 果,在 IS 中,找最小值的座標是用 min 的指令,所以會直接抓出整個矩陣中的 最小值,但在 CNN-based IS 中,找最小值是投影到最後一列和最後一行後,再 找尋是否有-1 的值出現,來決定座標。所以萬一一個矩陣有兩個最小值的點, 由於搜尋方法的不同,可能這兩種方法會找到不同的座標。至於其他用到 CNN 的部分,都會和原先的 IS 的結果相仿。 拿第 14 張影像分析,用 IS 演算法找到的四個 LMVs 為(0,6)、(-1,6)、(-1,3)、 (-1,3),用 CNN-based IS 演算法找到的四個 LMVs 為(0,4)、(-1,-2)、(-2,3)、(-1,2), 其實差異不小,但是由於求出 LMV 之後還要經過 error function 和最後的補償 器,所以能把錯誤減到最小,其實在找 LMV 時,還有一些影像也發生有一兩 個向量不一致的情形,但是卻被 error function 消除,所以最後結果還是相同。

(50)

(a) (b) 圖 5-1 補償向量的值 (a) IS 演算法 (b)CNN-based IS 演算法 圖 5-2 是將原本影像的移動向量,和補償後的移動向量做比較,可以發覺 IS 和 CNN-based IS 演算法補償後的向量移動均比較平滑,消除了原本影像中的 震動部分。 (a)

(51)

(b) 圖 5-2 原本移動向量和補償後向量比較 (a) IS 演算法 (b)CNN-based IS 演算法 圖 5-3 是將原本影像、經過 IS 演算法補償後和經過 CNN-based IS 演算法 補償後的輸出影像列舉幾張做對照,這個例子的特點在於有移動的物體--乒乓 球,可以發現提出的演算法可以避免補償到乒乓球的移動向量,而只補償震動 所產生的移動向量。

(52)

(a) (b) (c)

(53)

圖 5-4 和 5-5 是另外一個例子,這個短片的特點在於背景有人群的晃動, 而我們使用的影像穩定器,能夠不被背景的人群晃動所影響而誤判,而只針對 攝影機的震動做補償。而圖 5-6 是將原本影像、經過 IS 演算法補償後和經過 CNN-based IS 演算法補償後的輸出影像列舉幾張做對照。 (a) (b) 圖 5-4 IS 演算法 (a)補償向量的值 (b)原本的移動向量和補償後向量

(54)

(a)

(b)

(55)

(a) (b) (c)

(56)

第六章

結論和未來展望

在本篇論文中,提出了一種以 CNN 為基礎的影像穩定技術演算法,由於 CNN 的平行處理能力,運算時間能夠大幅的縮短。和原本的 IS 演算法做比較, CNN-based IS 演算法能夠完全的利用類比電路實現,而補償影像的結果,在 84 張連續影像中,只有 7 張影像有相差一個 pixel 的差異,1 張有超過一個 pixel 的差異,所以 CNN-based IS 不但具有 CNN 即時處理的能力,同時在補償的效 果並沒有和原先演算法有太大的落差。 在本論文中同時設計了一個有效率的 current-mode CMOS 的電路來做為實 現 CNN 的基本單元 cell 的架構,其中使用了電流鏡的技術,使得 template 的值 能夠被精確控制,同時在演算法中的每一個 function block,都採用了能夠執行 相同運算的類比電路或是自己設計的 CNN array 來取代,因此在結果的正確性 上提升很多,論文中提到的電路都經過 Hspice 的模擬驗證,使用的 library 是 0.35µm TSMC 2P4M 的製程。 在未來的工作上,希望能夠將原本的影像穩定技術,設計成更適合 CNN 實現的演算法,如此可以更有效的減少 CNN array 的使用量。並且發展可程式 化的 CNN array,使得一個 cell 能夠做到多種 template 的效果。

數據

圖 2-2    The output function of CNN.
圖 2-4  以電路形式表示 CNN cell
圖 3-1  所提出的 image stabilization 的系統架構
圖 3-3    The block diagram of LMVs and IMV estimation.
+7

參考文獻

相關文件

分區技能競賽 資訊與網路技術. 正式賽

1、 網路管理與通信技術整合實務、機電控制、網拍多媒體行銷及物流從業人員

在介紹方向場時,我們曾提過 RL 電流迴路的模型:一個迴 路接上電源(E)電感(L)以及電阻(R) 如下圖. 同時推得這個

We compare the results of analytical and numerical studies of lattice 2D quantum gravity, where the internal quantum metric is described by random (dynamical)

所以 10 個數字 個數字 個數字 個數字 pattern 就產生 就產生 就產生 就產生 10 列資料 列資料 列資料 列資料 ( 每一橫 每一橫 每一橫

授課老師: 李麗華 教授.. 使用工具

• 逆光拍照時經常在前 景物出現的色差現象.. 德霖技術學院

Type case as pattern matching on values Type safe dynamic value (existential types).. How can we