使用 YOLO 訓練自定義資料

August 26, 2019

本文是使用 YOLO 視覺辨識類神經網路模型,訓練自定義資料的紀錄。

成功的部分:使用 Darknet 與 YOLO v3

在 Windows 下安裝 Darknet 和使用

首先,下載和編譯 Darknet:windows下darknet之yolo(gpu版本)安装 - 知乎

並且於 VS2015 中調整編譯選項:OpenCV3 + VS 配置 (有道雲筆記)

上述過程操作完後,便可以將 Darknet 安裝於 Windows 上並執行物件偵測。

需要自訂訓練時,則需要準備自訂的資料和下載預訓練的模型: GitHub - AlexeyAB/darknet: Windows and Linux version of Darknet Yolo v3 & v2 Neural Networks for object detection (Tensor Cores are used)

Darknet 參考資料

YOLO 參考資料

失敗的部分:使用 Darkflow 與 YOLO v2

教學

基本上是參考這個網頁的教學操作:[機器學習 ML NOTE]YOLO!!!如何簡單使用YOLO訓練出自己的物件偵測!!! (Windows+Anaconda)

疑難排解

ImportError: numpy.core._multiarray_umath failed to import

BoundingBox 未出現原因的猜測

以下是使用 Darkflow 自行訓練不成功的原因,在其它自行訓練物件偵測類神經網路時,可供參考。

  • 標籤:使用 Pascal 格式,不會有標籤未正確輸入的問題。
  • Bounding Box 大小:是否與 Bounding Box 的大小有關連?可能關係不大。因為只使用包含較小 Bounding Box 的資料,仍然有問題。
  • 資料載入:確認 Darkflow 有載入資料,排除此狀況。
  • 訓練的 Epoch 過少:預設為 1000 epochs,自行訓練時最高僅使用到 400 epochs,可能是原因。檢測時可以看 loss 是否有小於 0.1。
  • 資料過少:目前使用的資料僅有 60 張照片,在不同的網站教學中,都使用至少 200 張以上的照片。

Darkflow 參考資料