# **Computer Vision**
###### tags: `NTU` `course` `Tech`
老師: Chiou-Shann Fuh(傅楸善)
Textbook: Computer and Robot Vision
2018 期中考統整(C1-C7.2)
2018 期末考統整(C7.4-C11)
# Chapter1
1. **Computer vision:**
The science that develops the theoretical and algorithmic basis by which useful information about the world can be automatically extracted and analyzed from an observed image, image set, or image sequence from computations made by special-purpose or general-purpose computers.
開發理論和算法基礎的科學,可以從特殊或一般用途電腦的計算中從觀察到的圖像、圖像集或圖像序列中自動提取和分析有關世界的有用信息。
* 透過電腦模擬、仿真人類的眼睛
* 電腦的發展方向 2D -> 3D
2. **Computer graphics:**
computer vision的相反,computer vision為接收影像,經計算後產生對我們有用的information,而computer graphics為我們藉由電腦information,使其產生image, image set 或 image sequence.
3. **Image:** 物體空間上的表示方法,可能有2D,3D場景或其他Image
4. **Intensity image:** 光學或攝影傳感器輻射能量
5. **Range image:** 視線的距離
6. **Pixel:** picture element。
**Pixel property:** position, gray level or brightness level
7. **Gray levels:** 強度圖像的pixel值,8bits 從黑0 -- 白255
8. **Recognition methodology /Visual analysis:**
利用影像的資訊作分析,通常包含了以下步驟:image formation(透視or正交投影), conditioning, labeling, grouping, extracting, matching.
9. **Conditioning:**
基於模型觀察到informative pattern的圖像,而這些pattern由uninteresting variations修改, ex: noise suppression, background normalization
10. **Labeling:**
基於模型觀察到informative pattern具有event空間排列的結構,每個空間事件是一組連接的像素,ex: thresholding, edge detection, corner finding
11. **Grouping:**
在相同event中,通過收集一起或識別max connected sets of pixel來分類,pixel -> sets of pixels, ex: segmentation, edge linking
12. **Extracting:** 計算每組像素其屬性的列表(質心、方向、面積、空間矩),ex:
region holes區域孔, arc curvature弧形曲率
13. **Matching:** 判斷一些相關圖像事件集的解釋,將這些事件與某個給定的三維object或二維shape有所關聯,ex: template matching
# **Chapter2**
14. **Binary image:**
將image經過thresholding後,所得pixel value只有1和0的影像。
Value: 1(considered part of object), 0(background pixel)

15. **Binary machine vision:** binary image 的 生成和分析
16. **Intensity Histogram:**
計算出各個pixel的intensity value數並畫成長條圖,縱軸為個數,橫軸為intensity value m介於0-255
If the histogram of the image is not bimodal distribution, there has two methods doing thresholding:

17. **Minimizing Within-Group Variance:**

18. **Minimizing Kullback Information Distance:** Minimize the Kullback directed divergence H(t) 求出的entropy越低越好,代表最容易找出好的答案

19. **Two dominant modes in intensity histogram:**
若intensity histogram中很明顯有兩peak value,此種histogram較好定threshold,通常會將其設在valley的部分。

20. **Connected components:**
將圖像中相連的區域分開標記,方法:
先對圖像做二值化(經過thresholding),找出有資訊的部分,然後對binary 的1去做labeling,使相鄰的1 pixel有相同的label形成一個區域,而不相鄰的部分則別其他區域,為一種grouping的方法。
21. **4-connected:** 檢查4點去變化x

**8-connected:** 檢查8點去變化x

22. **Connected Components Algorithms:**
An Iterative Algorithm、The Classical Algorithm、
A Space-Efficient Two-Pass Algorithm That Uses a Local Equivalence Table、
An Efficient Run-Length Implementation of the Local Table Method
23. **An Iterative Algorithm:** problem(速度太久)
(a) 先二值化整張圖片,再將有資訊的pixel都標記成不同的數字
(b) 不斷的top-down及bottom-up做變化,直到沒變化為止
24. **The Classical Algorithm:** problem(table對記憶體來說可能會太大)
(a) 先二值化整張圖片,再將有資訊的pixel都標記成不同的數字
(b) 先top-down一次,當兩個不同的label交會在同一點pixel時,將label值大的和label值小的關係存入table中,以後只要遇到label大的都被取代
(c) 整理表內,將關係列清楚(值大貝值小取代)
(d) 第二次top-down
25. **A Space-Efficient Two-Pass…**
建立一個小表只存目前及前一行的關係、最大的值=圖片寬度、當檢測到值相等時,重新表記每一行的值
26. **Segmentation:**
將一張影像分成數個有相似properties且鄰近的區域,常見的方法有signature segmentation: 在垂直、水平或對角線方向上做投影,從投影值為0處(或小於我們所設的值的地方)將影像沿投影垂直方向切開。
27. **Alignment定位:**
例如我們要在印好的電路板上鑽動時,我們必須確定我們鑽的位置是對的,此時我們可以利用影像資訊幫助我們確定電路板位置,或做face recognition時,利用影像框出人臉範圍。
28. **Interpretation解讀:**
在我們對影像做了分析之後,必須將結果與我們有興趣的議題做關聯,例如:分析衛星雲圖而得到氣候資訊。
29. **Background normalization:**
背景正規化,去除影像背景中uninteresting pattern variation,使影像複雜度降低,利於分析。
30. **Background pixel:**

# **Chapter3**
31. **Region property:** shape, bounding box, position, intensity statistics
32. **Centroid重心:**

r = row的值*對應有幾個pixel/A
33. **Average gray level (intensity)、Gray level (intensity) variance**

34. **Mean distance R from the centroid to the shape boundary**
 K在周長內
周長=P4 or P8 繞一圈所需要的長度,mean為(走過的點-重心)/點的數量
35. **Standard deviation R of distances from centroid to boundary**
 K在周長內
36. **Microtexture properties:** 用於測量區域的texture

S:指定空間中的set of pixel P: 區域中的co-occurrence matrix(共生矩陣)
37. **Co-occurrence matrix**

對應相同就+1
38. **其他的common texture features包含:**

39. **Extremal point**

Angular orientation旋轉角度分母分別代表P1-P5, P3-P7的角度
40. **Second-order:**

41. **Signature properties:**

42. **Centroid:** 把投影的量*對應位置的值 = 投影重心

43. **Second-order:**

44. **Signature analysis:** 能夠簡單且快速的實現將影像沿投影垂直方向切開。
45. **Histogram equalization:** 把原本集中在某區塊的機率函數(PDF)平均分布在所有顏色上面 
s: 新的強度、 k:累計到目前像素的PDF
n: 圖片大小/總pixels、 nj: 強度為j的像素數
# **Chapter4**
46. **Pattern discrimination/pattern identification:**
(a) 觀察或測量一個unit
(b) 類別分配,透過unit名稱或對物體的種類進行分類
(c) 只根據measurement/pattern進行分類
47. **Unit:** Decision rule的input,可能為一個region或pixel,圖像的區域和投影segments,每個unit都有一個相關的measurement vector,需依照decision rule來分配unit到最佳的類別
48. **Category:** 在執行decision rule時,將輸入分類成屬於某個category。
49. **Measurement vector:**
將數個measurement合併表示為一個vector,measurement可能為centroid, shape, mean等,再利用measurement vector取出或合併出最佳分類的分量做matching或pattern recognition。
50. **Statistical pattern recognition techniques:**
特徵選擇和提取技術、decision rule構建技術、estimating decision error技術
51. **假設進行類別分配的行為在經濟上或效用方面的結果(t,a,d):**
e(t, a): economic gain/utility with true category t and assigned category a
e >0 profit consequence, e<0 loss consequence
d: 從一組測量值D觀察到的測量值
False-alarm rate對的判斷成錯的:

Misdetection rate錯的判斷成對的:

Expected profit 期望值= 
Ex: P(g) = 0.95, P(b) = 0.05
期望值: 0.95(0.85*2000-0.15*100)+0.05*(-0.12*10000-0.88*100)





# **Chapter5**






# **Chapter6**









# **Chapter7.2**




# **計畫分數(期中考)**
**Wake Word Detection**
keyword spotting(KWS)是智慧設備上啟動語音背後運作的關鍵。它需能夠達成及時和高精準度才能獲得良好的用戶體驗。近期,NN已成為KWS架構的的選擇,因為與傳統的語音演算法相比,它具有更高的正確度。由於KWS持續開啟的特性,應用上受耗能限制,通常在有限記憶體和計算量的microcontroller上運行。而此計畫主要針對大部分神經網絡架構(NN)對KWS訓練做評估和分析,以比較它們的準確性和記憶體/計算需求。計畫認為,可以優化這些NN架構,以調整微控制器記憶體/運算的限制,而不會犧牲精度。計畫也進一步探索深度CRNN並將其與其他神經網絡架構(DNN,CNN,RNN...)進行比較。CRNN的準確率達到95%,比DNN高出約9% 具有相似數量參數的模型。
**道路、路標及電線桿分類**
此計畫希望能夠取出road point,方法為: 先把點圖放在雲端上,然後把馬路的點分出來(依照狹長性、平面性、散射、垂直度用Random Forest Classifier,輸出是否為道路,輸出正確率94.8%),假設為非路面的資訊,就做道路號誌辨識(用region properties區域屬性做分類)及桿狀物體標記及分類(用Random Forest Classifier、PointNet來分類,整體正確率: "R:85.25%, P:92.5%"),最後結果為道路、道路號誌及電線桿分類。
2D Bar-code Image Decoding 二維條解碼
二維條碼(此計畫為QR code,判別QR code的角角黑白的比例 1:1:3:1:1)內部存儲了信息,但在各種條件下變得不易讀取(ex:背景或光源不好、角度不好的掃描方式...),需要進行一定的變換使得圖像校正到較好的狀態,而校正方式為: 二值化--> QR code的特徵提取與匹配(找到 pattern, 評估版本, 對齊pattern) --> 透視轉換 --> 修正,再來對處理好的圖像進行解碼即可。設計出的程序,最終和市面上的Zxing等相比,速度雖慢一些但準確率相對較高。需要加強的方向是減少二值化過程的時間
**基於顏色強度變換的圖像水彩化**
此計畫的目的為希望能夠將影像模擬成水彩畫,方法為: 先將RGB取出來做統計,再依照影像的熱度(255最熱、0最冷)去做擴散(由熱往冷),再取影像的RGB,針對每個pixel 進行label(分成0-20),再統計label的最大值,最後依照label的等級把顏色的值取回來
ex: (0-255) -> (0-20) -> (0-255),實驗結果表明,實現了更好的色彩效果和自然的外觀。
# **Chapter7.4**









# **Chapter8**











# **Chapter9**









# **Chapter10**





# **Chapter11**



# **計畫分數(期末考)**
**Use 3D Convolutional Neural Network to Inspect Solder Ball Defects
利用三維卷積神經網絡檢測焊球缺陷**
HIP是一種焊球(solder ball)缺陷,可能由以下原因引起:
焊球表面氧化、焊料潤濕不良、印刷電路板(PCB)受焊接過程中的熱變形
目前對HIP缺陷的診斷通常使用2D X射線檢查機,但很難找出缺陷位置。
其他可靠的方法是破壞性測試,因此不建議使用它們。雖然很難從2D X射線圖像中找出HIP位置,但我們可以通過2D X射線圖像的不同角度重建3D PCB模型,藉此可以更清晰地表示HIP缺陷的位置。
近年來,CNN在物體識別方面具有突出的表現,因此結合了許多最先進的CNN,如:VGG,GoogleNet Inception,ResNet和DenseNet。此外還設計了兩種convolutional blocks和use the dense connectivity method.由於HIP問題不經常發生,因此我們使用數據增強方法來擴展我們的3D焊球數據。
input --> convolution 3*3*3 --> dense connection block --> convolution 1*1*1 --> global average pooling --> dropout --> softmax
在實驗中,有277個3D焊球,其中38個是標記數據,其餘是未標記數據,標記數據的一半(19)是有缺陷的焊球,另一半是普通的焊球。我們的網絡可以在測試數據方面取得優異成績、規模更加精緻,且執行時間比其他CNN快。
**楊博凱 研究方向(試管嬰兒檢測)**
試管嬰兒,無法成功提升人類受孕的機率(由卵數決定,1個約30%,受年紀增加而降低),但受精卵都長一樣,無法判斷是否能夠受精。希能能夠體外受精(成功率60%左右,但法令限制最多一次4顆),而要判斷是否能夠成功受孕,只能夠從前五天的細胞數來判斷資訊: 包含細胞數、碎片數、細胞偶數基數...等
目前方法: morphokinetic study(利用光的變化,依照時間軸變化的方向來觀察)
目標:能夠結合deep learning,目前已有幾篇,但沒有很好的一致性。
希望能夠training到直接給病人直接做使用(在胚胎植入之前),希望將labels 和 features 的input minimal,因為沒辦法一次測試多個細胞,因此想從embryo database內找出是否有相近的影像結果
**Image Stitching 圖像拼接**
在全景圖像拼接中,需要做以下功能: 檢測功能、匹配功能、使用RANSAC估算homography 、將每個圖像投影到同一表面上、混合和裁剪,在經過縮放空間和DOG空間、極值檢測、找出關鍵點、描述符表示可以找到特徵。有了特徵後,將之前的關鍵點做匹配,找到不匹配的就丟掉,在匹配上將多的點取出來,在用直接線性轉換求單一線性方程式,採用隨機採放的方法(使用比較多的匹配點)。在擬合上只找有意義的點(類群),其他就不取,因此會找出一條區分的線,然後重複挑點、隨機取樣、配對model,最後找出最好的線(其他點接受度最高),經過特徵匹配後,在把它投射到圓柱面,可以找到較好的樣子。
**Computed Tomography 電腦斷層掃描**
在電腦視覺上重建影像的技術,主要分為五種方法:FBP、ART、SIRT、SART...。在拍x光時,通常是把人體拍成2D的樣子,而CT則是做成3D重建的樣子,MRT則是依據人體的水跟氧用磁場的排列,再去除磁場,比較前後的差異,可以判斷出身替的狀況。當身體內有金屬時,會擋住x光的判斷,且體內的水或空氣也會被x忽略,需要用MRI來檢測。
FBP,把每一個方向的投影回推到影像本身的地方,就可以找出對應資訊。但會有模糊成像,因此要再用filter去濾除調邊緣。
ART,用代數的方法去重建,對表的橫軸去做投影,每一行可以找出一個方程式,再解全部的聯立方程式,然後用ART去找趨近值。可以把ART視為,在M個平面之間,找到交叉點,那這些交叉點就是平面的影像。
SIRT,用ART修改而出,每次都考慮全部的Projection,全部加起來再取平均,但速度較慢。
SART,參考SIRT,但不是考慮全部,每次在做iter時,只考慮前面的投影,在動作時,order會逐漸變多,會比較規律、時間也較短些。
比較:
ART: 一次只計算一條(現在的)投影,SART計算現在以下的投影,SIRT則是計算全部
converge speed: ART, SART fast SIRT slow
**zero shot learning (和one shot learning的差異)**
目的是要教Machine如何去分類,人在第一次見到某件事物時,會先想像、猜測,因此教machine也是一樣,已有一些研究是藉由不同的特性去分群再學習,但條件是都需要專家來定義,因次太耗時且沒有效率,此篇paper便想用wiki來找出可能有的關鍵字定義。以往可能就是直接用CNN來做training、分類,但可能會因training的資訊不夠多,導致有bias存在、判斷錯誤。
後來發展出用cluster來做分群在分類,而效果相當不錯,但在在分群時,可能較不實用(因需要train很多不需要的資料)。
因此有了generative model來做,先train一個generator,再加上triplet pair loss(給三個點,隨機找sample,只要是不同物種就給negative pair,相同就positive pair),使分布上會較好(正的直拉近cluster,負的推遠一點)
1.用CNN生成seen的類別特徵
2.用seen的類別特徵訓練CVAE
3.從CVAE生成unseen的類圖像
4.使用seen的類別特徵訓練MLP並生成unseen的類圖像功能
結果: generative model是可以解決此問題,但還是會犧牲一些不同物種的prediction accuracy
More Exploration to Composable Infrastructure對可組合基礎設施的更多探索
電腦內部布局的方式,使現在的stored 的方式已經很好compose了,但memory 因為有一些條件限制,較難被compose。latency在記憶體中,會因為傳輸較遠就上升,因此不管傳輸的速度多快,只要距離越遠,問題都還是會在
且通常在使用記憶體中,會有50%是沒在使用(浪費/過剩),因此想參考virtual memory的概念,用過剩的memory來支援其他需要的工作
所以把free memory 用ramdisk block起來,然後用RDMA來share到client端來,那可在client swap in/out來呼叫使用,這就是此計畫主要的優化方式
在測試時,memory從16GB - 40GB -1TB,結果都可以提升速度,確保記憶體在任何大小都是可運用此方法。當一台server給比memory更大的工作量,確實能夠套用此方法
在benchmark時,用VoltDB/TPC-C,用來測database的performance。在看曲線圖時,可得知記憶體上的操作確實效能能夠較好
在分析AWS後,aws可以隨意決定規格,但不能任意compose記憶體的大小,假使要提升,cpu可能相對也要增加,也就是說aws在處理這方面的能力時,記憶體也有所限制,這也是此計畫想解決的潛力問題。