# 影像辨識 ###### 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 塗色塊