本篇文章假設你已經有 Colab、YOLO3 的基礎知識。如果你還不是很瞭解,可以參考:
這篇文章會教你:
- 利用 Colab 128G RAM GPU 來訓練你的 Yolo3 模型
- 將 Colab 設定成可以運用在實際專案的訓練環境
- 快速掛載本機電腦上的檔案到 Colab 環境中
- 事先編譯所有需要的檔案,每次開啟 Colab 後即可立刻進行訓練
- 將訓練好的 weight 檔案自動同步回本機電腦,避免檔案遺失
步驟 1:設定使用 Colab 12G-RAM GPU 環境
Colab 預設環境是使用 CPU 訓練,我們想要使用快速的 GPU!
步驟 2:連接你的 Google Drive
我們使用 Google Drive 來同步 Colab 雲端和本機的檔案。
- 安裝 Google Drive https://www.google.com/intl/zh-TW_ALL/drive/
- 在 Google Drive底層目錄中,建立
darknet
資料夾
步驟 3:將 Google Drive 掛載到 Colab 環境中
開啟步驟 1 建立的 Colab 專案,輸入
from google.colab import drive
drive.mount('/content/gdrive')
這一行會將整個 Google Drive 掛載到 content/gdrive
下。我們另外建立一個捷徑,這樣每次取用檔案的時候就不用打一場串的路徑。
!ln -fs /content/gdrive/My\ Drive /app
步驟 4:下載並編譯 Darknet(只需要執行一次)
首先需要先安裝 Darknet 需要的 cuDNN
- 下載 cuDNN v7.5.0.56 for CUDA v10.0 並放到 Google Drive
darknet/cuDNN/
目錄下
!tar -xzvf /app/cuDNN/cudnn-10.0-linux-x64-v7.5.0.56.tgz -C /usr/local/
!chmod a+r /usr/local/cuda/include/cudnn.h# 檢查是否安裝成功
!cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
2. 下載並編譯 darknet
%cd /content/
!git clone https://github.com/kriyeng/darknet/ darknet_source
%cd darknet_source# 修改 Darknet 設定,符合 Colab 環境
!sed -i "s/GPU=0/GPU=1/g" Makefile
!sed -i "s/CUDNN=0/CUDNN=1/g" Makefile
!sed -i "s/OPENCV=0/OPENCV=1/g" Makefile# 編譯
!make# 將編譯完成的執行檔複製回 Google Drive
!cp ./darknet /app/darknet
!cp ./darknet /content/darknet
%cd /content
步驟 4.1:之後執行時只要複製編譯好的檔案就能馬上開始訓練
上個步驟會將 darknet 編譯成可以執行的檔案,只有第一次需要做。第二次以後,只要從 Google Drive 將編譯好的檔案複製回 Colab 就可以馬上開始進行訓練了。
%cd /content
!cp /app/darknet ./
!chmod +x ./darknet
步驟 5:設定完成!
到這邊,你已經設定好 Darknet 的環境並可以開始執行了。設定好一次之後,第二次重新啟動 Colab 的時候,就不用重新上傳檔案和編譯,只要掛載 Google Drive 並把 darknet 檔案複製到 Colab 就可以開始訓練了。
如何測試 Darknet 是否正常安裝
我們利用 yolo 事先訓練好的模型來偵測圖片, data/person.jpg
是要被偵測的圖片位置,你可以用自己的照片試試看。
%cd /content/darknet_source
!wget https://pjreddie.com/media/files/yolov3.weights
!/content/darknet detect cfg/yolov3.cfg yolov3.weights data/person.jpg -dont-show
預測的結果會存在 predictions.jpg
檔案中,我們利用下面的程式碼顯示出這張圖片
import cv2
from google.colab.patches import cv2_imshow
img = cv2.imread(‘predictions.jpg’, cv2.IMREAD_UNCHANGED)
cv2_imshow(img)
如果你能看到類似下圖的圖片,恭喜你,你的 Darknet Yolo3 已經正確安裝並且正確運作了。
你可以試試看把 data/person.jpg
替換成 data/eagle.jp
g 、data/horses.jpg
來試試看不同圖片的辨識結果。
完整範例程式碼請見 http://bit.ly/2C4QNQx
如果這篇文章有幫助到你,請幫我按個讚吧,我能藉此獲得鼓勵以及微小的收入,支持我繼續創作。請按下方綠色拍手的符號~