小样本目标检测:few-shot-object-detection训练自己的数据集

few-shot-object-detection代码实验过程

FsDet包含ICML 2020论文的官方小样本检测实现
论文地址:
Frustratingly Simple Few-Shot Object Detection.
小样本目标检测:few-shot-object-detection训练自己的数据集_第1张图片

除了以前工作中使用的基础,我们还在三个数据集上引入了新的基准:PASCAL VOC,COCO和LVIS。 我们对多组实验的多次抽样训练样本进行了抽样,并报告了基础班和新颖班的评估结果。 这些在Data Preparation.中有更详细的描述。

我们还为我们的两阶段微调方法(TFA)提供了基准测试结果和经过预训练的模型。 在TFA中,我们首先在数据丰富的基类上训练整个对象检测器,然后仅在一个小的平衡训练集上微调检测器的最后一层。 有关我们提供的模型,请参见 Models,有关模型训练和评估的说明,请参见 Getting Started。

FsDet的模块化程度很高,因此可以轻松添加自己的数据集和模型。 该存储库的目标是为检测少量物体提供一个通用框架,该框架可用于将来的研究。

一、基础配置

1、代码下载

https://github.com/wz940216/few-shot-object-detection

2、windows10配置安装detectron2

https://blog.csdn.net/qq_35030874/article/details/116915874?spm=1001.2014.3001.5501

3、运行demo测试环境

下载作者训练模型 http://dl.yf.io/fs-det/models/

在 fsdet/model_zoo/model_zoo.py中找一个model_final.pth下载,要对应模型相应的yaml文件

找两张图片,命名为 input1.jpg input2.jpg 图片和model_final.pth放在demo文件夹中,

configs中的yaml文件要和下载的model_final.pth相对应

修改 faster_rcnn_R_101_FPN_ft_all_1shot.yaml 中的WEIGHTS为model_final.pth 的路径

运行

python -m demo.demo --config-file configs/COCO-detection/faster_rcnn_R_101_FPN_ft_all_1shot.yaml --input input1.jpg input2.jpg model_final.pth

看到输出图片后demo运行成功。

二、数据集准备

1、源代码支持 coco、voc数据集格式。

2、txt形式的标注转为coco格式的标注。

转换脚本:

1、rename.py 重命名图像和txt标注文件。去掉汉字和其他字符。

2、数据集分割.py 将图片分成train、test两部分 。

3、txt2coco.py 将txt格式标注转换为json格式的标注。

运行脚本过程中注意修改里面的文件路径

三、相关代码修改

fsdet/data/builtin.py 中将coco数据集相关路径改成自己的数据集路径

小样本目标检测:few-shot-object-detection训练自己的数据集_第2张图片

shot改为自己的

小样本目标检测:few-shot-object-detection训练自己的数据集_第3张图片

built_meta.py中将coco数据集路径改为自己的数据集路径

小样本目标检测:few-shot-object-detection训练自己的数据集_第4张图片

重新定义novel类别

小样本目标检测:few-shot-object-detection训练自己的数据集_第5张图片

类别改为自己的类别个数

小样本目标检测:few-shot-object-detection训练自己的数据集_第6张图片

fsdet/evaluation/coco_evaluation.py中修改coco的类别为自己的

小样本目标检测:few-shot-object-detection训练自己的数据集_第7张图片

config/defult.py中numberworker改成0.numberworker在win10中会报错。

小样本目标检测:few-shot-object-detection训练自己的数据集_第8张图片

四、配置文件修改

主要是权重路径的修改、数据集名字的修改、训练超参数、权重数据路径的修改

训练base的yaml

小样本目标检测:few-shot-object-detection训练自己的数据集_第9张图片

训练few-shot的yaml共有三个,大同小异

小样本目标检测:few-shot-object-detection训练自己的数据集_第10张图片

五、训练过程

1、先训练base数据集

python -m tools.train_net --num-gpus 1 --config-file configs/COCO-detection/faster_rcnn_R_50_FPN_base.yaml

2、将模型最后一层添加新类别 这里选择随机初始化新类别的参数

python -m tools.ckpt_surgery --src1 F:/workspace/Daheng/Deep-learning-library/few-shot-object-detection-master/checkpoints/coco/faster_rcnn/faster_rcnn_R_50_FPN_base_custom/10000step/model_final.pth --method randinit --save-dir checkpoints/coco/faster_rcnn/faster_rcnn_R_50_FPN_base

3、训练1 、2 、3 shot的小数据集,使用 test_all 数据集测试

这里写成一个脚本,按顺序训练三个小数据集并测试。

运行

python train_few_shot.py

github https://github.com/wz940216/few-shot-object-detection-custom

你可能感兴趣的:(踩坑记录,深度学习,python,计算机视觉,windows,机器学习)