Swin-Transformer代码工程进行物体检测

摘要:
生成的coco格式的标注文件和图像数据用于Swin-Transformer工程代码进行训练。Swin-Transformer工程进行模型训练和测试Swin-Transformer代码地址:https://github.com/SwinTransformer/Swin-Transformer-Object-Detection,先按照说明安装。下面以Faster-RCNN进行说明,Swin-Transformer方法应该可类似处理。

Swin-Transformer代码工程进行物体检测第1张

(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好像有编码问题,换行符不对,重建一个就好。


免责声明:文章转载自《Swin-Transformer代码工程进行物体检测》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sql语句的join用法模二除下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

003-Centos7.3下安装Jumpserver 1.0.0(支持windows组件)

Jumpserver最新版本支持windows组件,废话不多介绍了,下面直接介绍下部署过程: 0)系统环境 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CentOS 7.3 IP: 192.168.10.210   [root@jumpserver-server ~]# cat /etc/red...