基于UA-DETRAC车辆数据集在windows10系统下yolov3模型训练
數據集:DETRAC
UA-DETRAC數據集來自于北京和天津不同的24個區域道路的監控中的截圖,且為車輛的俯拍角度,適用于城市的道路監控。
鏈接:https://pan.baidu.com/s/1HFasaCgogWZrNqPHEltIqg
提取碼:6k0i
參考項目:
https://github.com/AlexeyAB/darknet
https://github.com/qqwweee/keras-yolo3 (使用該項目訓練yolov3模型GPU)
https://blog.csdn.net/w5688414/article/details/78931910(制作VOC格式數據集)
環境:
win10,CUDA10.1,CUDNN7.6.0,vs2017,
python3.5. 4,tensorflow-gpu1.14.0,keras==2.1.5
需要注意的是最好在安裝keras之前安裝tensorflow-gpu.
GTX965(本地gpu)/2*2080(公司GPU服務器)
step1.windows10下CUDA和CUDNN的安裝
更新顯卡驅動(https://www.nvidia.com/Download/index.aspx?lang=en-us),一般來說,顯卡驅動支持的cuda版本是向下兼容的,也就是說,安裝低版本的cuda工具包都是可以使用GPU的。下面貼出
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fai6Z5ZQ-1615951567306)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128100255227.png)]
在使用N卡的gpu進行模型訓練的之前,必須安裝cuda和cudnn。
首先可以進入終端輸入nvcc -V或者nvcc --version查看是否安裝cuda和cudnn
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1hGqlhZY-1615951567310)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210127113810974.png)]
如果出現上圖,則表明已經安裝好cuda,版本為10.1。
如果安裝可以看到對應的cuda版本,查看cudnn版本可通過打開C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include 目錄下的cudnn.h文件查看,這里要注意的是cuda和cudnn對應的版本。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-9fwlguVR-1615951567312)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210127114157765.png)]
上圖表明本地的cudnn版本為7.6.0。
主要要注意各個系統中tensorflow-gpu版本和python版本,cuda版本以及cudnn版本的對應,由下圖tensorflow官網給出(其實不是說和下面不一致的就運行不了,注意到我的cuda版本和tensorflow-gpu版本也不是對應的,后面解釋了tensorflow-gpu版本和cuda版本不一致的問題)
當然,如果你已經安裝了python,tensorflow-gpu,cuda和cudnn,最好可以首先查看tensorflow能否使用gpu,如果可以大概率在你訓練模型的時候也是可以的。
window
CPU
| tensorflow-2.3.0 | 3.5-3.8 | MSVC 2019 | Bazel 3.1.0 |
| tensorflow-2.2.0 | 3.5-3.8 | MSVC 2019 | Bazel 2.0.0 |
| tensorflow-2.1.0 | 3.5-3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 |
| tensorflow-2.0.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 |
| tensorflow-1.15.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 |
| tensorflow-1.14.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.24.1-0.25.2 |
| tensorflow-1.13.0 | 3.5-3.7 | MSVC 2015 update 3 | Bazel 0.19.0-0.21.0 |
| tensorflow-1.12.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 |
| tensorflow-1.11.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 |
| tensorflow-1.10.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
| tensorflow-1.9.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
| tensorflow-1.8.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
| tensorflow-1.7.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
| tensorflow-1.6.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
| tensorflow-1.5.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
| tensorflow-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
| tensorflow-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
| tensorflow-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
| tensorflow-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 |
| tensorflow-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 |
GPU
| tensorflow-2.1.0 | 2.7、3.5-3.7 | GCC 7.3.1 | Bazel 0.27.1 | 7.6 | 10.1 |
| tensorflow-2.0.0 | 2.7、3.3-3.7 | GCC 7.3.1 | Bazel 0.26.1 | 7.4 | 10.0 |
| tensorflow_gpu-1.14.0 | 2.7、3.3-3.7 | GCC 4.8 | Bazel 0.24.1 | 7.4 | 10.0 |
| tensorflow_gpu-1.13.1 | 2.7、3.3-3.7 | GCC 4.8 | Bazel 0.19.2 | 7.4 | 10.0 |
| tensorflow_gpu-1.12.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
| tensorflow_gpu-1.11.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
| tensorflow_gpu-1.10.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
| tensorflow_gpu-1.9.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.11.0 | 7 | 9 |
| tensorflow_gpu-1.8.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.10.0 | 7 | 9 |
| tensorflow_gpu-1.7.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.9.0 | 7 | 9 |
| tensorflow_gpu-1.6.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.9.0 | 7 | 9 |
| tensorflow_gpu-1.5.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.8.0 | 7 | 9 |
| tensorflow_gpu-1.4.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.5.4 | 6 | 8 |
| tensorflow_gpu-1.3.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 | 6 | 8 |
| tensorflow_gpu-1.2.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 | 5.1 | 8 |
| tensorflow_gpu-1.1.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 | 5.1 | 8 |
| tensorflow_gpu-1.0.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 | 5.1 | 8 |
linux
CPU
| tensorflow-2.1.0 | 2.7、3.5-3.7 | GCC 7.3.1 | Bazel 0.27.1 |
| tensorflow-2.0.0 | 2.7、3.3-3.7 | GCC 7.3.1 | Bazel 0.26.1 |
| tensorflow-1.14.0 | 2.7、3.3-3.7 | GCC 4.8 | Bazel 0.24.1 |
| tensorflow-1.13.1 | 2.7、3.3-3.7 | GCC 4.8 | Bazel 0.19.2 |
| tensorflow-1.12.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 |
| tensorflow-1.11.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 |
| tensorflow-1.10.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 |
| tensorflow-1.9.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.11.0 |
| tensorflow-1.8.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.10.0 |
| tensorflow-1.7.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.10.0 |
| tensorflow-1.6.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.9.0 |
| tensorflow-1.5.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.8.0 |
| tensorflow-1.4.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.5.4 |
| tensorflow-1.3.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 |
| tensorflow-1.2.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 |
| tensorflow-1.1.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 |
| tensorflow-1.0.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 |
GPU
| tensorflow-2.1.0 | 2.7、3.5-3.7 | GCC 7.3.1 | Bazel 0.27.1 | 7.6 | 10.1 |
| tensorflow-2.0.0 | 2.7、3.3-3.7 | GCC 7.3.1 | Bazel 0.26.1 | 7.4 | 10.0 |
| tensorflow_gpu-1.14.0 | 2.7、3.3-3.7 | GCC 4.8 | Bazel 0.24.1 | 7.4 | 10.0 |
| tensorflow_gpu-1.13.1 | 2.7、3.3-3.7 | GCC 4.8 | Bazel 0.19.2 | 7.4 | 10.0 |
| tensorflow_gpu-1.12.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
| tensorflow_gpu-1.11.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
| tensorflow_gpu-1.10.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
| tensorflow_gpu-1.9.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.11.0 | 7 | 9 |
| tensorflow_gpu-1.8.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.10.0 | 7 | 9 |
| tensorflow_gpu-1.7.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.9.0 | 7 | 9 |
| tensorflow_gpu-1.6.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.9.0 | 7 | 9 |
| tensorflow_gpu-1.5.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.8.0 | 7 | 9 |
| tensorflow_gpu-1.4.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.5.4 | 6 | 8 |
| tensorflow_gpu-1.3.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 | 6 | 8 |
| tensorflow_gpu-1.2.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 | 5.1 | 8 |
| tensorflow_gpu-1.1.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 | 5.1 | 8 |
| tensorflow_gpu-1.0.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 | 5.1 | 8 |
安裝項目所需的python工具包
pip install tensorflow-gpu==1.6.0
pip install keras==2.1.5
查看是否有GPU:返回GPU的參數
import tensorflow as tf
print(tf.test.gpu_device_name())
查看GPU是否可用:返回true/false
tf.test.is_gpu_available()
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-r58aadTi-1615951567315)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128091045330.png)]
GPU型號:GTX965,設備編號:0,GPU是否可用:true
我的電腦同時安裝cuda10.0(cudnn7.4),cuda10.1(cudnn7.6),cuda11.1三個版本
存在的一個問題:
查看正在使用的cuda版本為10.1,但是由上圖可以看出,在終端使用GPU時,卻使用的是cuda10.0。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JiWIC6Iw-1615951567318)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128092129777.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nmvvWvXZ-1615951567321)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128092729988.png)]
個人給出的一個解釋:
由于tensorflow-gpu安裝的版本是1.14.0,根據tensorflow-gpu的版本找到對應的cuda版本(10.0)。
貼出cuda10.0和cudnn7.4的鏈接:
鏈接:https://pan.baidu.com/s/1Dy7JDy7v6px6XiMcCOYVvQ
提取碼:x3e1
step2.制作VOC格式數據集:
將UA-DETRAC數據集下載并解壓,得到以下文件:
DETRAC-Train-Images (5.22GB, 60 sequences)
DETRAC-Test-Images (3.94GB, 40 sequences)
DETRAC-Train-Annotations-XML
將項目文件git clone下來:git clone https://github.com/qqwweee/keras-yolo3
制作voc數據集格式項目:get clone https://blog.csdn.net/w5688414/article/details/78931910
該數據集中train文件夾下的圖片有幾萬張,為了減少模型訓練時間,我只選取了路徑UA-DETRAC(車輛檢測數據集8250車輛)\DETRAC-train-data\Insight-MVT_Annotation_Train\MVI_20011下的六百多張圖片。所以我只保留了DETRAC-Train-Annotations-XML文件夾下MVI_20011.xml以及Insight-MVT_Annotation_Train\MVI_20011下的照片。
1,在文件夾下創建VOCdevkit文件夾,然后創建VOC2007文件夾
VOC2007文件夾下有五個文件夾
├── Annotations # 存放xml文件,主要是記錄標記框位置信息
├── ImageSets # 存放的都是txt文件,txt文件中每一行包含一個圖片的名稱
├── Layout
├── Main
└── Segmentation
├── JPEGImages # 存放源圖片
├── labels
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eAjXzOt4-1615951567323)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128112927297.png)]
2,DETRAC數據集為每個文件夾中的圖片提供了一個.xml文件,不需要自己再進行手動標識,但是需要將.xml文件分成對應每個圖片的.xml。
將DETRAC_xmlParser.py文件與xml文件夾放在同一路徑下,運行后會在同一目錄下生成xml_test文件夾,里面存放的是每個圖片對應的.xml文件,將xml_test文件夾下的.xml文件復制到VOCdevkit\VOC2007\Annotations下(注意修改一下.py文件中最后一行可視化視頻幀的地址)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-AzXcvIsL-1615951567324)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128130610436.png)]
這里不能直接把路徑DETRAC-train-data\Insight-MVT_Annotation_Train\MVI_20011下的所有圖片放入JPEGImages文件中。需要批量重命名文件夾中圖片文件。
3,將voc_data_migrate.py放到與文件夾Insight-MVT_Annotation_Train同一路徑下。同樣,py文件與Insight-MVT_Annotation_Train文件夾在同一目錄下,最終生成picture_test文件夾,里面含有六百多張圖片,其實,圖片還是Insight-MVT_Annotation_Train\MVI_20011文件夾下的圖片,只是圖片的名字改了下,然后該picture_test文件夾下的所有照片復制到JPEGImages文件夾下。(注意修改.py中的地址)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-NgWnMNBD-1615951567326)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128130645597.png)]
4,利用mageSets_Convert.py, 產生trainval.txt,test.txt,train.txt,val.txt文件,保存在ImageSets\Main文件夾下,這樣VOC2007格式的數據集就生成好了。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-frvD40Y6-1615951567328)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128131737103.png)]
step3.訓練模型
1,生成keras-yolo3所需的train.txt,val.txt,test.txt。
step2中制作的數據集不能直接供keras-yolov3直接使用。需要運行voc_annotation.py ,記得修改classes為數據集中的類別,這里classses = ["car"]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zP96BKgD-1615951567329)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128132853525.png)]
2,將model_data/voc_classes.txt文件中的類別修改為自己的類別
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-v0zOE46P-1615951567331)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128140156438.png)]
3,修改文件yolov3.cfg中的參數
搜索yolo,一共出現三次,每處修改三個地方,
filter:18 #3 *(5+len(classes)),注意不要在18后加#否則可能在讀取網絡文件配置時,出現識別錯誤,在我刪掉#及其后面的注釋就順利生成.h5文件
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-drZ1SUJa-1615951567333)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128143737454.png)]
classes:1 #要訓練的類別數
random:0 #原來是1,顯存小改為0
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7YFR6RVY-1615951567335)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128143356990.png)]
在修改yolov3.cfg文件后,執行python convert.py yolov3.cfg yolov3.weights model_data/yolocar.h5
這時在model_data文件夾下便生成yolocar.h5文件
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Z4zWojHl-1615951567337)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128145444633.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-2GJs1Wiw-1615951567339)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128145455708.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vxp6YYHV-1615951567341)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128145505432.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3nrlSW4i-1615951567343)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128145514565.png)]
4,修改anchor的坐標值
yolo是利用9個anchor來檢測目標的位置,因此這9個anchor設置的好壞,會直接影響到訓練與檢測效果。
我們使用kmeans方法來聚類得到與我們數據集接近的anchors,在keras-yolov3下邊有一個kmeans.py文件,打開后將filename改為2007_train.txt(2處),保存運行該腳本,會得到9個anchors的坐標值以及準確率。記下這9個坐標值,然后打開model_data中的yolo_anchors.txt,按照文本中的格式,將9個anchors值依次寫入即可。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ugRcmW5R-1615951567344)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210128151215911.png)]
5,修改train.py,訓練模型
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7Yst1d8b-1615951567345)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210129085608422.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-u0Xcaj3j-1615951567346)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210129085636213.png)]
根據保存文件名修改相應位置的.txt以及.h5文件。
如果訓練過程中出現顯存不足(OOM),解決方面有二:
1)調整輸入的尺寸:(input_shape)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-v1aFy7NO-1615951567348)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210129085911523.png)]
2)改變batch_size大小32調整為16,8,4
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-G0n2bP0E-1615951567349)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210129085953674.png)]
6,訓練權重文件保存
最后訓練出模型,即train_weights_final.h5文件。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-w5OvuP1P-1615951567353)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210129092434389.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-r4zQX8gH-1615951567354)(C:\Users\jinchen\AppData\Roaming\Typora\typora-user-images\image-20210129092114364.png)]
總結:
訓練模型注意事項:
在下載權重的時候需要注意,看看 GPU RAM 要求,比如,我的顯存 2G 是用不了yolov3.weights模型的它的要求 4G,只能用yolov3-tiny.weights
如果顯存大于 4G ,那直接用yolov3.weights預訓練模型就可以了。
CUDA,tensorflow出現OOM
解釋:服務器的GPU大小為M,tensorflow只能申請N(N<M),也就是tensorflow告訴你 不能申請到GPU的全部資源 然后就不干了
解決方法(本例中沒找到session,所以沒有嘗試):
找到代碼中Session,在session定義前 增加
config = tf.ConfigProto(allow_soft_placement=True)
\#最多占gpu資源的70%
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7)
\#開始不會給tensorflow全部gpu資源 而是按需增加
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
在使用服務器GPU訓練時出現OOM的情況:
tensorflow 會在就算用device_id指定gpu 也會占用別的GPU的顯存資源,所以 必須在執行程序前
執行 export CUDA_VISIBLE_DEVICES=n
只讓1個或者個別GPU可見 其他GPU看不見 就行了
需要的文件鏈接:(百度網盤永久有效)
yolov3-tiny.weights
鏈接:https://pan.baidu.com/s/1TIfF6-ZtP6F_u_dwIyEU_Q
提取碼:inip
復制這段內容后打開百度網盤手機App,操作更方便哦–來自百度網盤超級會員V2的分享
darknet53.conv.74
鏈接:https://pan.baidu.com/s/1pXADiPBIqUTiSIFHAM6Wpw
提取碼:08g3
復制這段內容后打開百度網盤手機App,操作更方便哦–來自百度網盤超級會員V2的分享
常用鏈接:
https://pjreddie.com/darknet/yolo/
U可見 其他GPU看不見 就行了
需要的文件鏈接:(百度網盤永久有效)
yolov3-tiny.weights
鏈接:https://pan.baidu.com/s/1TIfF6-ZtP6F_u_dwIyEU_Q
提取碼:inip
復制這段內容后打開百度網盤手機App,操作更方便哦–來自百度網盤超級會員V2的分享
darknet53.conv.74
鏈接:https://pan.baidu.com/s/1pXADiPBIqUTiSIFHAM6Wpw
提取碼:08g3
復制這段內容后打開百度網盤手機App,操作更方便哦–來自百度網盤超級會員V2的分享
常用鏈接:
https://pjreddie.com/darknet/yolo/
https://blog.csdn.net/u012746060/article/details/81183006
總結
以上是生活随笔為你收集整理的基于UA-DETRAC车辆数据集在windows10系统下yolov3模型训练的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Basic Script
- 下一篇: java信息管理系统总结_java实现科