few-shot-object-detection代码实验过程
FsDet包含ICML 2020论文的官方小样本检测实现
论文地址:
Frustratingly Simple Few-Shot Object Detection.
除了以前工作中使用的基础,我们还在三个数据集上引入了新的基准: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数据集相关路径改成自己的数据集路径
shot改为自己的
built_meta.py中将coco数据集路径改为自己的数据集路径
重新定义novel类别
类别改为自己的类别个数
fsdet/evaluation/coco_evaluation.py中修改coco的类别为自己的
config/defult.py中numberworker改成0.numberworker在win10中会报错。
四、配置文件修改
主要是权重路径的修改、数据集名字的修改、训练超参数、权重数据路径的修改
训练base的yaml
训练few-shot的yaml共有三个,大同小异
五、训练过程
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
版权声明:本文为CSDN博主「一个王同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35030874/article/details/116996814
暂无评论