Yolov5_v6.2訓練資料集進行預測
學習筆記
記錄一下第一次進行Yolov5的部署,除錯,訓練,預測。
第一次釋出在了CSDN:連結:
https://blog.csdn.net/C_1Y1_T/article/details/127691617?spm=1001.2014.3001.5502
現在在部落格園也釋出一下
1.Yolov5環境部署
- 我使用的環境是:Yolov5_v6.2 + Minconda + torch_v1.13.0(CPU版本)
1.1.Minconda安裝
- 這裡不是重點,可以查詢專門的安裝配置教程。
- 使用Anaconda是一樣的。
- 在安裝後,建議設定國內映象源,否則後面下載會很慢。
1.2.Pytorch安裝
-
在Yolov5的
requirements.txt
中,有設定下載Pytorch,但Pytorch相對於其他東西比較大,所以這裡選擇單獨安裝,避免出錯。 -
在Pytorch官網
https://pytorch.org
選擇配置(有NVIDIA獨顯和沒獨顯不一樣)後,複製生成的程式碼,在conda中安裝 -
例如我這裡沒有NVIDIA的獨立顯示卡,所以選擇CPU版本
#我選擇的CPU版本,生成的下載連結 conda install pytorch torchvision torchaudio cpuonly -c pytorch
-
安裝完成後,檢視torch版本
#python 檢視torch版本 >>> import torch >>> print(torch.__version__) #python 判斷cuda能否使用 >>> import torch >>> torch.cuda.is_available() #True 有cuda False沒有cuda,我沒有NVIDIA獨顯且安裝的CPU版本,所以為False
1.3.下載Yolov5模型
- Github下載地址:
https://github.com/ultralytics/yolov5
- 如果訪問慢,可以訪問國內的Gitee,同步更新Github上的原始碼:
https://gitee.com/monkeycc/yolov5
- 我下載的是yolov5_v6.2版本,下載後,開啟yolov5的目錄
- 在conda終端(建議單獨創一個訓練Yolo的虛擬環境),例如,我這裡建立了一個名為Yolov5的虛擬環境,在這個環境下,安裝Yolov5的
requirements.txt
中的包 - 前面已安裝好Pytorch,安裝
requirements.txt
中的包時會自動檢測,只要滿足Yolov5的配置需求,就不會再下載Pytorch了(當然,前面下載Pytorch時,也應該放在同一個虛擬環境)
# 安裝requirements.txt中的依賴檔案
pip install -r requirements.txt # install
1.4.下載Yolov5的權重檔案
- 下載地址:
https://github.com/ultralytics/yolov5/releases
- 訓練速度:n>s>m>l>x,速度快,意味著精度低,但一般使用s就行了
- 下載後的
.pt
權重檔案可以直接放在yolov5的根目錄下,也可以在yolov5的根目錄下新建一個weights
資料夾,把權重檔案放到裡面
2.在Pycharm中初步除錯執行yolov5
2.1.Pycharm配置conda虛擬環境
- 在Pycharm中開啟yolov5資料夾,並配置好你之前建立的用於yolov5的虛擬環境
2.2. 執行yolov5根目錄下的detect.py
-
執行yolov5根目錄下的
detect.py
,看能否正常執行(這個就是預測/目標檢測,在官方下載的yolov5中,已經配置好了示例用的引數,配置好環境後,就可以直接執行)
-
這樣就是執行成功,結果儲存在
run\detect\exp4
目錄中,預測結果如下:
-
也可以在終端中執行
2.3.可能存在的問題
- 拋異常:
AttributeError: 'Detect' object has no attribute 'm'
- 解決:參考部落格:
https://blog.csdn.net/Joseph__Lagrange/article/details/108255992
- 建議使用官網上的每個版本對應權重檔案
3.訓練自己的資料集
- 由於我的電腦沒有獨立顯示卡,所以我就不在本地進行訓練了,後面介紹使用雲伺服器進行訓練
- 但在訓練我們自己的資料集之前,我們需要對進行訓練的圖片進行類別標註
- 如果你使用官網或其他人的已經標註好的資料集(例如:yolov5中已經配置好模型,引數的COCO128資料集),則可以直接配置引數後進行訓練,不需要自己標註訓練用的圖片
3.1.圖片類別標註
- 標註工具有很多,這裡我使用
Labellmg
,方便操作,且可以直接儲存為適用於yolo的.txt
格式,省去了格式轉換的麻煩
3.1.1.Labellmg安裝
-
官網下載地址:
https://github.com/heartexlabs/labelImg
-
安裝方式,以官網給出的
Windows + Anaconda
方式為例- 下載
labellmg
的code壓縮包,或使用git
方式克隆到本地 - 使用
Anaconda Prompt
進入下載的labellmg
資料夾
#安裝配置相關環境 conda install pyqt=5 conda install -c anaconda lxml pyrcc5 -o libs/resources.py resources.qrc #啟動labellmg python labelImg.py #指定引數啟動labellmg python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
- 下載
-
每次啟動都需要到你的
Labellmg
的目錄下啟動,例如我這裡放在D:\DeveloperTools\labelImg
目錄,啟動介面如下
-
安裝可能遇到的問題
# (1).出現:‘pyrcc5‘ 不是內部或外部命令,也不是可執行的程式 或批處理檔案。
# 解決:直接使用Anaconda/Minconda的預設(base)環境安裝即可,不要用自己另外建立的虛擬環境
#(2).出現:EnvironmentNotWritableError: The current user does not have write permissions to the target environm 當前使用者沒有對目標環境的寫入許可權
#解決:以管理員身份執行cmd或Anaconda Prompt即可
3.1.2.Labellmg使用
-
使用前的一個注意點
-
在
labellmg\data
目錄下,存在一個predefined_classes.txt
檔案
-
predefined_classes.txt
檔案記憶體在一些預設的標註型別,有15個,索引從0開始,[0,14]
-
需要注意,如果你用不到這麼多型別,則因該啟動
labellmg
之前就因該把這些預設刪除,或替換為自己需要的標註型別名稱,這些名稱的順序 必須和 你自己訓練資料時的xxx.yaml
檔案中標註的型別一致,且順序一致,索引從0開始,如果不一致,可能存在問題 -
例如,後面我這裡才發現我只需要兩個類別,但最開始是有15個類別的
-
主要的原因就是我的兩個類別的順序索引和
labellmg
生成的標籤順序索引不一致,現在只能手動修改.txt
中的索引了,所以建議一開始就指明自己需要哪些標籤類別
-
-
Labellmg使用
- Labellmg的特點是可以自己選擇標註的儲存型別,而labelme是沒有的。
- Labellmg的特點是可以自己選擇標註的儲存型別,而labelme是沒有的。
-
使用時的一些設定
-
設定標註的標籤的儲存路徑(資料夾)
-
設定自動儲存
-
快捷鍵:
A
:上一張圖,B
:下一張圖,W
:建立區塊(手動標註) -
標註時是滑鼠選擇一個起點後點選,按住滑鼠左鍵拖動,畫一個矩形框。
-
最終結果:一張圖片對應一個txt檔案
-
3.2.train.py和detect.py引數瞭解
- 參考影片:
https://www.bilibili.com/video/BV1tf4y1t7ru/?spm_id_from=333.999.0.0&vd_source=45352058e2e0900c3d75ba93406d8fdb
- 以下是觀看影片時做的筆記,可能有失偏頗,僅供參考,詳細的可以去看原影片
3.2.1.detect.py檔案部分引數
點選檢視detect.py的各引數含義
"""
# default是預設,action是選擇。需要的話自己配置引數
#有default值的引數,你不設定值,就會使用作者給你配好的預設引數值
*******************************下面是有default值的引數*************************************
1.'--weight' 權重
default 'yolo5s.pt'表示預設選擇'yolo5s.pt'檔案進行訓練,也可以改為其他的權重檔案。
例如'yolo5l.pt','yolo5m.pt','yolo5x.pt'
2.'--source' 資料來源
2.1.default 'data/images'存放目標檢測檔案的資料夾,在/images資料夾中可以存放圖片/影片(圖片推薦.jpg,影片推薦.mp4格式),同時建議只放同一類的檔案型別,比如只放圖片,或只放影片。
2.2.手機下載ip攝像頭,路徑改為http://admin:admin@手機上開啟之後顯示的ip地址,就可以實時檢測
電腦要和他在同一WiFi下,ip地址:後面的也寫
3.'--data'
default 'data/coco128.yaml' 預設使用官方yaml檔案
4.'--imgsz' 圖片尺寸大小
default=[640] 預設檢測時設定圖片尺寸為640,這個和圖片本身的尺寸不想關,並不是說會把目標圖片的大小或輸出的圖片大小改為設定的大小,而是在檢測圖片時,會等比例縮放為指定尺寸,這樣比較節約算力資源,如果按照圖片原本的尺寸去檢測,如果原本的圖片尺寸很大,則需要更多的算力與時間去檢測。但縮放圖片比例去檢測也意味著檢測精度的損失。
5.'--conf-thres' 檢測閾值
default=0.25 預設為0.25 檢測閾值設定越低,則檢測到的物體越多,但檢測精度也越低。在檢測結果中,圖片上會標出檢測到的物體有多少的機率是什麼已知的物體。比如:閾值設定越低,則可能將"貓"檢測標識為"狗"。反之,閾值設定得越高,則檢測精度越高,但檢測到的物體可能就很少,有時可能檢測不到物體。
6.'--iou-thres' 一般預設(NMS IoU threshold(閾值))
default=0.45,數值越大,則檢測結果中每個目標的標註會很多(原理就是值越大,就代表檢測的塊必須完全一致才算同一部份,否則就會算多個不同的部分),反之,數值越小,則檢測結果中每個目標標註就會較少,因為會把相似的部分當作同一個部分來標註。
7.'--max-det'
8.'--device'裝置
預設為空,會自動檢測使用的裝置,比如CPU,cuda等
*******************************下面是沒有default值的引數*************************************
#沒有default值的引數,不是需要設定什麼,而是使用者自己選擇是否啟用,預設為false,關閉狀態。如果使用者要啟用這些功能,只需要在執行時新增對應的引數(即設定為true)即可,執行時,會自動檢測,檢測到對應的引數為true,就會啟用對應的功能。
#比如在命令列中執行'detect.py'且實時顯示結果:
> python detect.py --view-img
9.'--view-img'實時顯示結果
執行過程中,會實時顯示檢測出的結果,如果是圖片,則每張每張的顯示結果(注:如果檢測很多張圖片,不要設定這個引數,否則會把每一張圖片都挨個顯示出來),如果是影片,則以影片形式實時播放檢測結果(如果電腦卡,那就是一幀一幀的播放,所以也不太建議設定這個引數)
10.'--save-txt'儲存檢測結果中的標註的座標
儲存結果為'.txt'檔案型別,結果中會多一個'./labels/'資料夾,儲存了生成的'.txt'檔案
11.'--save-conf' 儲存置信度
12.'--save-crop' 儲存裁剪的預測框
13.'--nosave' 不儲存檢測結果的圖片/影片
14.'--classes'過濾(可用於只保留指定的型別)
在檢測中的'.txt'檔案中,儲存了檢測目標的 類別(用不同的數字表示不同的類別),還有座標資訊(x,y,w,h)
例如:--classes 0 只保留0這個類別的檔案
--classes 0 2 3 只保留0,2,3這三個類別的檔案
例如:".txt"檔案中,人這個類別用'0'表示,如果設定引數--classes 0 ,則結果圖片中只會檢測人這個類別,即使圖片中有車,訊號,動物等,都不會檢測。
15.'--agnostic-nms' 增強nms效果
16.'--augment' 增強檢測(識別度可能會有提升,但也有翻車的(把狗識別為人),結果中標註框的顏色會加深一些)
17.'--visualize' 視覺化特徵
18.'--update' 最佳化
設定之後,會將執行過程中沒用到的部分設定為None,只儲存用到的部分
*******************************下面是有default值的引數*************************************
19.'--project' 檢測結果儲存的路徑
default=ROOT / 'runs/detect' 即預設儲存到專案下的'runs/detect/'資料夾
20.'--name' 檢測結果儲存到的資料夾的名稱
default='exp' 所以每次執行後,儲存結果的資料夾都叫'exp...'
*******************************下面是沒有default值的引數*************************************
21.'--exist-ok' 對於已存在的資料夾是否覆蓋
預設為false,即:如果已存在'--name'引數指定的資料夾'exp',則建立新的資料夾儲存結果,例如'exp2'。
同理,如果'exp2'也存在,就繼續增加數字,例如'exp3',直到不存在同名的資料夾
如果使用者設定了這個引數,則表示,始終把檢測結果儲存到'--name'引數指定的資料夾'exp'中,即使'exp'資料夾存在,裡面有檔案,也會儲存到這裡面。
*******************************下面是有default值的引數*************************************
22.'--line-thickness' 官方解釋:help='bounding box thickness (pixels)' 邊界框厚度(畫素)
default=3
23.'--hide-labels' 官方解釋:help='hide labels' 隱藏標籤
default=False
24.'--hide-conf' 官方解釋:help='hide confidences' 隱藏置信度
*******************************下面是沒有default值的引數*************************************
25.'--half' 官方解釋:help='use FP16 half-precision inference' 使用FP16半精確推理
26.'--dnn' 官方解釋:help='use OpenCV DNN for ONNX inference' 使用OpenCV DNN進行ONNX推理
*******************************下面是有default值的引數*************************************
27.'--vid-stride' 官方解釋:help='video frame-rate stride' 影片幀速率步幅
default=1,即預設一幀一幀的處理
"""
-
Pycharm中設定執行
detect.py
時的引數 -
在命令列中加入引數,就是加在
python detect.py
的後面,例如python detect.py --view-img
-
引數中設定外部圖片資料夾
-
設定外部影片檔案
3.2.2.train.py檔案部分引數
- 主要引數如下
點選檢視train.py的各引數含義
"""
# default是預設,action是選擇。需要的話自己配置引數
*******************************下面是有default值的引數*************************************
#有default值的引數,你不設定值,就會使用作者給你配好的預設引數值
1.'--weights'
default='yolov5s.pt' 預設使用'yolov5s.pt'權重檔案進行訓練。也可以改為其他的權重檔案。
例如'yolo5l.pt','yolo5m.pt','yolo5x.pt',當然你也可以使用其他訓練好的權重檔案。
如果是自己訓練資料集,則可以設定空參(即:default=''),讓程式來生成權重檔案。
2.'--cfg' 訓練用的模型檔案
default='' 預設為空,可以自己新增,例如使用官方的模型,在專案的'/models/'資料夾下
官方的有:'yolov5l.yaml','yolov5m.yaml','yolov5n.yaml','yolov5s.yaml','yolov5x.yaml'模型
3.'--data' 指定訓練用的資料集
default='data/coco128.yaml' 預設使用官方的資料集圖片(coco128即coco資料集的前128張圖片,因為完整的coco資料集圖片很多),開啟'data/coco128.yaml'檔案,可以發現其中指定的內容:
如果在本地專案中沒有找到coco128資料集,則會自動下載,但由於有些電腦可能自動下載失敗,可以複製給出的下載連結,手動去下載。download: https://ultralytics.com/assets/coco128.zip
'coco128.yaml'中還指定了資料集的路徑:path,train(訓練集),val(驗證集),test(測試集)的路徑。
其中 #Classes表示類別,names總共有80個,表示分了80個類別
當然,也可以使用其他的資料集,例如'coco.yaml','VOC.yaml'等官方提供的,或是別人的。
4.'--hpy' 超引數,用於對專案進行微調
default='data/hyps/hyp.scratch-low.yaml' 需要指定檔案路徑
需要注意:官方的'data/hyps/'資料夾下的'.yaml'檔案並不適合每個資料集,例如'hyp.scratch-low.yaml'的開頭幾行就標明瞭:# Hyperparameters for low-augmentation COCO training from scratch #用於從無到有的低增強COCO訓練的超引數,即這個超引數檔案只適用於COCO資料集進行訓練
5.'--epochs' 訓練幾輪
default=300,預設為訓練300輪
6.'--batch-size' 批次大小(一次訓練多少張圖片)(一次處理的資料量多少)
default=16,跑多少的資料打包成一個batch送到網路中,低配電腦建議調小,否則可能會爆視訊記憶體
建議default=4
7.'--imgsz' 設定訓練時影像的大小(不是把訓練的圖片的尺寸改為指定的尺寸)
default=640
*******************************下面是沒有default值的引數*************************************
8.'--rect' 矩陣訓練
以前,對於不是正方形的圖片,會自動填充圖片邊緣使其成為一個正方形圖片,現在用矩陣訓練,在滿足網路模型輸入要求的時候,就可以不必填充,原來是一個長方形圖片,還是按長方形算,減少不必要的冗餘資訊,提高處理效率。
9.'--resume' 從最近的(上一個)訓練模型中繼續訓練(斷點續訓)
default=False
如果要使用,除了啟用設定引數,還需要指定上一個訓練模型的路徑(.pt檔案的路徑)
將default=False改為default='權重.pt檔案的路徑'
斷點續訓,這個在epoch(訓練次數)太多,訓練容易卡死時可設定,這樣就可以接著上一次中斷的地方繼續訓練。
例如:上一次訓練到第7輪時中斷了,則可以設定這個引數,這樣就可以從第7輪繼續訓練。
但需要注意,不是指定了一個.pt檔案就可以了,還需要原來訓練時的所有相關聯的檔案。
10.'--nosave' help='only save final checkpoint'只儲存最後一次訓練的權重檔案
訓練過程中,每一輪都會生成一個.pt權重檔案,但訓練次數越多,權重檔案的精度越好。
11.'--noval' help='only validate final epoch' 僅驗證最後一輪
一般是每一輪都會驗證。有些版本的這個引數叫'--notest'
12.'--noautoanchor' help='disable AutoAnchor' 禁用自動定位(禁用錨點)
以前檢測影像,需要一個一個遍歷,有了錨點後,就能快速定位,減少資源佔用。所以預設是開啟錨點的
13.'--noplots' help='save no plot files'不儲存列印檔案
14.'--evolve' help='evolve hyperparameters for x generations'
調整超引數的一種方式,對引數進行遺傳演算法
15.'--bucket' help='gsutil bucket'
16.'--cache' 快取影像
help='--cache images in "ram" (default) or "disk"' 在RAM或DISK(磁碟)中快取影像,以提供更快的速度
預設關閉狀態
17.'--image-weights' help='use weighted image selection for training' 使用加權影像選擇進行訓練
理解:在上一輪的測試中,對於某些效果不太好的圖片,在下一輪測試中加一些權重
18.'--device' 裝置
預設為空,會自動檢測使用的裝置,比如CPU,cuda等
19.'--multi-scale' 對影像進行縮放比例變換
20.'--single-cls' help='train multi-class data as single-class'訓練的資料集是單類別還是多類別
資料集影像中,每一種物體定義為一個類別,例如:人、車、狗、貓......
21.'--optimizer' help='optimizer' 最佳化器
choices=['SGD', 'Adam', 'AdamW'], default='SGD' 官方提供了3種,預設為'SGD'
22.'--sync-bn' help='use SyncBatchNorm, only available in DDP mode'
僅對於那些有很多張顯示卡的電腦/伺服器,可以適用DDP分散式訓練
23.'--workers' help='max dataloader workers (per RANK in DDP mode)' 最大資料載入器工人數
對於DDP模式的引數設定
*******************************下面是有default值的引數*************************************
24.'--project' 訓練資料集後的輸出路徑
default='runs/train'
25.'--name' 訓練結果儲存到的資料夾的名稱
default='exp' 所以每次執行後,儲存結果的資料夾都叫'exp...'
*******************************下面是沒有default值的引數*************************************
26.'--exist-ok' 對於已存在的資料夾是否覆蓋
預設為false,即:如果已存在'--name'引數指定的資料夾'exp',則建立新的資料夾儲存結果,例如'exp2'。
同理,如果'exp2'也存在,就繼續增加數字,例如'exp3',直到不存在同名的資料夾
如果使用者設定了這個引數,則表示,始終把檢測結果儲存到'--name'引數指定的資料夾'exp'中,即使'exp'資料夾存在,裡面有檔案,也會儲存到這裡面。
27.'--quad' help='quad dataloader' 四資料載入器
實驗性功能,可能效果會更好,但也不確定,有時也更差
28.'--cos-lr' help='cosine LR scheduler' 餘弦排程
如果開啟,適用餘弦方式進行處理(餘弦退火演算法),如果沒有開啟則使用線性處理
*******************************下面是有default值的引數*************************************
29.'--lable-smoothing' elp='Label smoothing epsilon' 標籤平滑
避免在一些分類演算法中,一些過擬合的情況產生
default=0.0
30.'--patience' help='EarlyStopping patience (epochs without improvement)'
提前停止訓練(每一輪沒有變化)
default=100
31.'--freeze' help='Freeze layers: backbone=10, first3=0 1 2' 凍結層:主幹=10,第一層=0 1 2
default=[0]
32.'--save-preiod' help='Save checkpoint every x epochs (disabled if < 1)'
每x輪儲存日誌,不過好像要裝WandB這個外掛(這個外掛好像沒什麼用),裝了之後才能設定
default=-1,即禁用,裝了外掛後啟用,則將引數值改為>1的
33.'--seed' help='Global training seed' 全域性訓練傳遞
default=0
34.'--local_rank' help='Automatic DDP Multi-GPU argument, do not modify' 自動DDP多GPU引數,請勿修改
default=-1
-------------# Logger arguments 記錄器引數------------------
35.'--entity' help='Entity'實體
default=None(好像這個功能還沒實現,具體實現程式碼作者還沒寫)
36.'--upload_dataset' 上傳資料集 help='Upload data, "val" option' 上傳資料,“val”選項
default=False(好像這個功能還沒實現,具體實現程式碼作者還沒寫)
37.'--bbox_interval' help='Set bounding-box image logging interval' 設定邊界框影像記錄間隔
default=-1(好像這個功能還沒實現,具體實現程式碼作者還沒寫)
38.'--artifact_alias' help='Version of dataset artifact to use' 要使用的資料集工件版本
default='latest'(好像這個功能還沒實現,具體實現程式碼作者還沒寫)
"""
3.3.本地訓練
- 由於我的電腦沒有獨立顯示卡,所以我就不在本地進行訓練了,下面介紹使用雲伺服器進行訓練
3.4.雲端訓練
-
這裡我使用的是恆源雲(並非打廣告,畢竟也沒給錢ಥ_ಥ),也可使用阿里雲、騰訊雲等,隨意。
-
恆源雲官網:
https://www.gpushare.com
-
訪問官網,開啟文件中心,可以自行學習如何操作
-
下面是我自己的操作,僅供參考
3.4.1.資料上傳
-
第一步就可以先把自己的需要訓練的資料上傳,官方提供的OSS儲存(雲盤),好像是按時間收費的(不用的時候可以清空下空間)
-
上傳個人資料時,資料量越大,上傳時間越久(也取決於個人的網速),如果不需要的檔案,可以不用上傳
-
在使用者文件的資料上傳板塊,官方提供了三種上傳檔案的方式
-
這裡我選擇使用官方提供的OSS工具,上傳個人資料,OSS工具的下載安裝,可在官網的使用者文件中找到
-
下載後就是一個
oss.exe
檔案,不用安裝,直接使用,建議直接複製到需要上傳資料的資料夾 -
注意:OSS工具只能上傳壓縮包形式的檔案!,所以先把要上傳的資料壓縮為
.zip
檔案格式
-
雙擊執行
oss.exe
,啟動介面如下
-
輸入
login
,登入,接著輸入Username
和Password
,就是你註冊/登入時的賬號和密碼
-
輸入
mkdir oss://MyData
,就會在官網上的屬於你的OSS儲存中建立一個MyData
資料夾(可選)
-
上傳你的訓練資料到上面自己建立的資料夾中
-
這裡以
test.zip
為例,輸入cp test.zip oss://MyData/
即可上傳檔案到雲端目錄,上傳的快慢和檔案大小與自己的網速有關 -
注意:在本地上傳資料期間,需要把網頁端開啟,可能是保持連線吧,否則可能會上傳失敗,但還好有斷點續傳
-
輸入
ls -s -d oss://MyData/
檢視自己上傳的個人資料(壓縮包)
-
也可以在雲端的控制檯檢視到自己上傳的檔案
3.4.2.建立例項
-
在控制檯,我的例項中,點選建立例項
-
購買例項,選擇自己需要的計費模式,機型,顯示卡
-
關於映象選擇
-
可以選擇官方的映象
-
如果想圖個方便,直接去映象市場看看,有別人已經配置好的映象,可以直接用(推薦)
-
關於映象費用,購買映象是不花錢,但購買了映象,就相當於你把別人的映象複製到了你的雲空間,使用雲空間是收費的,就是佔用你的OSS儲存空間,超過免費的5GB容量是另外收費的,不過也很便宜的。
-
也可以先在映象中找一下,是否有自己需要的映象
-
例如用於訓練
Yolov5
的映象,點選新增到我的映象,即新增進自己賬戶的OSS儲存空間(按小時收費,也很便宜)
-
使用官方送的代金卷購買例項
-
建立例項後的介面,開啟
JupyterLab
3.4.3.開啟雲端控制檯,資料下載
-
選擇終端
-
使用前,先登入,輸入
oss login
進行登入
-
oss ls -s -d oss://datasets/
檢視之前上傳到雲端datasets資料夾的.zip
檔案 -
oss cp oss://datasets/yolov5.zip /hy-tmp/
下載壓縮檔案到/hy-tmp
目錄下
-
進入到
/hy-tmp
目錄,並檢視當前目錄下存在的檔案為yolov5.zip
-
使用
unzip yolov5.zip
命令,解壓檔案
-
解壓後再次檢視存在的檔案
-
當然也可以在左邊的樹形目錄中檢視
3.4.4.調整引數開始訓練
-
由於之前建立例項用的是已經配置好的Yolov5的環境映象,所以可以直接用
-
這裡以訓練我自己標註的20張圖片為例,初始權重使用
yolov5x.pt
,訓練300輪 -
train.py
引數設定,也可以自己設定其他的引數
-
其中
/data/MyTrains_parameter.yaml
的內容如下# parent # ├── yolov5 # └── datasets # └── MyTrains # parameter:引數配置 path: ../datasets/MyTrains # dataset root dir 資料集路徑 train: images/train # 訓練集 val: images/train # 驗證集(這裡把驗證集也使用訓練集,為了方便,讓訓練集和驗證集是一個,也沒啥大問題。) #test: images/test # 測試集(可選) # Classes nc: 2 # number of classes 你標註的類別的數量 names: 0: car 1: person
-
其中
/models/MyTrains_model.yaml
的內容,就是複製的原始碼中的/models/yolov5x.yaml
,然後將其中的nc
類別數量改為 2(你自己標註有幾個類別就改為幾個類別) -
開始訓練
-
訓練完成
3.4.5.預測
-
在
detect.py
的--weights
引數設定自己訓練後生成的best.pt
權重檔案 -
--source
引數設定你用於預測的圖片 -
--data
引數設定為訓練時的data/MyTrains_parameter.yaml
-
其他引數可以自行設定
-
開始預測
-
部分預測結果
-
只有20張圖,預測結果還是不太準確
3.4.6.訓練後的資料下載到本地
- 這裡我只把訓練結果
runs/
資料夾下載,因為其他都是本地上傳的,所以就全部下載了 - 在yolov5目錄下,壓縮
runs/
資料夾zip -r -q xxx.zip runs/ 將目錄 run/ 下的所有檔案,打包成一個壓縮檔案,並檢視了打包後檔案的大小和型別。 -r 參數列示遞迴打包包含子目錄的全部內容, -q 參數列示為安靜模式,即不向螢幕輸出資訊
-
將壓縮後的檔案,上傳到OSS雲端儲存空間,輸入
oss cp xxx.zip oss://MyData/
-
這一步是後面加的,所以壓縮後的名字不同
-
ls
在本地OSS中檢視OSS雲儲存空間中的檔案有哪些
-
將OSS雲端儲存空間中的壓縮檔案下載到本地
-
例如:我這裡下載到桌面,輸入
cp oss://MyData/test.zip D:\CYT\Desktop
以上就是我第一次訓練Yolov5的一些筆記記錄。