---
# System prepended metadata

title: 實習日記10/24~10/28
tags: [實習日記]

---

---
tags: 實習日記
---
# 實習日記10/24~10/28
[TOC]

## 10/24
1. 開會
2. 柏林建議可以找這本書來看，有更多 ai 的內容可以玩
![](https://i.imgur.com/d9LO67z.png)
- 工研院的轉正和 ocr 模型就是用 pytorch 寫的
3. 研究工學院車牌辨識報告
```
Yolo 的優點
```
- 免去RegionProposal步驟，直接用CNN進行Regression，速度很快
```
Yolo 的缺點
```
- 預測物件的總數受限於Grid的總數
- 能夠辨識物件的種類很少
- 面積占比小的物件因為IOU小，準確率很低
    - 之前的專題曾經想使用yolo來抓高爾夫球，正是因為小物件準確度很低，所以無法成功抓取到。
- 群體小物件，例如鳥群，只能檢測其中一個，準確率很低

- 影像辨識的種類
    - 標記麻煩程度：實例分割>語意分割>物件偵測>物件分類
    - 資訊量：實例分割>語意分割>物件偵測>物件分類
4. 標籤什麼照片要等公司處理好影像，我才有辦法做標籤
5. 看第3點的書

## 10/25
1. 研究利用via標籤
![](https://i.imgur.com/dywsa92.png)
### 練習成果
```
第一張
```
![](https://i.imgur.com/CkxU1aZ.jpg)
- 用正向長方型標記，並加上車牌號碼的訊息。

![](https://i.imgur.com/YI1vcnV.jpg)
- 左上顯示車牌號碼資訊
![](https://i.imgur.com/IGca8Lm.jpg)
- 輸出json檔案

```
第二張
```
![](https://i.imgur.com/u31FByz.jpg)
- 使用任意四邊形標記
![](https://i.imgur.com/d1P9Nfs.png)
- 車牌標記成功
![](https://i.imgur.com/Hky2NaH.png)
- 輸出json檔案

![](https://i.imgur.com/wsSY3UT.jpg)

![](https://i.imgur.com/U0lc1xD.jpg)


2. 看pytorch的書和其他pytorch相關資料
3. 參考資料
- https://www.youtube.com/watch?v=-3WVSxNLk_k
- https://medium.com/pyladies-taiwan/%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92%E6%96%B0%E6%89%8B%E6%9D%91-pytorch%E5%85%A5%E9%96%80-511df3c1c025

## 10/26
1. 繼續了解pytorch
    a. Deep learning framework
    b. 以Python優先的深度學習框架(對Python的支援性高)
    c. 人工智慧(Artificial Intelligence)：電腦與機器模仿人類思考進而模擬人類的能力與行為(較大的集合)
    d. 機器學習(Machine Learning)：從資料中學習分析獲得規律，並利用獲得的規律對未知的資料進行預測 (為人工智慧的子集合)
    e. 深度學習(Deep Learning)：以神經網路為架構，對資料進行特徵學習的演算法(為機器學習的子集合)
    ![](https://i.imgur.com/e1CIrsS.png)

2. 看programing pytorch for deep learning
3. 練習基本pytorh的程式語法
4. 參考資料：
- https://www.readfog.com/a/1633738521353228288
- https://medium.com/ching-i/pytorch-%E5%9F%BA%E6%9C%AC%E4%BB%8B%E7%B4%B9%E8%88%87%E6%95%99%E5%AD%B8-ac0e1ebfd7ec
- https://ithelp.ithome.com.tw/articles/10244106
- https://www.youtube.com/results?search_query=pythorch

## 10/27
1. 讀工研院course02
### 簡單重點整理
- 機器學習與傳統規則模型十分不同
    - 傳統規則模型: 人工尋找資料規律並訂定規則，規則須明確闡明，使得機器足以根據規則下判斷
    - 機器學習模型: 資料驅動規則訂定，準備大量資料並使用數學模型歸納規則，規則通常難以明確闡明
    - 機器學習模型永遠使用最簡單的方式完成我們準備的考卷
- 張量 tendsor,ndarry
    - Scalar:0-dim tensor
    - Vector:1-dim tensor
    - Matrix:2-dim tensor
    - Tensor:3-dim tensor
- 從立體空間到平面影像
    - 物體被拍攝後會從三維影像變成二維影像，有很多轉換形式可以解決，有些複雜
        - 透視投影
        - homographic matrix
        - 平移
        - 旋轉
        - 等比縮放
        - 非等比縮放
        - 仿射轉換
        - 透視轉換
- SWAG vs. Yolo
    - Yolo也可以框車號，但每個數字英文都要標，並註明他的類別，十分麻煩
2. 盡力了解course2裡面的數學和公式
3. 看programing pytorch for deep learning

## 10/28
1. 研究工研院course3
2. 看programing pytorch for deep learning
```
重點整理
```
### Overfitting:
- 訓練資料當中學習到錯誤的規則，這些規則在訓練資 料內或許成立，但實際考慮訓練資料以外的情況則否
- 模型的 能力越來越強時，訓練資料上的準確率越來越高，但是在測試資料的 準確率卻越來越低
![](https://i.imgur.com/f3xDuDy.png)
### Solution of overfitting
1. 正規化: 在 cost function 的後面增加一個懲罰項
![](https://i.imgur.com/Nw8VsOB.png)
2. Early Stop: 在每一個 epoch 結束時計算驗證集（validation data）的準確率，當準確率不再提高就停止訓練
![](https://i.imgur.com/iZEoUrD.png)
3. Augmentation:考慮洽當的資料增量，可以以少量資料模擬多量資料的效果，當資料 越來越多時，縱使模型能力很強也不容易過擬合
![](https://i.imgur.com/HKvGKUy.png)
4. Cutout:強迫模型多學幾種額外的特徵
![](https://i.imgur.com/eMy9Gdz.png)
使用類似high availablity的觀念，強迫模型多雪幾種特徵
5. Random Padding:YOLO有時候會框歪物件，導致後面的模型辨識效果不佳，不如我們一開始就假設YOLO會框歪，將此效果直接加入YOLO後面 模型的資料增量
6. Random Perspective:轉動車牌的角度，增加不同的特徵
![](https://i.imgur.com/fh9ad0B.png)

### Hyper-parameter Tuning Tips
1. 調整增量程度的參數專有名詞為超參數(hyper-parameters)，為了避 免與模型內的參數(parameters)混淆，模型以外的參數都稱超參數
2. 資料增量手法眾多(上面所提到的6個方法)，會留下許多的超參數，這些超參數因為不可微分 ，無法使用先前的梯度下降(gradient descent method，之前訓練模 型內參數的方式)進行最佳化
3. 超參數可分為重要與不重要，代表其數值對於模型準確率影響的程度 ，不重要的參數不管怎麼設對準確率都沒什麼影響，重要的參數要設 得正確才能達到高準確率
### Solution of Hyper-parameter 
1. 網格搜尋 (grid search):使用網格搜尋每次只搜尋一個維度，剩下N-1個維度皆為一樣的數值， 若搜尋的維度為不重要的，那就浪費了計算資源只是得到類似效果的 模型
2. 網格搜尋 (grid search):使用隨機搜尋可以在每個維度都嘗試不一樣的數值，探索空間的程度 更高
3. 貝式最佳化 (Bayesian optimization):貝式最佳化基於統計學的貝氏理論，特 色為一邊蒐集資訊一邊做決策。在現有 最佳超參數附近，加上考量不確定性來 決定下一輪該嘗試什麼![](https://i.imgur.com/M9g53ek.png)

5. 增強式學習 (reinforcement learning):增強式學習直接將最佳化當作機器學習 問題處理，特色為可以直接處理不可微 分的問題，以模型準確率為獎勵，尋找 最佳化超參數以獲取最大獎勵
### Object Detection
1. 準確率為衡量模型預測與正確答案之間的差異
2. 物件偵測任務對應的標記為每個畫面中有數個方框，每個模型預測的方 框還包含信心值，而正確答案則無
3. 定義物件有沒有被模型偵測到，需大於信心門檻值TYOLO
4. 定義物件有沒有被正確偵測到，通常使用IoU進行衡量，IoU大於門檻 值TIoU才能視為正確偵測
![](https://i.imgur.com/dAFWFpY.png)


### Recall and Precision
1. ![](https://i.imgur.com/KF1Gmbs.png)
2. 在不同信心門檻值下，模型預測結果也會跟著改變
- 信心門檻值越高，物件容易被門檻值濾掉，模型偵測到的物件越少 Precision很高不會多判，recall很低容易漏判
- 信心門檻值越低，物件信心值容易過門檻，模型偵測到的物件越多 Recall很高不會漏判，precision很低容易多判
### 同時考量各種信心值且也同時考量recall及precision，該怎麼做?
- Mean Average Precision
1. Consider rank position of each relevant doc(-K1,K2,....KR)
2. Compute Precision@K for each K1, K2, … KR
3. Average precision = average of P@K, for each K
![](https://i.imgur.com/wwVo5qJ.png)

![](https://i.imgur.com/uu3VIcj.png)

4. AP也可解釋成precision-recall curve中曲線下的面積
![](https://i.imgur.com/gI1P35D.png)

![](https://i.imgur.com/EHAfuWq.png)
- 參考資料
1. https://ithelp.ithome.com.tw/articles/10203371
2. https://www.youtube.com/watch?v=pM6DJ0ZZee0
3. https://medium.com/lifes-a-struggle/mean-average-precision-map-%E8%A9%95%E4%BC%B0%E7%89%A9%E9%AB%94%E5%81%B5%E6%B8%AC%E6%A8%A1%E5%9E%8B%E5%A5%BD%E5%A3%9E%E7%9A%84%E6%8C%87%E6%A8%99-70a2d2872eb0