# 人工智慧視覺運算系統設計心得
B07901142 卓寧文
[TOC]
## Unit One:Basics Of AI Visual Algorithms
- 機器學習的原理就是量化圖片的特徵再觀察其中的關連,透過梯度法來將loss變低,但一昧的增加fully connected layers,在本影片中提到了從早期的大量fully connected layers演變為逐漸用cnn來取代。較為深入地探討影片中介紹的結構們,Google net加入了Inception的Layers,會產出不同方向及尺寸的運算,而ResNet提出了Residual layer的概念,用bypass來解決因為神經層過深而造成梯度消失的問題。
## Unit Two:How Does A Computer Classify Pictures?
- 電腦在偵測一張圖的物件時,除了要知道那是什麼,更重要的是要知道該物件在哪裡。本影片介紹了三種物件分類演算法,分別為RCNN、YOLO及SSD,RCNN的全名是叫做Region-based CNN,將圖片分成多個部分進行CNN但缺點為速度太慢,YOLO全名叫you only look once,採用one stage一次將整將圖片讀入CNN運算,透過bounding box及weighted grid來確認物體的位置,而SSD基本上為YOLO的進化改良版。
## Unit Three:How Does A Computer Detect Objects?
- 電腦將圖片分類最重要的就是學習相同類別的圖片有哪些特徵,但為了能分辨每張均含有目標物的圖片,圖片分類演算法必須具備無視圖片大小的能力,也就是Multi-scale detection,而除了在空間域的計算外,對於時間域的計算也十分重要,可以很好的refine我們的識別結果,透過連續圖片的讀入,建構出三維的CNN模型,另外物件辨識也在影像合成中佔了重要的地位,透過知道畫面中的物件為何,可以更好地進行合成與調色。
## Unit Four:How To Evaluate Performance Of AI Visual Algorithms?
- 用來評估演算法的指標有TP、FP、TN和FN,負荷指標有Precision 和 Recall mAP。Positive和 Negative代表偵測結果的正確與否。Precision等於TP/(TP+FP),Recall等於TP/(TP+FN),一般的演算法Precision和Recall會形成一個像右上凸起的曲線。除此之外也有很多專門評斷某一類別演算法之分數標準,如ROC曲線與AUC常用於評斷分類模型上,mAP, IOU用於物件偵測上等,AP-50 便代表以IOU = 0.5作為偵測成功之標準。也可以依據任務的不同去定義新分數計算來更好的展現模型在特定方面的能力
## Unit Five:How To Obtain An Accurate AI Algorithm?
- 將一個model訓練出來分成兩部分,Training和Inference,Training步驟在於藉由多次的迴圈去預測結果,並與正確結果一起丟入cost function,經由back propagation來調整模型內的權重,使模型收斂到越來越小。Inference便是應用層面,將資料丟進已經Train好的模型來快速得到結果,屬於一個函數概念。不過近年來雲端運算的興起,Inference這種相對較為輕便的工作就可以交給遠端計算,以後也不用買顯卡,5G萬歲。
## Unit Six:Advances Of Obtaining An Accurate AI Algrithm.
- 機器學習背後的數學基礎為gradient descent,為對一個weight及error的函數進行梯度運算,根據梯度決定調整參數的方向,此外,learning rate 為hyper parameter,用以決定每步的步長,較低的learning rate可以增加精度卻會增加訓練所需要的時間,新的參數即為向gradient descent的反方向走一步learning rate的倍數,但如果遇到local minimun則會困在原地走不出去,就是找不到真正的minimum。
## Unit Seven:How Well Are Modern AI Visual Algorithms Doing?
- generalization是神經網路面對unseen inputs的能力。training error是$$|W×X-y|^2$$ $X$,$y$是training的test(generalization),error是$|W×X-y|^²$ 。test的演算法多好就是取決在training error以及training error和test error的差異值。Capacity是一個模型的適應能力,太低會underfitting通常訓練時間就會拉長,太高會過度擬合訓練結果,而在test上表現的不太好
## Unit Eight:Advances For Colleeting Training Data
- 為了增加機器學習的精準度及避免過度擬合,我們常常會對圖片進行一系列的處理,例如灰階、隨機拉伸、變形、隨機裁剪來使得模型更加完善,在面對相似物時也可以一併將與其周遭的事物加進來幫助改進模型,我在其他課程中就有寫果數字辨識相關的作業,當時加了灰階的選項後預測成功率有著顯著的上升,推測原因為使用灰階後變成只注重輪廓而減少了RGB值對sliding window取值的noise。
## Unit Nine: Unit Nine:What Are Key Computations in AI Visual Algorithms?
- 本章介紹了機器學習關鍵運算四大類的其中一類,也就是Convolution,以一個sliding window對整張圖片進行局部的取值,能夠讓電腦"看"到局部特徵,從而將非相關的因素排除掉,並介紹了許多運算的細節與技巧,比如zero padding與stride德的計算。由於Convolution包含了大量的乘法與加法,因此對系統的運算能力形成了非常大的考驗。
## Unit Ten:Key Computations in AI Visual Algorithms (Ⅱ)
- 延續前章所講,本章將其餘三個技巧講完。第一個為pooling,為減少運算量的技巧,最常用的方法為max pooling,取值時取最大的那個當作代表值,從而在最低失真度下完成運算。Activation 則是用來增加非線性的結果,傳統上有兩種函數,一個叫做Sigmoid Function,另外一種為 Hyperbolic Tangent,這兩種函數都為連續平滑的,缺點也很明顯,對電路來說必須查表,因此精準度受到Table大小的影響,所以有第三種函數來解決這個問題,叫做Rectified Linear Unit,歪外還有一些變形,例如:Leaky ReLU & Exponential LU。至於Residual就是為了解決當梯度在convulution太深時會消失的問題,將前方的Output Featrue Map放進來一起再去做後面的運算就可以來解決梯度消失的問題,常見有兩種方法,一種是Element-Wise Addition,另外一種就是做Concatenation。
## Unit Eleven:What Are Major Concems foa an AI Visual Computing System?
- 此章主要是在講好的機器學習硬體架構需要具備的特徵,描述某些硬體屬性對運算速度的影響,Dram在運算中的重要性,為什麼較為平行的運算有助整體效率提升,並解釋了GPU比CPU更好做機器學習的理由,所以現在知道為什麼他也更好挖礦了,到底是要降價了沒,幹。
## Unit Twelve:Advanced Optimization Topics Of AI Visual Network.
- 本影片講述了SRAM和DRAM的比較與應用。SRAM存取速度比DRAM快上10倍,不過成本相對較高,通常是作為local buffer;而DRAM儲存空間較大,成本也較便宜,然而因為頻寬有限制,可能導致資料的阻塞,因此速度就比較慢一些。進行運算時,暫存空間越大,可以快速存取的資料就越多,相對的DRAM的頻寬需求就會降低,處理運算的速度會加快,但成本也會因此上升。
## Unit Thirteen:Platform Selection for AI Neural Networks
- DRAM Type需要謹慎地挑選,根據要訓練的模型所需的DBW,DRAM的頻寬是蠻重要的,因為其有固定的規格,且不易變更DRAM的規格,因此我們在設計架構的時候須審慎考慮傳輸量需求,並選擇能滿足需求的產品。特別注意 Theoretical Bandwidth 是一個峰值,理論上的最高上限,但是這個頻寬是沒辦法持續的。
## Unit Fourteen:Performance Comparison of Modern AI Networks in Urban Road Scenario.
- 此章節講述了幾種不同的演算法和相關的細節,另外,內容也提到目前的一大難點還是訓練用資料的標記,如果大量的資料都必須要使用手動的方式進行標記,會極度耗費時間。而從影片中看的出來近期在這方面也有許多進步,從一開始的手動操作,到後來以cloud-based的形式進行,再發展至影片串流的標記。
## Unit Fifteen:Automatic Labeling and Evaluation Tools
- 本影片介紹了iLabel和iEvaluate兩個工具。iLabel可以將欲處理的圖像自動化的進行標記,利用YOLOv3或是v4演算法進行。和過去人工標記的效率相比,每一張0.08秒的時間真的相當迅速。而對於這樣的標記工具,如果用人去觀察是否準確,其實也是相當費時費力的,因此iEvaluate就是設計用來進行效能評估的工具,分析標記的false positive及false negative等數值,判斷結果的品質優劣。對於AI的訓練來說,訓練樣本的多寡與品質會大大影響結果的準確度,因此有了這些工具以後,能夠有效率產生準確的training data,對於AI視覺演算法的進步是一大支柱。