TFA/FsDet训练自定义VOC数据集

本文详细介绍了如何在Python环境中配置Detectron2进行小样本目标检测,包括环境设置、数据集准备、预训练权重下载、基础训练、检测头初始化和迁移训练步骤。重点在于VOC格式数据集和Few-shot学习的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考博客:【小样本目标检测实践VOC格式】Frustratingly Simple Few-Shot Object Detection-优快云博客

一、配置环境

1、代码下载链接:GitHub - wz940216/few-shot-object-detection: Implementations of few-shot object detection benchmarks

2、创建环境

conda create -n tfa python=3.7 #创建名为tfa的环境
conda activate tfa #激活环境

3、pytorch安装

这里我安装的是torch 1.9.0 + cu111

pytorch网址链接:PyTorch

pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

4、detectron2安装

我安装的是对应torch1.9.0 + cu111的 detectron2 v0.5 版本(注意:detetron2需根据torch版本选择对应版本进行安装)

detetron2网址:Releases · facebookresearch/detectron2 (github.com)

python -m pip install detectron2==0.5 -f \
  https://dl.fbaipublicfiles.com/detectron2/wheels/cu111/torch1.9/index.html

5、其他库安装

cd 到下载的代码文件下,安装requirements.txt中所写库

python3 -m pip install -r requirements.txt

二、制作数据集

1、将自己的数据集准备好后放入代码中的datasets文件下,其中datasets/VOC2007/Annotations保存的为标签文件,datasets/VOC2007/ImageSets/Main保存的是训练,测试的txt文件,datasets/VOC2007/JPEGImages保存的是所有的图像(包括所有基类和新类训练、验证以及测试的图像)

2、下载官方预训练权重

下载链接:

https://link.youkuaiyun.com/?target=https%3A%2F%2Fdl.fbaipublicfiles.com%2Fdetectron2%2FImageNetPretrained%2FMSRA%2FR-101.pkl

3、制作few-shot数据集

修改fsdet/data/builtin.py文件中有关voc数据集代码

由于我的数据集中只有voc2007,为了方便起见,所有year中只保留了2007

 修改fsdet/data/builtin_meta .py中类别,我的数据集结构为 2 basec lasses,1 novel class

 修改fsdet/data/meta_pascal_voc .py中数据集路径

修改 datasets/prepare_voc_fews_shot .py中类别、路径后,运行,会在dadasets/vocsplit下生成few-shot数据集

 

三、训练

(1)基础训练

 修改configs/Base-Rcnn-FPN.yaml中学习率(自行选择是否修改)

修改configs/PascalVOC-detection/split/faster_rcnn_R_101_FPN_base1.yaml文件

weights修改为之前下载好的pkl文件路径,num_classes修改为基类,Datasets中train和test修改为我们注册好的数据集,max_iter可修改迭代次数

修改好后我们开始第一阶段训练,在终端运行以下代码 ,我采用单卡训练,故num-gpus为1

python3 -m tools.train_net --num-gpus 1 \
        --config-file configs/PascalVOC-detection/split1/faster_rcnn_R_101_FPN_base1.yaml

 (2)初始化检测头

在进行完基础训练后,会生成checkpoint文件夹,在其中找到model_final.pth文件,则证明训练完成

在tools/ckpt_surgery.py中修改src1,save-dir,method参数,其中src1为上一步所提到的checkpoint文件夹下model_final.pth文件,save-dir为初始化检测头后权重文件保存路径,method为初始化方法,这里选择随机初始化

 

 运行tools/ckpt_surgery.py,在save-dir中路径产生初始化后权重文件

 (3)迁移训练

这里我选择10shot训练方式,修改configs/pascalvoc/split1/faster_rcnn_ R_101_FPN_ft_all1_10shot.yaml文件中weights为上一步中转换后的权重文件,num-classes为所有类别,datasets修改为已注册的自定义数据集。

base-lr为学习率参数,可自行修改,ims_per_batch为batchsize参数,可自行修改,max-iters为迭代次数,可自行修改。

修改好后,终端运行

python3 -m tools.train_net --num-gpus 1 \
        --config-file configs/pascalvoc/split1/faster_rcnn_ R_101_FPN_ft_all1_10shot.yaml

训练完后,发现新类类别AP为0,故不冻结backbone进行训练,修改configs/pascalvoc/split1/faster_rcnn_ R_101_FPN_ft_all1_10shot.yaml文件中backbone中freeze参数为false

 重新训练后得到

至此,完成所有训练。 

评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值