---
# System prepended metadata

title: 影像辨識
tags: [計算智慧與規劃, 實驗室課]

---

# 影像辨識
###### tags: `實驗室課`  `計算智慧與規劃`

https://colab.research.google.com/drive/1IX2dPYxK_iETbgeanmwVLgBf0o6HnEDe#scrollTo=5ebVIY5HQQH7

https://colab.research.google.com/drive/12V3kJwa4ojsIAFBtZwJt8GLEk7fgSELX

### 學姊程式碼
- [Convolutional Neural Network](https://colab.research.google.com/drive/1IX2dPYxK_iETbgeanmwVLgBf0o6HnEDe?authuser=1)
- [Object detection](https://colab.research.google.com/drive/12V3kJwa4ojsIAFBtZwJt8GLEk7fgSELX?authuser=1#scrollTo=D9IwDpOtpIHW)

### 套件
- keras
- PyTorch: 可以在訓練中變更程式而不中斷
- kuda?
### 步驟
- trainning -> validation -> testing
- validation
  - 學習資料不代表全世界，避免 overfitting
  - 把training或testing (即所有 data)再切一部份資料變成validation
  - 自動ten for class validation 輪播做10次(假如總共100筆資料，分成10筆 -> 做訓練 -> 檢查平均效能)
  - 決定做到甚麼程度(平均效能)就停下來，找交集
  - 把training和validation放一起去訓練 (資料量變的很多)
  - 所有data分成3分(有比例)


---
-  x 是data 
-  y 是label
- convolution: 角度固定，所以容錯率差
- regression & classifation -> generation
- deep learning: 用少量資料做訓練，因為DL層數變多，可以用少資料產生更多資料 (有很多種作法，如旋轉平移放大縮小(RST))
- 有時候要找到符合自己訓練需求的資料很難
- 資料增強，資料量少通過旋轉等步驟變多
- tensorflow有自己的格式，所以要先將讀入的照片做轉換
- tenaorflow.ToPILImage()讀取圖片
- tenaorflow.Random
- 把4個func丟進1個list
- [drop out](https://www.itread01.com/content/1547209261.html)
- 如果是CNN 最好用rst等方法增加資料量
- batchnorm: 正規化，因為conv後數據可能就不是0~1，要正規化才能做下個步驟
- 要確定做了哪些參數變成幾張圖
- fully connected?
- 自動調超參數，權重是學出來的



#### 決定filter一次移動多少 conv2D(...)
- stride =>  往右走幾格
- padding => 往下走幾格

---
### 增加資料量
- data augmenytatiob
- 超參數由系統自己去設定

## tensorflow 程式碼
- pycocotools 轉檔用，把 .proto 轉成 python檔
- %%bash 在bash 環境中執行
- ! : 系統程式碼
- tf1和2不相容(所以會指定tensor版本)
- download要改位址
- model zoo
#### google 開放的
1. faster_rcnn =>比較慢但是精準(但是也有可能太細，多算)
2. ssd　=> 比較快，影片可用
    - semantic 
    - classification 
    - object detection
    - instance segmentation
3. mask 塗色塊(重疊的部分判斷容易有誤差)
4. 
### 檢測結果指標
- coco mAP(越高越好)
- min score threshold : 可以設定幾 %的機率就要圈出來
- mask 塗色塊