在Colab Notebooks上定義並訓練Yolov4 Model (以水果辨識為例)
Yolo (You only look once)可以說是最知名的即時辨識模型了,不僅效果好,速度也快,當初的論文可以參考這裡,現在一路也出到V4了,你可以在訓練資料上定義不同的圖片和標籤,以此訓練模型,就可以輕鬆達到辨識新目標的效果。
當然我這樣講是有點浮誇,你必須注意一下你的電腦能不能如願把訓練跑完。
在這次的訓練中,我嘗試在Colab Notebooks上安裝,並訓練Yolov4,主要是為了省去GPU這個環節,因為平時我的工作筆電是一台Mac,想要跑完訓練是真的需要一點時間的;另外為了完成訓練,首先我必須找到一份資料集,再來我必須製作自己的YOLO Format標記檔案,提供給Yolov4進行訓練。
資料集的部分,我使用的是Kaggle上的Fruits fresh and rotten for classification資料集,這其中包含了新鮮蘋果、香蕉、橘子和腐敗的蘋果、香蕉和橘子等六種類型的圖片,如何在Colab Notebooks上下載Kaggle資料集的話可以參考我這篇文章。
至於如何把Kaggle資料集轉成Yolo format的部分,可以參考這篇文章,在這裡我捨棄了用LabelImg,也捨棄了Yolo Marker,為什麼呢?純粹是因為我懶,純粹是因為我想盡量把工作自動化,雖然可能割捨掉一些正確性。
在準備好資料集和Yolo Format的標記檔案後,我們可以開始接著作模型下載和訓練的工作,首先我們要先從AlexeyAB下載darknet,這是一個使用C語言實作Yolo的共用函式庫,但是可以提供Python調用;當初是從Yolo的原始作者那fork出來的分支,因為原作者已經不維護原始程式碼了,所以網路上大多用這個版本在訓練和實戰。
- OPENCV=1,啟用OPENCV,注意,你必須先安裝OpenCV。
- GPU=1,啟用GPU,注意,你的Coblab要先啟用GPU。
- CUDNN也需要啟用,他是基於CUDA的DNN函式庫。如果你用的是自己的電腦,也有自己的GPU,可以找一下顯卡可以支援到什麼程度,然後修改ARCH,ARCH主要是指定框架裡面用到的GPU資訊,在某些狀況下會導致你的YOLO無法編譯,詳細狀況可以參考這篇文章。
圖片的辨識訓練其實不會很複雜,訓練資料集方面,也不需要把圖片都轉成同樣大小(這也是為什麼你在產生Yolo format的label資料時,需要取的是比例的相對位置,而不是像素的絕對位置),另外需要注意的是cfg設定檔中的filter數量,這個數值會和你定義的class數量相關,計算公式為filters=3*(classes+5),譬如你在資料集中定義了3個類型(classification),那filters則會是(3+5)*3=24。
後面我會花一點時間整理Yolo的做法和基本原理,並且附上我的些許心得,如此一來才能算真正掌握了Yolo這套框架。(待續)
January 14, 2022 at 04:33PM
留言
張貼留言