较新论文(2022)的模型EfficientFormer,改进的轻量化vision transformer,训练自己的数据集模型

 

目录

1. EfficientFormer介绍

2. 环境配置和修改文件

3.修改文件

4. 启动

运行环境:Windows10 I7-13700k RTX4080 Cuda11.3 

1. 介绍

  Transformer和CNN在CV领域广泛使用,CNN和Transformer已经对战多年, 在目标检测中通常是CNN比较常用,因为transfomer参数量大且训练时间长.

    最近的一篇论文提出了EfficientFormer是改进的VIT(vision transformer),其在轻量化的同时也能提高精度,并且目标是达到移动设备可以使用的速度。为了水论文,我们可以跑通这个模型,并训练自己的数据集,接下来我将一步步介绍如何训练自己的模型.从官方论文结果来看改进后的参数量和速度提升了很多. 源代码是基于mmdetction框架实现的。

代码论文:EfficientFormer

github源码:GitHub - snap-research/EfficientFormer: EfficientFormerV2 [ICCV 2023] & EfficientFormer [NeurIPs 2022]

2. 环境配置

   打开pycharm,创建一个环境,然后在终端依次输入以下代码,注意如果要用CUDA加速,pytorch可以到官网根据自己对应CUDA版本下载.

pip install -r requirements.txt
pip install -U openmim
mim install mmcv-full==1.7.1
mim install mmdet==2.28.2
mim install timm==0.6.13
pip install yapf==0.40.1
pip install apex

  注意:训练的数据集格式是CocoDataset,大家可以自己查找如何制作COCO2017数据集格式。

  3. 文件修改

  由于源代码是分布式训练的,且classes num数量不一致,我们需要修改代码。

(1)由于不使用实例分割,我们需要修改模型datasets为检测 configs/mask_rcnn_efficientformerv2_l_fpn_1x_coco.py修改 _base_ =[ ]中的datasets为cocodetction.py  如下

          

  (2) 由于官方模型框架使用了Coco数据集有80类分类,我们使用自己的数据集时需要修改detection/configs/_base_/models/mask_rcnn_r50_fpn 47行,66行num_classes 为你数据集的类别数,如我的是2.

  

  如果用不上实例分割,需要把56行至68行注释掉

(3) 修改detection/configs/datasets/coco_detection.py

 修改此文件中第二行的data_root到你的COCO数据集目录,并且把下面的代码改到对应的json 标签文件。

(4)在根目录创建一个weights文件夹,将预训练模型放进去.

  预训练模型在google,我这里提供百度网盘:EfficientFormerv2_L 提取码:1xlc

   如下

(5)由于使用的是MMdetection框架,其源代码的CocoDataset也是Coco数据集的类别,在训练自己的数据时会出现错误,所以我们要对mmdetection的coco代码进行修改,打开对应aconda环境的目录如我的C:\ProgramData\Anaconda3\envs\EfficientFormer-main\Lib\site-packages\mmdet\core\evaluation\class_names.py 将68行coco classes 改成自己的类别如图

然后是同样是以上目录,到mmdet\datasets\coco.py中24行的CLASSES也修改为自己的.

(6)因为源代码为分布式训练,对于单卡训练我们还需要修改源代码(后面才知道为什么要多卡训练,因为单卡4080要训练2天,哈哈)

  修改如下:C:\ProgramData\Anaconda3\envs\EfficientFormer-main\lib\site-packages\torch\nn\modules\batchnorm.py 中726行增加一个强行关闭分布式训练,如果多卡训练,那可以跳过。

need_sync = False

如图: 

  

4. 启动

  最后在终端cd 到detection文件夹下,使用命令即可启 动训练: 

python train.py configs/mask_rcnn_efficientformerv2_l_fpn_1x_coco.py

得到如下效果,eta显示要训练差不多2天.

 

  • 44
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值