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

news2024/11/20 4:54:52

论文地址: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

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

如有错误,欢迎指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/127869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序发布体验版流程

一、微信开发者工具操作 1. 点击 工具 -> 上传(或 直接点击右上角“上传”按钮) 【注意】 如果使用的测试 appid 则【上传】按钮不能点击,必须使用真实 appid 2. 如果之前有发布过体验版,会提示继续操作将会覆盖之前的体验版…

MyBatisPlus ---- 基本CRUD

MyBatisPlus ---- 基本CRUD1. BaseMapper2. 插入3. 删除a>通过id删除记录b>通过id批量删除记录c>通过map条件删除记录4. 修改5. 查询a>根据id查询用户信息b>根据多个id查询多个用户信息c>通过map条件查询用户信息d>查询所有数据6. 通用Servicea>IServi…

RK3588平台开发系列讲解(Display篇)开机视频的设置

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、开机视频功能介绍二、使用方法2.1、开启与关闭2.2、视频放置位置2.3、编译结果2.4、视频素材要求2.5、参数控制说明沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍RK3588平台开机视频的使用方法…

ARM64内存虚拟化分析(7)stage2异常处理

当虚拟机访问内存或虚拟机访问寄存器时,由于并没有分配真实的物理地址,并没有建立stage2映射,因此这两种情况会产生stage2异常处理,其中第一种情况为真实的stage2缺页,第二种情况为MMIO处理。同时如果在stage2产生外部…

零膨胀负二项回归案例分析

零膨胀负二项回归分析 计数研究模型中,常用泊松回归模型,但泊松回归模型理论上是要求平均值与标准差相等,如果不满足,则可使用负二项回归模型,负二项回归放宽了平均值标准差这一理论假定。 在实际研究中,…

网络协议类型

网络协议是一组规则、约定和数据结构,用于规定设备如何跨网络交换数据。换句话说,网络协议可以等同于两个设备必须理解的语言,以实现信息的无缝通信,无论其基础设施和设计差异如何。 OSI 模型:网络协议的工作原理 要…

Oracle数据库安装配置详细教程汇总(含11g、12c、18c、19c、21c)

不论你是数据库小白,还是久经沙场的技术专家,你接触和运维Oracle数据库的第一步可能都是安装配置。并且随着软硬件的升级、替换以及业务场景的变化,数据库安装也将是你常常会进行的操作之一。 这里先为大家附上Oracle各版本支持的生命周期及…

阶段性回顾(2)

1. 移位操作符的对象只能是整数,只能对整数的二进制位进行移动。 2. 二进制是数值的一种表示形式。一个整数占了四个字节,相当于一个整数可以用32位二进制位序列表示,那么这时候该如何判断正负呢?规定:这32位二进制序列的头一位如…

第二十二讲:神州路由器OSPF单区域路由的配置

实验拓扑图如下所示 设备 端口 IP 子网掩码 网关 Router-A F0/0 172.16.1.1 255.255.255.0 无 F0/3 172.16.0.1 255.255.255.0 无 Router-B F0/0 172.16.1.2 255.255.255.0 无 F0/3 172.16.2.1 255.255.255.0 无 PC1 172.16.0.2 255.255.255.0 172.1…

解决docker容器因报错无法启动的问题,检查、修复容器错误并重启

问题复现 使用: sudo docker ps -a查看当前的docker容器: 我们想启动name为【docker-mongo】的这个容器,因此要执行 sudo docker start docker-mongo但是执行后仍旧没有重启,大概率是重启的时候报错了,查看日志&a…

Spring Boot骚操作-多数据源Service层封装

mysql, es, mongodb 三个数据源用配置文件方式连接,JPA只是正对dao做了封装,本文主要介绍如何对service层进行封装。 Spring Boot - 多个数据源Service层封装 类关系图 封装的一些配置 application.yml pom.xml 封装后使用 MySQL 动态数据访问 Mong…

坦克大战1.0,java时间处理机制

1.java 绘图坐标体系 1.1 坐标体系-介绍 下图说明了Java坐标系。坐标原点位于左上角,以像素为单位。在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。…

金融业务如何高性能传输数据

对系统要求高,通常按金融级标准设计。金融数据传输要求速度快,流量大,极强容灾。 案例分析 简化版券商算法交易平台对接交易所: 涉及场景多。既有事务数据,也有市场数据模型简单。只涉及到2个主体复杂度可选。连接交…

【结构型】装饰模式(Decorator)

目录装饰模式(Decorator)适用场景装饰模式实例代码(Java)装饰模式(Decorator) 动态地给一个对象添加一些额外的职责。就增加功能而言,装饰模式 (Decorator) 比生成子类更加灵活。 适用场景 在不影响其他对象的情况下,以动态、透…

2023让工作效率直线飞升

2022年马上就要过去,过去的一年,腾讯云HiFlow和众多腾讯系应用也帮助了许多企业完成数字化转型,许多没有代码基础的业务人员也能通过搭建工作流,高效的处理生活&工作的繁杂事务,时间精力节省50%。把时间花在更重要…

开源 | 携程机票跨端 Kotlin DSL 数据库框架 SQLlin

作者简介禹昂,携程机票移动端资深工程师,专注于 Kotlin 移动端跨平台领域,Kotlin 中文社区核心成员,图书《Kotlin 编程实践》译者。一、背景2022年9月 Kotlin 1.7.20 发布之后,Kotlin Multiplatform Mobile&#xff08…

【计算机图形学入门】笔记7:Shading着色1(光照与基本着色模型)

07Shading着色(光照与基本着色模型)1.深度缓冲Z-buffering1.画家算法:先把远处的东西画在屏幕上,再画近处的,从而近处物体覆盖远处物体。(油画家)2.深度缓冲2.Shading着色1.我们目前学了哪些知识…

CleanMyMacX2023系统清理优化工具使用评测

如果你的macbook有点年头空间不够开始卡顿了,或者你是windows用户刚转来的,我强烈建议你安装一个cleanmymac!Mac电脑清理是可以直接使用储存空间管理(关于本机->储存空间->管理)来清理,但是这里的其他…

Android开发笔记(一百九十)增强了日志功能的第二版Logcat

从Android Studio Dolphin开始,查看应用日志的Logcat全面升级,堪称Logcat 2.0版本。下面就让我们看看LogcatV2.0究竟带来了什么新特性吧。 对于Android Studio的老用户来说,小海豚版本新出的LogcatV2.0在用法上有不小的差异,一开始…

Fisher卡方全流程汇总

Fisher卡方 卡方检验研究数据的独立性,在分析样本量较少(比如小于40),也或者期望频数出现小于5时,此时使用fisher卡方检验较为适合。SPSSAU医学研究模块中的卡方检验时,有提供2*2即4表格时提供fisher卡方检…