YOLOX-入門2-訓練-【Reproduce our results on COCO】
部署的平台:【極鏈AI雲平台】
YOLOX地址:
//github.com/Megvii-BaseDetection/YOLOX
復現YOLOX在COCO數據集的結果

數據集
在部署平台極鏈AI雲上,有提供數據集,其中就包括coco2017,可以直接用ln語句在自己的YOLOX路徑下建立軟鏈接,使用方便。
在極鏈AI雲提供的coco數據集中,有提示該coco數據集的路徑,可以直接複製過去,替代官方給的示例中的【/path/to/your/COCO】。

注意
這裡測試的是coco2017數據集,如果你想改其他的coco數據集,可以在/root/YOLOX/yolox/data/datasets/coco.py路徑下,改這個coco.py。
他這裡設置的是instances_train2017.json文件。
還有root/YOLOX/yolox/exp/yolox_base.py文件,如下圖2。
我目前只注意到這兩個,我沒有實際運行過用coco2014的。


epoch修改
在/root/YOLOX/yolox/exp/yolox_base.py文件中,可以修改epoch數。
原本設定的max_epoch是300。
我自己嘗試的時候,為了更快訓練完,改成了5。

運行
Python;toolbar:false">cd /root/YOLOX ln -s /datasets/coco2017 ./datasets/COCO python tools/train.py -n yolox-s -d 8 -b 64 --fp16 -o
其中,d後是GPU數量,b後是batch size,通常就是GPU數量乘8: -d: number of gpu devices -b: total batch size, the recommended number for -b is num-gpu * 8
一開始部落客在平台上創建實例的時候,由於貧窮,GPU數量選擇的是1個。
但是-d 1 -b 8,這樣子的參數,去跑coco2017,大概要跑一輩子。
所以,忍痛充錢,用8GPU的跑。
8GPU的跑5epoch,用時大約43分鐘。
2GPU的跑5epoch,預計用時是 2:16:55。(我就不等了,沒有跑完)
關於增加GPU的數量,現在平台還不能直接升。
可以先創建自定義鏡像,然後再從【數據管理】——【我的鏡像】——找到剛剛自定義創建的鏡像——【創建實例】——改選8個GPU數量
他的官方教程:使用過程中想要增加或減少顯示卡數量,更換顯示卡型號怎麼辦?
或者重新從安裝開始來一次,這樣可能報錯更少,更順利。
訓練過程
下面這個只是某一時刻的,運行一段時間後GPU-Util比較平均。




訓練結束
訓練結束,在YOLOX_outputs/yolox_s/目錄下產生了新的權重文件。
將events.out.tfevents這兩個文件copy到data-output路徑下,再打開tensorboard,就可以查看訓練結果的可視化展示。
在雲平台上操作的教程:TensorBoard 使用


結果對比
為了保持繼續深入學習的高漲的熱情,建立了一個帥哥測試數據集。
今天隨手測了最近看的一個韓劇的片段。
分別用yolox_m模型,和本篇部落格中只訓練5個epoch的/root/YOLOX/YOLOX_outputs/yolox_s/best_ckpt.pth.tar模型,運行同一段影片。
只訓練了40多分鐘,5個epoch的模型,全程只能識別出person這個類別,而且當人背向鏡頭的時候,識別他為人的概率只有50%左右。
所以這個就不放截圖了。
官方給的yolox_m模型就效果好很多。能識別出很多小物體。






