Swin-Transformer代碼工程進行物體檢測


 

(1)數據轉換

由於之前一直用YoloV5做物體檢測,為了使用使用yolo格式的數據,首先需要把其轉化成需要的格式,這里我們轉化成coco格式:

參考:https://github.com/Taeyoung96/Yolo-to-COCO-format-converter

 

准備需要轉的Yolov5數據,如train數據,images是所有圖像數據,labels放置的標注文件,txt文件中每行是物體的類別和位置框坐標信息:

train
   images/1.jpg
   labels/1.txt

其中標注文本文件1.txt格式

0 0.70947265625 0.44525000000000003 0.2470703125 0.1355
0 0.606689453125 0.406 0.04638671875 0.061
0 0.770751953125 0.44425000000000003 0.09912109375 0.0785
0 0.77783203125 0.45825 0.11328125 0.1065

第一步:生成圖像數據路徑,如

python path_replacer.py -i train/images -p train.txt

 其中train.txt為train中圖像的路徑文件,即

/home/robot_data/train/images/3_3992_111-1121.jpg
/home/robot_data/train/images/17_8486_119-1103.jpg

第二步:根據生成的路徑文件生成coco格式的數據,這里需要改一下main的里類別,代碼里12-18行。最后運行方式:

python main.py -p train.txt --output train.json
train.json為coco的格式標注文件。 

類似的處理val和test數據。生成的coco格式的標注文件和圖像數據用於Swin-Transformer工程代碼進行訓練。


(2)Swin-Transformer工程進行模型訓練和測試

Swin-Transformer代碼地址:https://github.com/SwinTransformer/Swin-Transformer-Object-Detection,先按照說明安裝。下面以Faster-RCNN進行說明,Swin-Transformer方法應該可類似處理。

第一步,准備數據,放置在
data目錄下

data
    coco
        train2017/1.jpg
        val2017/2.jpg
        test2017/3.jpg
        annotations
               instances_train2017.json
               instances_val2017.json
               instances_test2017.json

 以上數據集可以自定義,然后修改數據配置文件即可,這里為了方便直接用coco的文件名

第二步
修改數據預處理文件里的類別定義,第22行,如定義為CLASSES = ('robot1', 'robot2', 'robot3', 'robot4', 'robot5'):

mmdet/datasets/coco.py

第三步,修改數據配置文件

configs/_base_/datasets/coco_detection.py

主要是修改數據集路徑

第四步,修改模型配置文件,修改類別個數nclasses,與第二步中CLASSES個數相同,第46行:

configs/_base_/models/faster_rcnn_r50_fpn.py

第五步,模型訓練,這里采用多GPU訓練,這里以2個GPUs為例,可以在 tools/dist_train.sh中進行GPU設置如export CUDA_VISIBLE_DEVICES=5,6,然后執行:

bash tools/dist_train.sh configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py 2

出現下面log文件表示訓練成功:

2021-08-11 03:48:24,197 - mmdet - INFO - Epoch [1][2400/2489] lr: 2.000e-02, eta: 5:09:08, time: 0.666, data_time: 0.013, memory: 5166, loss_rpn_cls: 0.0028, loss_rpn_bbox: 0.0038, loss_cls: 0.0230, acc: 99.1230, loss_bbox: 0.0464, loss: 0.0761
2021-08-11 03:48:57,368 - mmdet - INFO - Epoch [1][2450/2489] lr: 2.000e-02, eta: 5:08:28, time: 0.663, data_time: 0.013, memory: 5166, loss_rpn_cls: 0.0011, loss_rpn_bbox: 0.0037, loss_cls: 0.0239, acc: 99.1152, loss_bbox: 0.0490, loss: 0.0776

第六步,模型測試,這里采用多GPU訓練,這里以2個GPUs為例,可以在 tools/dist_test.sh中進行GPU設置如export CUDA_VISIBLE_DEVICES=5,6,然后執行:

bash tools/test.sh configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py work_dirs/faster_rcnn_r50_fpn_1x_coco/latest.pth 1 --eval bbox

原代碼里dist_test.sh好像有編碼問題,換行符不對,重建一個就好。

  




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM