当前位置: 首页 > news >正文

【代码调试】《FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding》

论文地址:https://arxiv.org/pdf/2103.05950.pdf
代码地址:https://github.com/megvii-research/FSCE
论文阅读:https://blog.csdn.net/qiankendeNMY/article/details/128390284

我的配置:
Python :3.8(ubuntu18.04)
Pytorch :1.6.0
Cuda :10.1
GPU:RTX 2080 Ti(11GB) * 2

1、依赖安装

requirements.txt文件下载:https://github.com/ucbdrive/few-shot-object-detection

pip install -r requirements.txt

2、 安装pycocoapi

pip install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'

3、安装fvcore库

pip install 'git+https://github.com/facebookresearch/fvcore'

报错:
在这里插入图片描述

解决参考:
https://blog.csdn.net/weixin_45355608/article/details/116528406

4、Build

python setup.py build develop

4.1、报错1

解决:
(1)修改 ./fedet/model_zoo下configs文件的内容,改成configs文件夹所在的路径

(2)执行以下命令,创建软链接

ln -sf 【configs文件夹所在的路径】 ./fsdet/model_zoo

例如:

ln -sf /root/autodl-tmp/configs ./fsdet/model_zoo

4.2、报错2

在这里插入图片描述
解决:
降低pytorch的版本,原来我的pytorch版本是1.6,降低到了1.4就可以正常运行了:
https://github.com/megvii-research/FSCE/issues/19

build成功

5、下载VOC数据集

cd datasets
wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar
wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
tar xf VOCtrainval_11-May-2012.tar
tar xf VOCtrainval_06-Nov-2007.tar
tar xf VOCtest_06-Nov-2007.tar

6、训练基础检测器

python tools/train_net.py --num-gpus 2 --config-file configs/PASCAL_VOC/base-training/R101_FPN_base_training_split1.yml

6.1、报错1

解决:
手动下载pkl文件:
https://dl.fbaipublicfiles.com/detectron2/ImageNetPretrained/MSRA/R-101.pkl
然后,修改yml.py中pkl文件的路径,改为pkl文件在本机上的存储路径,例如: /path/to/ImageNetPretrained/MSRA/R-101.pkl.

6.2、报错2

Traceback (most recent call last):
  File "/root/miniconda3/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 20, in _wrap
    fn(i, *args)
  File "/root/autodl-tmp/fsdet/engine/launch.py", line 84, in _distributed_worker
    main_func(*args)
  File "/root/autodl-tmp/tools/train_net.py", line 116, in main
    return trainer.train()
  File "/root/autodl-tmp/fsdet/engine/defaults.py", line 397, in train
    super().train(self.start_iter, self.max_iter)
  File "/root/autodl-tmp/fsdet/engine/train_loop.py", line 132, in train
    self.run_step()
  File "/root/autodl-tmp/fsdet/engine/train_loop.py", line 212, in run_step
    loss_dict = self.model(data)
  File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/parallel/distributed.py", line 458, in forward
    output = self.module(*inputs[0], **kwargs[0])
  File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/root/autodl-tmp/fsdet/modeling/meta_arch/rcnn.py", line 166, in forward
    _, detector_losses = self.roi_heads(images, features, proposals, gt_instances)
  File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/root/autodl-tmp/fsdet/modeling/roi_heads/roi_heads.py", line 443, in forward
    losses = self._forward_box(features_list, proposals)  # get losses from fast_rcnn.py::FastRCNNOutputs
  File "/root/autodl-tmp/fsdet/modeling/roi_heads/roi_heads.py", line 464, in _forward_box
    box_features = self.box_pooler(features, [x.proposal_boxes for x in proposals])  # [None, 256, POOLER_RESOLU, POOLER_RESOLU]
  File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/root/autodl-tmp/fsdet/modeling/poolers.py", line 233, in forward
    output[inds] = pooler(x_level, pooler_fmt_boxes_level)
  File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 550, in __call__
    result = self.forward(*input, **kwargs)
  File "/root/autodl-tmp/fsdet/layers/roi_align.py", line 93, in forward
    return roi_align(
  File "/root/autodl-tmp/fsdet/layers/roi_align.py", line 19, in forward
    output = _C.roi_align_forward(
RuntimeError: Not compiled with GPU support

这个问题死活解决不了,删了所有环境重新配置之后就没有再出现这个问题了。但是花了不少时间,希望有大佬看到的话能够提出解决方案。

基础训练完成:
在这里插入图片描述

7、随机初始化新类别的权重

python tools/ckpt_surgery.py --src1 checkpoints/voc/faster_rcnn/faster_rcnn_R_101_FPN_base1/model_final.pth --method randinit --save-dir checkpoints/voc/faster_rcnn/faster_rcnn_R_101_FPN_all1

8、数据集split

方法一:

python datasets/prepare_voc_few_shot.py --seeds 1 30

方法二:直接选择下载作者提供的网页数据集

wget -r -R index.html http://dl.yf.io/fs-det/datasets

将下载好的VOC数据集存放在datasets文件夹中的vocsplit文件夹下:

注:

9、微调

修改模型的权重路径为model_resnet_surgery.pth文件的保存路径:
在这里插入图片描述

python tools/train_net.py --num-gpus 2 \
        --config-file configs/PASCAL_VOC/split1/10shot_CL_IoU.yml

微调结束:
在这里插入图片描述

10、评估

python tools/test_net.py --num-gpus 2 \
        --config-file configs/PASCAL_VOC/split1/10shot_CL_IoU.yml \
        --eval-only

报错:
在这里插入图片描述

解决:
参考:https://github.com/megvii-research/FSCE/issues/9

评估结束:
在这里插入图片描述

如有错误,欢迎指正!

相关文章:

  • 我把这一年学的 CSS 知识点精炼总结成了一篇文档
  • Vim生成递增递减的数字【记录器的使用】
  • 学习poi导出excel之XSSFWorkbook
  • 测试工程师正遭「革命」 AI将改写测试模式
  • SpringBoot 的配置
  • FineReport报表设计工具- 配置DB2外接数据库(1)
  • 【NI Multisim 14.0编辑环境——工具栏】
  • css中动画之transition
  • 【HTML】再见2022!一起来写一个响应式跨年倒计时吧!(附源码)
  • Spring MVC框架学习
  • 第004课 - 项目微服务架构图
  • BOSS直聘自动投简历的实现过程
  • 【高阶数据结构】二叉树的非递归遍历
  • 【LeetCode】从前序与中序遍历序列构造二叉树 [M](二叉树重构)
  • C++GUI之wxWidgets(6)-一步步做zip精灵(1)
  • 分享的文章《人生如棋》
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • go语言学习初探(一)
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Linux Process Manage
  • mockjs让前端开发独立于后端
  • PHP 7 修改了什么呢 -- 2
  • SQLServer之创建显式事务
  • 大整数乘法-表格法
  • 使用权重正则化较少模型过拟合
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 译有关态射的一切
  • MyCAT水平分库
  • ​VRRP 虚拟路由冗余协议(华为)
  • # Maven错误Error executing Maven
  • #QT(TCP网络编程-服务端)
  • #Z2294. 打印树的直径
  • $.each()与$(selector).each()
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (2020)Java后端开发----(面试题和笔试题)
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (30)数组元素和与数字和的绝对差
  • (52)只出现一次的数字III
  • (LeetCode C++)盛最多水的容器
  • (python)数据结构---字典
  • (二)fiber的基本认识
  • (二)正点原子I.MX6ULL u-boot移植
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET轻量级ORM组件Dapper葵花宝典
  • .NET实现之(自动更新)
  • .NET中的Exception处理(C#)
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .sh
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @GetMapping和@RequestMapping的区别
  • @Not - Empty-Null-Blank