YOLOV3推理環境搭建參考文章:
Yolov3網路的物體檢測_tugouxp的專欄-CSDN博客1.Get darknet 代碼$ git clone https://github.com/pjreddie/darknet$ cd darknet$ makecaozilong@caozilong-Vostro-3268:~/yolo$ git clone https://github.com/pjreddie/darknet正克隆到 'darknet'...remote: Enumerating objects: 5937, done.remote: Total 5937 (dehttps://blog.csdn.net/tugouxp/article/details/119297898PC跑跑YOLOV的推理還行,如果要是試圖跑模型訓練,要求就高了很多,河里沒水撐不起大船,訓練場景需要較強的算例支持,需要顯卡和CUDA環境,關于CUDA環境的安裝,可以參考這兩篇文章:
FairMOT Cuda環境搭建并進行推理_tugouxp的專欄-CSDN博客環境準備1.PC Host Ubuntu 18.04.6,Linux Kernel 5.4,內核版本關系不大,記錄下來備查,2.安裝基礎工具,比如GCC,CMAKE,VIM,GIT等等,工具盡量完備, 如果做不到,遇到問題臨時下載也可,3.安裝python3發行版,我用的是anaconda發行版,具體版本是 Anaconda3-2020.11-Linux-x86_64.sh下載地址在如下鏈接,選擇對應的版本即可,https://repo.anaco...https://blog.csdn.net/tugouxp/article/details/121248457Ubuntu18.04安裝CUDA深度學習環境_tugouxp的專欄-CSDN博客N卡在深度學習領域具備無可替代的地位,這里記錄以下在我這臺配備GF MX350 N卡筆記本 上安裝cuda以及cuNN的具體步驟,MX350屬于低端顯卡了,一開始我還擔心它會不會不支持CUDA,后面確認了一下,發現可以支持,關于確認N卡是否支持CUDA以及支持版本的具體步驟,可以參考我的這篇博客:如何確定PC Nvidia顯卡是否支持CUDA以及cudaNN?程序不難,細節很多,下面記錄具體步驟:1.安裝顯卡驅動:...
https://blog.csdn.net/tugouxp/article/details/119829792我的主機環境是Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz和MX250顯卡,支持安裝CUDA11.5
建立darknet的環境
參考上面的文章,搭建darknet環境,這里需要注意的是darknet使用如下的源
https://github.com/AlexeyAB/darknet
本文使用的就是如上的源,便以前記得把CUDA和OPENCV的支持打開,按照上面博客的方法安裝OPENCV依賴包:

之后編譯darknet專案,并驗證YOLOV3推理是否可以成功進行,
下載COCO資料集:
首先將darkent/scripts/get_cocodataset.sh拷貝到darknet/data目錄:
![]()
之后,在darknet/data目錄執行bash get_coco_dataset.sh,開始下載COCO資料集,
![]()
COCO資料集非常的大,有18G左右,所以不但要求你的磁盤有足夠的空間,也要求你有足夠的耐心,
下載完成后,腳本會對資料進行解壓,最終腳本執行結束之后,在darknet/data目錄中,新增加了一個COCO目錄,所下載的資料集以及資料及解壓后的目錄都在這里:

至于資料集的化,則在darknet/data/coco/images目錄:

修改darknet/cfg/coco.data,將訓練資料集的路徑和權重檔案的目錄設定為正確的路徑,

下載預訓練權重檔案:
wget -c https://pjreddie.com/media/files/darknet53.conv.74
開始訓練:
在darknet目錄下,執行訓練命令:
./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74
開始訓練,遇到如下的錯誤:

錯誤原因是我們需要把batch 和subdivisions設定為64,我們按照要求設定,之后再次執行,遇到新的錯誤:

這條錯誤懷疑是由于我PC的資源不足以訓練yolov3.cfg這個相對復雜的模型,天無絕人之路,看到darknet/cfg目錄下還有不少基于YOLOV3改進的模型,我們改用小模型yolov3-tiny.cfg來訓練,訓練前同樣修改yolov3-tiny.cfg的batch 和subdivisions設定為64,此時,darknet目錄的狀態為:
(base) caozilong@caozilong-RedmiBook-14:~/darknet$ git status
位于分支 master
您的分支與上游分支 'origin/master' 一致,
尚未暫存以備提交的變更:
(使用 "git add <檔案>..." 更新要提交的內容)
(使用 "git checkout -- <檔案>..." 丟棄作業區的改動)
修改: Makefile
修改: cfg/coco.data
修改: cfg/yolov3-tiny.cfg
未跟蹤的檔案:
(使用 "git add <檔案>..." 以包含要提交的內容)
darknet53.conv.74
predictions.jpg
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
(base) caozilong@caozilong-RedmiBook-14:~/darknet$ git diff
diff --git a/Makefile b/Makefile
index 431933c..ba48185 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
-GPU=0
+GPU=1
CUDNN=0
CUDNN_HALF=0
-OPENCV=0
+OPENCV=1
AVX=0
OPENMP=0
LIBSO=0
@@ -119,7 +119,7 @@ CFLAGS+= -DGPU
ifeq ($(OS),Darwin) #MAC
LDFLAGS+= -L/usr/local/cuda/lib -lcuda -lcudart -lcublas -lcurand
else
-LDFLAGS+= -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
+LDFLAGS+= -L/usr/local/cuda/lib64 -L/usr/local/cuda-11.5/targets/x86_64-linux/lib/stubs -lcuda -lcudart -lcublas -lcurand
endif
endif
diff --git a/cfg/coco.data b/cfg/coco.data
index 3003841..8cadd38 100644
--- a/cfg/coco.data
+++ b/cfg/coco.data
@@ -1,8 +1,8 @@
classes= 80
-train = /home/pjreddie/data/coco/trainvalno5k.txt
+train = /home/caozilong/darknet/data/coco/trainvalno5k.txt
valid = coco_testdev
#valid = data/coco_val_5k.list
names = data/coco.names
-backup = /home/pjreddie/backup/
+backup = /home/caozilong/backup/
eval=coco
diff --git a/cfg/yolov3-tiny.cfg b/cfg/yolov3-tiny.cfg
index cfca3cf..ad9c505 100644
--- a/cfg/yolov3-tiny.cfg
+++ b/cfg/yolov3-tiny.cfg
@@ -1,7 +1,7 @@
[net]
# Testing
-batch=1
-subdivisions=1
+batch=64
+subdivisions=64
# Training
# batch=64
# subdivisions=2
(base) caozilong@caozilong-RedmiBook-14:~/darknet$
執行訓練命令:
./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74
這次成功執行,訓練程序會啟動一張坐標圖來記錄LOSS隨著訓練迭代次數增加的變化情況,左邊的視窗是檢測顯卡狀態用的,這張圖是在訓練開始后4個小時后截的,可以看到剩余訓練時間仍有974個小時,非常的恐怖,我們已經選擇的小模型進行訓練了,如果訓練的是大模型,訓練時常可想而知,這也是為什么老黃的N卡能夠壟斷機器學習的訓練領域的原因,他考慮到了高性能計算,并提供了CUDA,CUDANN等工具用于開發高性能計算的產品,

訓練程序的動態情況,可以看到訓練曲線進行的非常慢,用蝸牛烏龜形容它已經構成對蝸牛和烏龜的誹謗了,非要拿它們哥倆兒作比喻的花,也只能說它們可能是蝸牛世界里的蝸牛里的世界,,,里的蝸牛了,隔著好基層世界呢,

跑15個小時后:

注意:
訓練曲線圖只有在OPENCV打開的情況下才會出來,如果OPENCV關閉,默認只有訓練時控制臺的列印輸出,不會呼出訓練進度曲線圖,

backup目錄中保存的是不同階段訓練出來的權重檔案,訓練從一個預訓練權重開始初始化網路,之后隨著訓練進度不斷前進,不斷產生新的更好的權重資料替換backup目錄中的之前的權重檔案,通過下圖對比可以看到權重檔案更新情況:

訓練5個小時候,NPU溫度已經飆升到90度,筆記本鍵盤上方5CM內都感覺得到股股熱浪襲來,冬天放在房間里活脫脫就是一臺取暖器,
看來有必要買臺游戲本嫖機器學習了,
訓練跑完估計是不可能的了,電腦過了周末就要有它用,當前盡量跑完這個周末,讓影像曲線多記錄一些,分階段更新訓練曲線~, 就先寫到這里,
結束!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/357220.html
標籤:其他
