Swin-Transformer-Object-Detection 配置与训练自己的数据集(踩坑)

一、环境配置

1. 矩池云相关环境租赁

镜像:
Pytorch 1.5.0
镜像描述:
预装:Python3.8, CUDA 10.1, cuDNN 7.6, Pytorch 1.5.0, Ubuntu 18.04

2. 安装pytorch及torchvision

conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.1 -c pytorch -y

3. 安装MMDetection

pip install openmim
mim install mmdet
4. 克隆仓库使用代码
 git clone https://github.com/SwinTransformer/Swin-Transformer-Object-Detection.git

5. 环境测试

 cd /mnt/Swin-Transformer-Object-Detection

新建valid.py 内容如下:

from mmdet.apis import init_detector, inference_detector

config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
# download the checkpoint from model zoo and put it in `checkpoints/`
# url: https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
checkpoint_file = 'faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'
device = 'cuda:0'
# init a detector
model = init_detector(config_file, checkpoint_file, device=device)
# inference the demo image
img = 'demo/demo.jpg'
result = inference_detector(model, 'demo/demo.jpg')
model.show_result(img, result)
model.show_result(img, result, out_file='demo/demo_result.jpg') # 保存推理图像

下载权重

mim download mmdet --config faster_rcnn_r50_fpn_1x_coco --dest .

装timm库

pip install timm

执行valid.py

python valid.py

遇见错误
AssertionError: MMCV==1.4.5 is used but incompatible. Please install mmcv>=1.2.4, <=1.4.0.
解决办法:降低mmcv版本

 pip install mmcv-full==1.3.17 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html

再执行valid.py

python valid.py

查看结果
在这里插入图片描述

二、训练自己的数据集

1 准备coco格式数据集

1 数据集标签转化

MMDetection目标检测框架采用的数据集格式是COCO格式,为了采用COCODataset 类来加载数据并进行训练以及评测,需要将VisDrone数据集转换为COCO格式,可参考VisDrone数据集转COCO格式数据集

1.1 COCO数据集格式介绍

MS COCO 是google 开源的大型数据集, 分为目标检测、分割、关键点检测三大任务, 数据集主要由图片和json 标签文件组成。 对于目标检测,json文件的格式主要如下:
在这里插入图片描述
其中共包括6个字段,实际应用中,info和license字段用不上。
对于本实验转化后的数据集包括4个字段
在这里插入图片描述
images字段又包括4项字段

  • filename:图片名
  • height:高
  • width:宽
  • id
    在这里插入图片描述
    其中最重要的是id字段,代表的是图片的id,每一张图片具有唯一的一个独特的id。

annotations字段包含多个annotation实例的一个列表,annotation类型本身又包含了一系列的字段,如这个目标的category id和segmentation mask。segmentation格式取决于这个实例是一个单个的对象(即iscrowd=0,将使用polygons格式)还是一组对象(即iscrowd=1,将使用RLE格式)
在这里插入图片描述

  • id字段:指的是这个annotation的一个id
  • image_id:等同于前面image字段里面的id。
  • category_id:类别id
  • segmentation:用于分割
  • area:标注区域面积
  • bbox:标注框,左上角坐标 标注框宽和高
  • iscrowd:决定是RLE格式还是polygon格式。

categories字段的id数,就是类别数。在这里插入图片描述

  • id:类别id
  • name:类别id对应的名字

参考链接:COCO数据集介绍

1.2 上传数据集并解压

已按照前文进行了标签转化,为了实现在训练,将处理好的数据集上传至data/coco路径下。

2 改变类别数和类别名

  1. 修改Swin-Transformer-Object-Detection/mmdet/datasets/coco.py的CLASSES
  2. 修改Swin-Transformer-Object-Detection/mmdet/core/evaluation/class_names.py 的coco_classes
  3. 修改configs中的num_classes
  4. 执行 pip install -v -e .

3 如何去除实例分割,仅进行目标检测

重点参考该链接,根据该链接可正常训练

参考链接,此链接说了修改方法,但是试了会报新的错 “NoneType” object is not iterable,未解决
在这里插入图片描述

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开始学AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值