capstone-project

期末專題 - 使用 YOLOv5 辨識水下魚種

專題實作步驟:

  1. 建立魚類標註資料集
  2. 挑選目標魚種
  3. 使用高斯雜訊對影像進行擴增
  4. 使用顏色通道調整對影像進行擴增
  5. 使用Yolov5m模型搭配 yolov5.pt 權重檔進行遷移式學習訓練模型 (參數使用 Img size 1280 , batch size 16 ,epoch 200)
  6. 輸入影像進行辨識
  • 模型建構 (PC with Anaconda & TWCC雲運算中心)
  • 程式樣本 (自行撰寫與參考Open source網站)

YOLO系列介紹

YOLO (You Only Look Once) 是一個 one-stage 的 object detection 演算法

  • One stage (速度較快,較多人研發在行動裝置上)
    物件位置偵測和物件辨識一步到位,也就是一個神經網路能同時偵測物件位置也可以辨識物件
    著名:YOLO系列,Single Shot Detector (SSD)
    image

  • Two stage (辨識精確度較高,辨識時間較長)

    先用特殊方法先選出Region of Interesting,然後針對選出的物件(Region Proposals)再進行物件辨識

    著名:Fast-RCNN
    image

基本名詞介紹

  • Precision (準確率) : 在所有預測為正樣本中,有多少為正樣本 TP / (TP + FP)

  • Recall (召回率) : 在所有正樣本當中,能夠預測多少正樣本的比例 TP / (TP + FN)

  • Precision高的模型 = 較謹慎 (雖常沒辦法抓出命名實體,但只要有抓出幾乎都正確)

  • Recall 高的模型 = 較寬鬆 (雖然有時候會抓錯,但幾乎該抓的都有抓到)

  • AP : PR curve (Precision-Recall curve) 的面積 (area under curve, AUC)

    image

  • mAP :每一種物體的AP算完後的平均值

  • 評估指標 IOU (Intersection over Union) - 兩個 bndBox 的交集 / 兩個 bndBox 的聯集

    IoU > 閥值(Threshold) = TP
    IoU < 閥值(Threshold) = FP
    image


  • Confusion Matrix 混淆矩陣

    第一個英文字:預測正確(T)或錯誤(F)
    第二個英文字:預測是目標物件(P)OR不是目標物件(N)
    image

標註照片

  • YOLO 的 Label 格式

    image

image

  • 使用LableIMG進行影像標註

    image

YOLOv5實際操作

環境建構

  • 使用anaconda

    image

    Conda 是一個開源的跨平台工具軟體
    傳統 Python 使用者以 pip 作為套件管理員(package manager)、以 venv 作為工作環境管理員(environment manager),而 conda 則達成了「兩個願望、一次滿足」既可以管理套件亦能夠管理工作環境。


安裝與建構環境

這個小節使用的常見 conda 指令有:

  • conda --version 檢視 conda 版本
  • conda update PACKAGE_NAME更新指定套件
  • conda --help 檢視 conda 指令說明文件
  • conda list --ENVIRONMENT 檢視指定工作環境安裝的套件清單
  • conda install PACAKGE_NAME=MAJOR.MINOR.PATCH 在目前的工作環境安裝指定套件
  • conda remove PACKAGE_NAME 在目前的工作環境移除指定套件
  • conda create --name ENVIRONMENT python=MAIN.MINOR.PATCH 建立新的工作環境且安裝指定 Python 版本
  • conda activate ENVIRONMENT 切換至指定工作環境
  • conda deactivate 回到 base 工作環境
  • conda env export --name ENVIRONMENT --file ENVIRONMENT.yml 將指定工作環境之設定匯出為 .yml 檔藉此複製且重現工作環境
  • conda remove --name ENVIRONMENT --all 移除指定工作環境

創建新環境

  • conda create -n your_env_name python=x.x
  • activate your_env_name 激活環境
  • conda activate your_env_name 前往環境

刪除環境

  • conda remove -n your_env_name –all
  • conda remove –name your_env_name package_name 刪除環境中的某個包

看環境有哪些包

  • conda list

看環境有哪些環境變數

  • conda env list

Dataset 準備與架構

訓練用數據集 (From 李東霖老師-智慧生活實驗室-海科館水下攝像鏡頭)

  • 資料挑選 (由於魚種數量分布不均,使用黑白名單方法挑選)
    image
    image

  • 魚種編號
    image

1. 挑選平均過後的影像以 80:20 進行分割 (3940張Train 1053張val)

image

2. 新增Noise (高斯雜訊) 進行資料擴充 (7880張train 2106張val)
image

image

image

3. 調整顏色通道進行資料擴充

先對影像顏色擴增進行實驗 (315張Training,針對1,3編號進行擴增) 觀察如何調整可以提升PR與mAP值

  • 訓練參數

    1.只挑選有編號1,3的照片(315張) + 依各顏色擴增方法擴增(315張) 為訓練集
    2.2.1015張照片為驗證集
    3.參數 python train.py –img 640 –epoch 150 –batch-size 8 –data data/lundata.yaml –cfg cfg/yolov5s.yaml –weight weights/yolov5s.pt

image
未命名1

  • 總結:挑選綠色進行擴增較有效果
    image

最終訓練參數與結果

  • Yolov5自帶4種不同大小的模型提供訓練的選擇

    image

  • 採用YOLOv5m模型(Img size 1280 , batch size 16 ,epoch 200)

    image

訓練設定

  • 更改.yaml檔裡的nc數及標籤

    image

  • 更改cfg檔nc數

    image

  • 執行訓練指令 (範例)

    image

  • 混淆矩陣
    image

  • 應用模型偵測影像檔

    image


小組成員

  1. 電機3B 00953117 李宇倫 : 標註資料,資料擴增,建構環境,篩選數據,訓練模型並應用,整理成果檔
  2. 電機3A 00953034 林建辰 : 標註資料,資料收集,網頁撰寫及編排,模型參數調整


This site was last updated December 22, 2022.