亚洲国产精品乱码一区二区,美景房屋2免费观看,哎呀哎呀在线观看视频高清国语,从镜子里看我是怎么C哭你

Article / 文章中心

YOLOX目標(biāo)檢測之入門實戰(zhàn)-win10+cpu運(yùn)行YOLOX

發(fā)布時間:2022-10-20 點擊數(shù):3571

    YOLOX 是曠視開源的高性能檢測器。曠視的研究者將解耦頭、數(shù)據(jù)增強(qiáng)、無錨點以及標(biāo)簽分類等目標(biāo)檢測領(lǐng)域的優(yōu)秀進(jìn)展與 YOLO 進(jìn)行了巧妙的集成組合,提出了 YOLOX,不僅實現(xiàn)了超越 YOLOv3、YOLOv4 和 YOLOv5 的 AP,而且取得了極具競爭力的推理速度。

  7f654c17ec08012d44a572019fdd2bab.png

 前言:  不少開發(fā)者對 YOLOX 很感興趣 , 希望在自己的筆記本安裝測試,哪怕速度慢一些,  但筆記本一般都沒有配置帶CUDA 核心的GPU 

  YOLOX 在CPU 環(huán)境中碰到的問題及解決方法 , 總結(jié)了一下,  大部分是缺少判斷GPU 導(dǎo)致的cuda 類的錯誤 !

一、 配置基礎(chǔ)環(huán)境

本機(jī)的環(huán)境:

操作系統(tǒng) Win10
Python版本 3.8.10
Pytorch版本 1.12+cpu
Cuda版本 None

 

1.1 下載源碼

 

GitHub地址:https://github.com/Megvii-BaseDetection/YOLOX,下載完成后放到D盤根目錄

 

然后執(zhí)行下面的命令,

 

1)  安裝所有的依賴包。

 

pip install -r requirements.txt

 

 

 

錯誤提示 :   error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsof
t C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

 

 

選擇合適的版本,  (注意, 如果是 windows7 ,則需要找到對應(yīng)的老版本,  如 :vs_BuildTools_2019)  

 

 

完成安裝后,再執(zhí)行 

 

pip install -r requirements.txt

 

 

 

2) 執(zhí)行安裝 yolox setp  命令

   python setup.py install

 

二、 驗證預(yù)測環(huán)境

下載預(yù)訓(xùn)練模型,本文選用的是YOLOX-s,下載地址:https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.pth。

下載完成后,將預(yù)訓(xùn)練模型放到工程的根目錄,如下圖:

然后驗證環(huán)境,執(zhí)行:

python tools/demo.py image -f exps/default/yolox_s.py -c ./yolox_s.pth --path assets/dog.jpg --conf 0.3 --nms 0.65 --tsize 640 --save_result --device cpu

 

打開提示中的圖片文件

/YOLOX_outputs\yolox_s\vis_res\2022_10_20_17_36_48\dog.jpg

 

看到上圖說明預(yù)測的環(huán)境沒有問題了。(訓(xùn)練的環(huán)境更復(fù)雜)

三、 配置訓(xùn)練所需環(huán)境

2.1  準(zhǔn)備數(shù)據(jù) 

         下載地址 :http://www.newxtc.com/download.php?id=10

        將下載的 VOCdevkit.zip  解壓縮到  yolox根目錄\yolox\data\

 

2.2 修改類別

1) 文件路徑:exps/example/yolox_voc/yolox_voc_s.py,本次使用的類別有2類,所以將num_classes修改為2

2) 打開yolox/data/datasets/voc_classes.py文件,修改為自己的類別名:

3)  修改一個BUG: 打開yolox/data/datasets/voc.py文件,找到  _do_python_eval 方法

  修改前 :  annopath = os.path.join(rootpath, "Annotations", "{:s}.xml")

  問題導(dǎo)致,目錄被截斷,  始終輸出   {:s}.xml

  修改后: annopath = os.path.join(rootpath, "Annotations") + "\{:s}.xml"

4)

2.3 修改數(shù)據(jù)集目錄

文件路徑:exps/example/yolox_voc/yolox_voc_s.py,

找到  wait_for_the_master 方法

data_dir修改為“D:\YOLOX-main\yolox\data\VOCdevkit”,

image_sets刪除2012的,最終結(jié)果如下:

接著往下翻,找到  get_eval_loader ,如下圖:

2.4 修改tools/train.py cpu 參數(shù)

執(zhí)行訓(xùn)練腳本:

python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 --fp16  -c yolox_s.pth

torch 報錯

在tools/train.py中修改 1 個地方,

 

2.5 修改 yolox/core/train.py cpu 參數(shù)

打開 yolox/core/trainer.py 文件

1)找到  train_one_iter方法,

 

 

 

執(zhí)行訓(xùn)練腳本:

python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 --fp16  -c yolox_s.pth

數(shù)據(jù)預(yù)加載部分報錯

 

2)找到  train_one_iter方法,根據(jù)顯卡設(shè)備數(shù)判斷是否加載預(yù)加載方法

 

 

 

3) 找到  after_iter  方法,  根據(jù)顯卡設(shè)備數(shù)判斷是否執(zhí)行 random resizing 方法 :

 

 

2.6 修改 voc_evaluator.py cpu 參數(shù)

打開YOLOX/evaluators/voc_evaluator.py 文件

1) 找到  evaluate 方法, 判斷 是否為 GPU ,將 tensor_type = torch.cuda.FloatTensor 

     修改為  tensor_type = torch.FloatTensor

2) 同方法中, 往下翻頁, 判斷 是否為 GPU , 將statistics = torch.cuda.FloatTensor(xxx)

      修改為statistics = torch.FloatTensor(xxx)

四、 訓(xùn)練數(shù)據(jù)及驗證結(jié)果

 

1  開始訓(xùn)練數(shù)據(jù)(CPU速度慢,2天左右)

執(zhí)行訓(xùn)練腳本:

python tools/train.py -f exps/example/yolox_voc/yolox_voc_s.py -d 1 -b 4 --fp16  -c yolox_s.pth


CPU 版本根據(jù)機(jī)器配置不同速度不同,本例中跑一個 epoch 大概為 10分鐘,  300個 epoch 為 50個小時

 

2  驗證結(jié)果

執(zhí)行 demo 腳本

 

python tools/demo_air.py image -f  exps/example/yolox_voc/yolox_voc_s.py -c ./yolox_air.pth --path assets/aircraft_107.jpg --conf 0.8 --nms 0.65 --tsize 640 --save_result


python tools/demo_air.py image -f  exps/example/yolox_voc/yolox_voc_s.py -c ./yolox_air.pth --path assets/oiltank_406.jpg --conf 0.8 --nms 0.65 --tsize 640 --save_result

 

查看輸出結(jié)果 YOLOX_outputs\yolox_voc_s\vis_res\xxxx_xx_xx\*.jpg