那今天就簡單介紹一下 YOLO 的實作練習,一般建立環境當然是建在我們的本地的電腦上,建好後會很方便操作。不過有時因為每個人的電腦環境不太一樣,雖然說安裝步驟其實沒有很難,但是很有可能會在自己的電腦裝弄天,搞定環境後都快去掉半條命了。
今天我們可以更簡單一點,不用自己準備機器。我們就直接用 Google colab 來玩, 你只要有 Google 帳號就可以開始了。是不是很心動,哈。
首先要感謝這個作者 David Ibáñez,真心崇拜這位作者,好用心把程式整理分享。我練習後,發現真的很方便教學。而且也強化了我 Google colab 的技能。我的電腦沒有獨立顯卡,之前想跑影片跑不動,用 Google Colab 就順利跑完影片物件偵測了,很不錯。
這個練習主要是參考 David Ibáñez 這篇教學,如果你等不及我的介紹,你可以直接連過去欣賞一下。
那我們開始吧.
當然就是在你的 Google Colab 新建一個 Python3 筆記本. 可以參考第7天的筆記 Google Colaboratory 筆記,並且設定為使用有GPU的伺服器。如果你不想自己建立,那也可以直接用作者的檔案建立副本。不過因為他的教學很詳細,一些其他情況的步驟比較多,建議你可以依自己的情況,自己打一次。
因為 colab 時間到了會清掉你的檔案,所以要跟雲端硬碟連接,用來存放我們需要的檔案。
from google.colab import drive
drive.mount('/content/gdrive')
在執行時他會給你一個連結還有一個輸入框,點連結下去後會需要先登入帳號,同意授權,之後會出現金鑰,像這像(4/rwFnMDkRAYND2a1r6ktfVqPnoLE61ichB...),再把這串貼到下面的輸入框按 Enter,看到這個訊息就是連接成功了。
"Mounted at /content/gdrive"
3-1 先檢查 CUDA 版本
!/usr/local/cuda/bin/nvcc --version
你應該會看到版本號, 如"Cuda compilation tools, release 10.0
, V10.0.130" 表示是第10版號
3-2 依目前的 CUDA 版本號, 安裝 cuDNN
去 Nvidia 官網下載 https://developer.nvidia.com/cudnn,它可能沒法直接下載,應該會需要填一些資料。我下載時檔名是長這樣 cudnn-10.0
-linux-x64-v7.6.2.24.tgz,下載後先把它上傳到雲端硬碟上,我們等一下會用到它。如下圖,我是放在 darknet/cuDNN 目錄下面,如下圖:
3-3 解壓縮tgz,把檔案放到 /usr/local/
這裡說明一下路徑
gdrive :是我們剛連接的根目錄
/My\ Drive :是我們雲端硬碟目錄
/darknet/cuDNN/ :是我們建立的目錄
連起來就是 gdrive/My\ Drive/darknet/cuDNN/
!tar -xzvf gdrive/My\ Drive/darknet/cuDNN/cudnn-10.0-linux-x64-v7.6.2.24.tgz -C /usr/local/
!chmod a+r /usr/local/cuda/include/cudnn.h
再來是編譯 darkent , 只有第一次執行才需要,如果你成功編譯完,把編譯完的檔案存到你的雲端硬碟後,你下次再執行,就不用再執行這一個步驟了。只需要把雲端硬碟的檔案複製過來就好。
!git clone https://github.com/kriyeng/darknet/
%cd darknet
!ls
!git checkout feature/google-colab
!make
把編譯完的 darknet檔,複製到雲端硬碟的 darknet/bin/darknet
先在你的雲端硬碟建好 darknet/bin 目錄。
!cp ./darknet /content/gdrive/My\ Drive/darknet/bin/darknet
成功的話,你在你的雲端硬碟應該會看到有 darknet 這個檔案。
好,到這裡,如果很順利的話,你已經成功一半了。
好,第21天,結束。
參考
How to train YOLOv3 using Darknet on Colab 12GB-RAM GPU notebook and speed up load times