---
# System prepended metadata

title: 電腦視覺與深度學習
tags: [' 電腦視覺', Lecture Note]

---

---
tags: Lecture Note, 電腦視覺
---

電腦視覺與深度學習
===
<style>
.ph_6 {
display     : block;       
margin-left : auto ;     
margin-right: auto;
width: 60%}
.ph_4 {
display     : block;       
margin-left : auto ;     
margin-right: auto;
width: 40%}
</style>
<DIV style="text-align:center">
    <font size=1 color=gray>Jenn-Jier James Lien / 連震杰 / jjlien@csie.ncku.edu.tw</font>   
</DIV>
<DIV style="text-align:center">
    <font size=1 color=gray>IP: 140.116.154.1 / Port: 21 / ID: opencvdl2020 / Password: opencvdl2020</font>
</DIV>

[Youtube Channel](https://reurl.cc/Md8Xbm)


## 09/11
<DIV style="text-align:center">
    <font size=4>----------------------------</font>
    <font size=5> 09/11 </font>
    <font size=4>----------------------------</font>
</DIV>

<DIV style="text-align:center">
    <font size=2>CNN, YOLO, CPS(Cyber Physical System)</font>
</DIV>
<DIV style="text-align:center">
    <font size=4>--------------------------------------------------------------------</font>
</DIV>

### CPS(Cyber-Physical System)
- 實體（Physical）：自然界中的或由人類製造的，遵循物理定理在連續的時間內運行的系統。
- 網絡（Cyber）：利用計算、通信、及控制系統進行的離散及邏輯化管理。
- 網絡實體系統：（Cyber-Physical System）：將實體與網絡的各個組成部分在所有層面和維度上緊密結合的系統，對實體及網絡進行對稱性的深入管理。
- 實例：
    - 目前研發的CPS系統有MIT的Distributed Robot Garden，這個花園裡有一群的機器人負責照顧番茄。這個系統結合了感測網路(每一株植物上都有感測器會去監控植物狀態)、 導航、機器人控制和 無線網路。
    - 另外一個MIT正在發展的CPS系統是CarTel 頁面存檔備份，存於網際網路檔案館計畫，這個計畫裡，有一隊的計程車會蒐集波士頓的即時交通資訊，路徑規劃就可以使用即時的交通資訊和歷史資訊規劃出最快的交通路徑。

### Classification(Reference to LeNet 1998)
- 1 個20*20pixel的圖辨識成數字0-9的例子
    <img src = https://i.imgur.com/NsW56k1.png class="ph">

    - input output 的個數都是看實際的條件給
    - 中間層(Hidden Layer)的神經元(Cell)個數靠經驗給予
    - 輸入的資料要收集、輸出要Label

- 但真實影像不會小到$20*20$，所以需要先進行Feature Extraction，也就是Down Sampling
    
    <img src = https://i.imgur.com/tE2AMws.png class="ph">
    - 所謂的5*3，前面的5指的是DownSampling 5次，3是指3層的神經網絡
- 但 Feature 有可能在DoenSampling中消失了為解決這樣的問題便提出下面的結構

    <img src = https://i.imgur.com/OrtIi9N.png class="ph">
    
    - 先進行DownSampling之後再進行UpSampling
    - 但是在UpSampling之後，可能會造成資訊量太大，所以UpSampling的層樹可以依照需求自訂。
    - 在UpSampling之後可能會有資料損失的問題，也因此將再進行DownSampling的資料接到DownSampling之中，這樣可以漸少資料損失的問題。
    - GAN -> Pridiction
    - Super-resolution
        清晰 -> 模糊 -> 清晰 訓練完成之後，便可以嘗試將模糊的圖形丟入，看能否修正至清晰的照片。

- 為了提升準確度，作了以下的調整。
    
    <img src = https://i.imgur.com/2RBKV65.png class="ph">
    
    將每一層的結果都放入CNN訓練，但這樣會有feature重複擷取到的問題，因此便用了NMS(Non-Maximum Suppression)，將重複取到的殺掉
    
### YoLo-v4

<img src = https://i.imgur.com/yj1hOEV.png class="ph">

- 資料夠多才可以train
- 在第一次的downsampling的時候可能會在最後一層損失很多資料，所以將第一次的downsampling在完成至第三層時，拉至第二次的downsampling減少資料損失的情況。
    

------------------------------------------------------

## 09/18
<DIV style="text-align:center">
    <font size=4>----------------------------</font>
    <font size=5> 09/18 </font>
    <font size=4>----------------------------</font>
</DIV>
<DIV style="text-align:center">
    <font size=2>IMG format, Filter</font>
</DIV>
<DIV style="text-align:center">
    <font size=2>CH2,  SDK v.s. API</font>
</DIV>
<DIV style="text-align:center">
    <font size=2>CH1, Opencv History, Deep Learning History, Reinforcement Learning</font>
</DIV>
<DIV style="text-align:center">
    <font size=4>--------------------------------------------------------------------</font>
</DIV>

### OpenCV History
<img src = https://i.imgur.com/KtI3s8s.png class="ph">

### Deep Learning History
<img src = https://i.imgur.com/mYkH6Fk.png class="ph">

### Reinforcement: Neural network learning category
1. Supervised Learning: PCA, LDA
    - 給定input 和label (target) 的學習方式。
2. Unsupervised Learning: VQ
    - 只給定input，學習input data 間的關係，可用來分群。
3. Semi-Supervised Learning
    - 給定少部分資料有label，大部分資料沒label，使沒label的資料得到對應的label。
4. Reinforcement Learning: Self-Supervised
    - 在學習過程中設立reward (with environment)，藉由reward機制自我學習
    - need policy (brain of agent) as rule for agent to learn。

### SDK v.s. API
- OpenCV 底層是C C才方便跟硬體溝通
- Python 底層是 C++, C++ 底層是 C , 所以加速器才重要。
- SDK (Software Development Kit)
    翻譯成中文就是"軟體開發工具組"
    是用來幫一個產品或平台開發應用程式的工具組，由產品的廠商提供給開發者使用的。
    通常是某一家廠商針對某一平台或系統或硬體所發佈出來用以開發應用程式的工具組，在這個工具包裡面，可能包含了各式各樣的開發工具，模擬器等。
    例如：給Android平台使用的Android SDK 就是用來開發Android系統上面的應用程式。
- API (Application Programming Interface)
    翻譯成中文就是"應用程式介面"，其實這樣翻譯不太直觀。
    翻譯為介面，顧名思義就要溝通兩隻不同的東西用的，通常由一組函式所組成。
    在同一個平台下的兩個不同東西(程式or 系統)，為了能取用對方的功能等等，所以一個X程式寫了一組函式，讓同一平台的其他程式取用X程式的功能，那組函式就可以說是那個X程式對外開放的API。
    甚至是系統呼叫，因為作業系統的任務就是管理好電腦的各種資源，所以程式需要資源時必須跟作業系統溝通，申請使用某某功能等等，稱為系統呼叫(調用)。
    系統呼叫的時候也是取用OS作業系統提供的API。
    例如：我要在自己的網頁加入google map提供的功能，就使用"google map API“
- 通常SDK(開發者工具包) 裡也會帶有很多API ，用來調用一些系統平台程式提供的功能
    例如說：視窗顯示，圖形特效等等。
    以下舉一個實際例子來說明，調用系統程式功能的API 是怎麼一回事
    開發Windows應用程式的SDK(開發者工具包) 裡就包含Win32 API
    說明： Win32 API 是一個函式庫，可以給Windows應用程式調用Windows系統的功能
- 在PTT看到有人問了差異性，我的看法是
    SDK是用來開發某一個平台的程式的工具包(J: Toolkit)，API 是讓同一平台下的程式取用它的功能的函式庫
    
### Image Format
<img src = https://i.imgur.com/6KLmPaw.png class = "ph_8">

- Grayscale 影像強度 0-255  8bit

<img src = https://i.imgur.com/UiUShRs.png class="ph_8">

- BITMAP
    - Including black-and-white (1-bit per pixel), gray value (2 , 4 or 8 bits), colorful ($8*3=24$ or $8*4=32$ bits).
    <img src = https://i.imgur.com/zsdylfw.png class="ph">
    - <font color = red>1) BITMAPFILEHEADER (Bit Map File Header), 14 Bytes</font>
    - <font color = green>2) BITMAPINFOHEADER (Bit Map Info Header), 40 Bytes</font>
    - <font color = blue>3) RGBQUAD (RGB Quad, palette), 256*(3+1) Bytes</font>
 
### Filter
#### High pass Filter
特徵：sum = 0
應用：銳利化
<img src = https://i.imgur.com/oFAvg6w.png class="ph">
- Step 1 :將照片變成灰階。
- Step 2 :將照片的影像透過Filter轉換成邊緣影像
<img src = https://i.imgur.com/0zEFWBG.png class="ph">
- 濾波器，cols and rows 要為奇數才會有中心點, Deep learning 最多只用到7*7, 大多都3*3。
- 影像座標左上為(0,0)
- Vertical for 垂直方向的線， Horizontal for 水平方向的線，均為偵測邊緣，而在計算時 需要計算出 $M=\sqrt{G_x^2+G_y^2}$ 或是 $M=|G_x|+|G_y|$，若M越大，則該點便在邊緣。
- 經過濾波之後，邊緣像素損失，這樣的情況該如何解決？
    - Shift(Stride)
        指的是間隔幾個pixel算一次，通常是Stride 1，如果 Stride 2，則意旨每隔2格算一次，這樣的話中間會損失一個的資料量，但是在運算上會減少為1/4倍。
    - padding
        Ex: $3*3$ 會損失外圍1層的pixel，所以padding 1指的意思即為在外圍補上1個pixel的數值，補的方式有兩種，通常是將原圖的最外圈補上，或是直接補0。 
- High Pass Filter = Gradiant
    I(x,y) = GrayValue of (x,y) 介於 0 ~ 255
    \begin{gather*} \frac{\partial I(x)}{\partial x} = \lim\limits_{\Delta x\to 0} \frac{I(x+\Delta x)-I(x - \Delta x)}{2 \Delta x}\end{gather*}
    
    where
    \begin{gather*} x+1 = x-(-1) \end{gather*}
    而
    <DIV style="text-align:center">
        <span class="black"> x  表示位置</span>
    </DIV>
    <DIV style="text-align:center">
        <span class="black"> -  表示位移</span>
    </DIV>

    整理過後可以表示成
    <img src = https://i.imgur.com/2uZoBYQ.png class = "ph">
    
#### Low pass Filter
特徵：sum = 1
應用：平滑
<img src =https://i.imgur.com/0ARNKZF.png class="ph">

#### Correlation Matrix V.S. Convolution Matrix
<img src = https://i.imgur.com/g0E2sNg.png class = "ph">

- Convolution Matrix 把 Correlation Matrix 顛倒過來

### Singular value decomposition 分布點
<img src = https://i.imgur.com/S8sv7Qo.png class="ph">

A distribution of points in two dimensions with superimposed ellipsoids representing Mahalonobis distances of 1.0, 2.0, and 3.0 from the distribution’s mean

- Eigen value = 標準差
- Eigen vector = 軸 = 旋轉量
- Eigen space = 轉換之後的空間

### Introduction of Deep Learning
<img src = https://i.imgur.com/tJ8RbmW.png class = "ph">

- Computer Vision + Artificial Intelligence = Machine Learning
- Machine Learning obey Baye's theorem(貝氏定理)

Deep Learning 將 Machine Learning 中兩個觀念帶入：
1. SVM: Non-linear discrimination
    將資料點投影至高維度，再以線性切割，但計算笨重
2. AdaBoost: Feature extraction by filter convolution

Deep Learning 主要有四個特點：
1. Non-linear discrimination 
    分類
2. Prediction (extrapolation)
    外插(外插有三個方法：Auto-encoder, GAN, RNN)
3. Self-Learning (reinforcement learning)
4. Customization
    EX: OK,google


------------------------------------------------------
## 09/25
<DIV style="text-align:center">
    <font size=4>----------------------------</font>
    <font size=5> 09/25 </font>
    <font size=4>----------------------------</font>
</DIV>
<DIV style="text-align:center">
    <font size=2>Filter, Convolution, Smoothing, 神經元, Deep Learning </font>
</DIV>
<DIV style="text-align:center">
    <font size=4>--------------------------------------------------------------------</font>
</DIV>

### Filter(kernel)
####  Sobel derivative
<img src = https://i.imgur.com/mc0c3cz.png class = "ph">

- A 3-by-3 kernel for a Sobel derivative; note that the anchor point is in the center of the kernel
- We can, of course, express this procedure in the form of an equation. If we define the image to be I(x, y), the kernel to be G(i, j) (where 0 < i < 1 and 0 < j < 1), and the anchor point to be located at (ai , aj) in the coordinates of the kernel, then the convolution H(x, y) is defined by the following expression:
    \begin{gather*} H(x,y)=\displaystyle\sum_{i=-1}^{1}\displaystyle\sum_{j=-1}^{1}I(x+i,y+j)G(i,j)\end{gather*}
#### Scharr Filter
<img src = https://i.imgur.com/WauUcoS.png class="ph">

The Scharr filter is just as fast but more accurate than the Sobel filter, so it should always be used if you want to make image measurements using a 3-by-3 filter

#### Laplace Filter
<img src = https://i.imgur.com/q2Wx6b7.png class = "ph">

- 1st order 偵測邊緣+角落
- 2nd order 偵測角落
    \begin{gather*} 
    Laplace(f)≡  \dfrac{\partial^2f}{\partial x^2} + \dfrac{\partial^2f}{\partial y^2}
    \end{gather*}

#### Canny Filter
- **Step 1 Image convert to Grayscale**
    <img src = https://i.imgur.com/bDfNvN4.png class ="ph">
    - cvtColor( image, gray_image, CV_BGR2GRAY)
    - RGB 轉換到R,G,B三個色相的強度，所以變成3個色相的array。
- **Step 2 Smoothing: Noise Reduction (Smoothing)**
    - Using Gaussian filter, 用$3*3$就可以了。
    <img src = https://i.imgur.com/M28UUMg.png class = "ph_2">
- **Step 3 Edge Detection: Compute Gradient Magnitude and Angle using Sobel**
    \begin{gather*} D= \sqrt{D_x^2(x,y)+D_y^2(x,y)} \end{gather*}
    \begin{gather*} \theta = arctan(\dfrac{D_y(x,y)}{D_x(x,y)}) \end{gather*}
    <img src = https://i.imgur.com/Dca2Ndk.png class="ph">
    ```
    if (M>thereshold)
        keep
    else
        0
    end
    ```
    - 只保留大於臨界值的數值
    - 但這樣的結果會因為此filter 是 $3*3$ 所以會多一個pixel。
    <img src = https://i.imgur.com/YqVAIZA.png class = "ph_2">
- **Step 4 Thinning: Non-Maximum Suppression**
    <img src = https://i.imgur.com/1tjrOhh.png class = "ph_4">
    - Filter 之後出來的數值，會有多一個pixel的問題。
    - Choose edge, 在方格內有任何鄰居比本身大就殺掉本身。
        ```
        if e(x,y)>2*Thereshold
            edge
        else
            go to step 5
        end
        ```
    <img src = https://i.imgur.com/OmT2hM4.png class = "ph_2">
    
    - 再將多餘的pixel 去掉之後，便會有斷斷續續的線段產生。
- **Step 5 Connectivity: Hysteresis Thresholding: Low and High Thresholds**
    - 在 Non-maximum suppression 之後會有斷斷續續的線段產生，step 5 的目的便是將線段銜接起來。
    - 中間是edge，edge周圍已經被殺掉的數值若比臨界值還大，但比edge值還要小，判斷是否要回填，則看外圍一圈是否有數值，有的話便將數值回填並連接在一起。
    <img src = https://i.imgur.com/VJqoxCj.png class = "ph_2">
### Smoothing operations
<img src = https://i.imgur.com/MvUxi4P.png class = "ph_8">

- CV_BLUR <img src = https://i.imgur.com/cVbIIky.png class = "ph_4">
- CV_BLUR_NO_SCALE <img src = https://i.imgur.com/wEfE3C5.png class = "ph_4">
- CV_MEDIAN
    - use for pepper and scale noise
    - 9個排序取中間
- CV_GAUSSIAN
    - use for white noise(gaussian noise)
    -  is probably the most useful though not the fastest.
    -  \begin{gather*} w(x,y,i,j)=e^{\dfrac{-1}{2}\displaystyle\sum_{i}\sum_{j}\dfrac{||I(x,y)-I(i,j)||^2}{\sigma^2}}\end{gather*}
    -  差異越大，影響越大。 
- CV_BILATERAL
    - \begin{gather*} w(x,y,i,j)=e^{\dfrac{-1}{2}\displaystyle\sum_{i}\sum_{j}\dfrac{||(x,y)-(i,j)||^2}{\sigma^2}}\end{gather*}
    - 距離越大，影響越大。

Noise分成兩種
- white noise：(鄰居)
- pepper and scale(中間一點一點)

### 神經元
<img src = https://i.imgur.com/G0KNHfE.png class ="ph">

### Deep learning
<img src = https://i.imgur.com/4jP0bF8.png class ="ph">


## 10/16
<DIV style="text-align:center">
    <font size=4>----------------------------</font>
    <font size=5> 10/16 </font>
    <font size=4>----------------------------</font>
</DIV>
<DIV style="text-align:center">
    <font size=2> </font>
</DIV>
<DIV style="text-align:center">
    <font size=4>--------------------------------------------------------------------</font>
</DIV>

### OpenCV Useful Tool

#### Morphology
在影像特徵擷取上，若是在動態處理之過程中，可能會在物體邊緣上會有偵測不完全或是邊緣損失的問題，也應此需要用Morphology來調整，而調整法有以下三種。
##### Dilation
<img src = https://i.imgur.com/fVdVwib.png class = "ph_6">

- 原始圖像為左邊的A ， Dilation 的意思即為將原使圖像擴增，而擴增法為，在原始圖像中各點在今過filter之後，只要filter 過的數值，其數值及變為1。
- 但這樣處理之後的圖像會變胖，可調整其判斷為1的條件。
##### Erosion
<img src = https://i.imgur.com/PYuznHW.png class = "ph_6">

- 原始圖像為左邊的A ， Dilation 的意思即為將原使圖像縮減，而縮減法為，在原始圖像中各點在今過filter之後，只要filter 過的數值，若其邊緣有出現0，則將此元素化簡為0。
- 目的：將連接的物體分割出來，或是將邊緣平順畫。

##### Dilation + Erosion
<img src = https://i.imgur.com/jOKx7Nn.png class = "ph_6">
<img src = https://i.imgur.com/rzvkHpq.png class = "ph_6">

通常Dilation Erosion 會互相搭配使用

#### Flood Fill
<img src = https://i.imgur.com/Ua7vujd.png class = "ph_6">

用途：將所選到的面積填滿已進行下一步的計算。
也可以用以去除陰影。
```python
void cvFloodFill(
 IplImage* img,
 CvPoint seedPoint,
 CvScalar newVal,
 CvScalar loDiff = cvScalarAll(0), 
 CvScalar upDiff = cvScalarAll(0),
 CvConnectedComp* comp = NULL,
 int flags = 4,
 CvArr* mask = NULL
);
```

#### Resize
cvResize() interpolation options
| Interpolation   | Meaning                |
| --------------- | ---------------------- |
| CV_INTER_NN     | Nearest neighbor       |
| CV_INTER_LINEAR | Bilinear               |
| CV_INTER_AREA   | Pixel area re-sampling |
| CV_INTER_CUBIC  | Bicubic interpolation  |

Interpolation 內插 <=> Super-resolution


```python
void cvResize(
 const CvArr* src,
 CvArr* dst,
 int interpolation = CV_INTER_LINEAR
);
```
<img src = https://i.imgur.com/SvMBgwE.png class = "ph_6">
<img src = https://i.imgur.com/zoztucK.png class = "ph_6">

<img src = https://i.imgur.com/8RVwbPo.png class = "ph_4">
<img src = https://i.imgur.com/YH9BlrK.png class = "ph_4">

### UpSampling
The Gaussian pyramid and its inverse, the Laplacian pyramidv
![](https://i.imgur.com/wGU7TUc.png)

### Adaptive Threshold
<img src = https://i.imgur.com/Q5FM37b.png class = "ph_6">

以往在判斷黑與白是利用所有的像素的灰階值加起來除以總像素個數，並調整其上下借作為判斷黑與白的依據，而這樣的計算方法會很容易受到陽光影響，Adaptive Threshold改成將照片分成區塊，以區塊的平均作為其判斷黑與白的依據。

### Deeplearning
1. Step 1. Network Structure
2. Step 2. Learning target
3. Step 3. Learn


---
## 10/23
<DIV style="text-align:center">
    <font size=4>----------------------------</font>
    <font size=5> 10/23 </font>
    <font size=4>----------------------------</font>
</DIV>
<DIV style="text-align:center">
    <font size=2> </font>
</DIV>
<DIV style="text-align:center">
    <font size=4>--------------------------------------------------------------------</font>
</DIV>

### Hough Transforms
將物體座標轉變成極座標，用以偵測直線或圓弧

### Projection
<img src = https://i.imgur.com/egOGz04.png class = "ph_8">

### LogPolar
For two-dimensional images, the log-polar transform is a change
from Cartesian to polar coordinates: ![](https://i.imgur.com/tJyqtUp.png)![](https://i.imgur.com/SfNTmBE.png)

### Integral Images
快速算面積的方法
<img src = https://i.imgur.com/aYmrWXA.png class = "ph_8">
<img src = https://i.imgur.com/YVDXd42.png class = "ph_8">
25=20+3+3-1
80=50+8+25-3
如果要算黑色區域的面積的話，則先算出右邊的矩陣，則黑色區域面積即為：398-9-10+1=380

### Histogram Equalization
<img src = https://i.imgur.com/PrcCCAx.png class = "ph_8">
可用此決定在矩陣中何者參數是較為重要的，如果較重要的話則曾增加其weighting反之則抑制

<img src = https://i.imgur.com/LWf8jZd.png class = "ph_8">

### NN
activation function 是為了將結果調整至0-1 之間，並且將是與否的結果分開

基本上所有的學習方法，都是為了要減少輸出與ground truth之間誤差的大小 那方法有兩種，如果資料點是離散也就是各點之間並沒有關係的話可以使用 $ylogy'$判斷誤差，如果狀態點是連續的話可以使用min $(x-y)^2$

---
## 10/30
<DIV style="text-align:center">
    <font size=4>----------------------------</font>
    <font size=5> 10/30 </font>
    <font size=4>----------------------------</font>
</DIV>
<DIV style="text-align:center">
    <font size=2> Deep Learning </font>
</DIV>
<DIV style="text-align:center">
    <font size=4>--------------------------------------------------------------------</font>
</DIV>

### Machine learning 
- supervised learning
    - -labeling
        - 需要花很多時間labeling
- semi - supervised learning
    - label一點點(1%)
    - 將label 與 unlabel 的資料放進去學習，可以利用 label 過後的資料判斷是否有分類錯誤，或是檢測各種的資料會被分類到哪裡
    - 以語音來說，每個人所說的話可能會有各自的gradient ，以此判別說使用者為何。
- un-supervised learning
    - 不用label 要說分幾類
    - 分類出來的結果可能會有錯誤

### Loss function
- Mean squared error
- Cross entropy
![](https://i.imgur.com/UJ3F16O.png)


### Batch Learning
![](https://i.imgur.com/T13vRrU.png)
一般可取學習速率除以訓練範例數目平方根，實例證明，BP 通常逐利學習優於批次學習

### Learning
- Gradient Descent
    - 初始直很重要(EM 法)
    - ![](https://i.imgur.com/sipGal0.png)
    - ![](https://i.imgur.com/TIuQE9R.png)

### Keras
![](https://i.imgur.com/oMVJhrL.png)
![](https://i.imgur.com/siZrJHe.png)
![](https://i.imgur.com/sadiWCy.png)
![](https://i.imgur.com/dQCzNTQ.png)
![](https://i.imgur.com/rUfTMHW.png)

### Opencv
- AI 最重要的是 貝氏定理
- $P(F|I)$ 正比於 $P(F)P(I|F)$
    - $P(F|I)$ = Posterior
    - $P(F)$ = Prior
        - 事先機率 - 環境
    - $P(I|F)$ = Likehood = Similarity Measure
        - Texture - GrayValue
            - SSD![](https://i.imgur.com/DVHa1eT.png)   -> NCC
            - ![](https://i.imgur.com/5JumFph.png)
        - Shape - Contour
        - Color
    



---
## 11/06
<DIV style="text-align:center">
    <font size=4>----------------------------</font>
    <font size=5> 11/06 </font>
    <font size=4>----------------------------</font>
</DIV>
<DIV style="text-align:center">
    <font size=2> Deep Learning </font>
</DIV>
<DIV style="text-align:center">
    <font size=4>--------------------------------------------------------------------</font>
</DIV>



## Other_stuff
### Glossary
- **IOT** (Internet of things)
    是一種計算裝置、機械、數位機器相互關聯的系統，具備通用唯一辨識碼（UID），並具有通過網路傳輸數據的能力，無需人與人、或是人與裝置的互動。
    物聯網將現實世界數位化，應用範圍十分廣泛。物聯網可拉近分散的資料，統整物與物的數位資訊。物聯網的應用領域主要包括以下方面：運輸和物流、工業製造、健康醫療、智慧型環境（家庭、辦公、工廠）、個人和社會領域等。
- **ERP**（Enterprise Resource Planning）
    企業資源計劃或稱企業資源規劃簡稱，應具備以下功能：基本資料與管理維護、庫存管理、採購進貨管理、配銷管理、財務管理、人資/事務管理、生產管理與決策支援管理等系統功能..
- **SCM**(Supply Chain Management)
- **PLM**(Product LifeCycle Management)
- **MES**(Manufacturing Execution System)
- **TIA**(Totally Integrated Automation)
- **ISP**(Image Signal Processing)
    HDR(High Dynamics Range)
    Stabilization
    Panorama
- **OpenMP** (Open Multi-Processing: Parallel Processing):
    Multi-Cores CPUs, GPUs or DSPs
- **OpenCL** (Open Computing Language):
    Cross CPU + GPU + DSP + FPGA
- **GAN**(Generative Adversarial Networks)
- **dpi**(dots per inch)

### Computer Vision and Deep learning Relative Conferences and Journals
- **Conference – CV and Deep Learning:**
    - <font color = red>CVPR</font>: Computer Vision and Pattern Recognition
    - <font color = red>ICCV</font>: International Conference on Computer Vision
    - ECCV: European Conference on Computer Vision
    - ACCV: Asian Conference on Computer Vision
    - <font color = red>NeurIPS</font>: Advances in Neural Information Processing Systems 
    - <font color = red>ICML</font>: International Conference on Machine Learning 
    - <font color = red>arXiv</font>

- **Conferences - Robot:**
    - <font color = red>IROS</font>: IEEE International Conference on Intelligent Robots and Systems
    - <font color = red>ICRA</font>: International conf. on Robotics and Automation
    - <font color = red>SMC</font>: IEEE International Conference on Systems, Man, and Cybernetics

- **Journal – CV and Deep Learning:**
    - <font color = red>IJCV</font>: International Journal on Computer Vision
    - <font color = red>IEEE tPAMI</font>:
    - Image and Vision Computing
    - <font color = red>IEEE tVisualization and Computer Graphics</font>
    - <font color = red>SIGGRAPH</font>:
    - Pattern Recognition
    - IEEE tIP
    - IEEE tCSVT
    - IEEE tMM

- **Journal – Robot:**
    - IEEE tRobotics and Automation