Deformable DETR进行目标检测,解决size mismatch问题

2023-05-16

问题描述:

strict=False 但还是size mismatch for []: copying a param with shape [] from checkpoint,the shape in cur []

接着(6条消息) Deformable DETR环境配置和应用_Alaso_soso的博客-CSDN博客_deformable detr

 上面的链接进行继续写,发现很多人同样也遇到了,我遇到的这个问题,找到了解决方案,记录一下,或许也可以解决在训练自己的模型的时候出现的size问题不匹配的问题.

背景:

前期只是用官方给的完整的deformable detr 模型进行预测的,因此没有出现size不匹配的问题,后面报了一大堆类似一下的错误,网上的有的人用pop解决了问题,然而我却不ok,这次使用的预训练模型是r50_deformable_detr_single_scale-checkpoint.pth:

size mismatch for transformer.level_embed: copying a param with shape torch.Size([1, 256]) from checkpoint torch.Size([64, 256])

解决方案:

首先定位到detect.py文件:detect.py参考链接,修改model_path,以为可以直接运行,结果gg了:

model_path = './r50_deformable_detr_single_scale-checkpoint.pth'

Deformable-DETR部署和体验 - 简书 (jianshu.com)

 在定位到load_model方法:

def load_model(model_path, args):
    model, _, _ = build_model(args)
    model.cuda()
    model.eval()
    ckpt=state_dict = torch.load(model_path)  # <-----------修改加载模型的路径

    msg=model.load_state_dict(state_dict["model"],strict=False)
    model.to(device)
    print("load model sucess")
    return model

 在定位到 model, _, _ = build_model(args),这一句创建模型代码上:

def build_model(args):
    return build(args)

在定位到build(args)这里

def build(args):
    # 类别个数
    # num_class = 20
    # num_classes = 20 if args.dataset_file != 'coco' else (num_class + 1)
    num_classes = 20 if args.dataset_file != 'coco' else 91
    if args.dataset_file == "coco_panoptic":
        num_classes = 250
    device = torch.device(args.device)

    backbone = build_backbone(args)

    transformer = build_deforamble_transformer(args)
    model = DeformableDETR(
        backbone,
        transformer,
        num_classes=num_classes,
        num_queries=args.num_queries,
        num_feature_levels=args.num_feature_levels,
        aux_loss=args.aux_loss,
        with_box_refine=args.with_box_refine,
        two_stage=args.two_stage,
    )
    if args.masks:
        model = DETRsegm(model, freeze_detr=(args.frozen_weights is not None))
    matcher = build_matcher(args)
    weight_dict = {'loss_ce': args.cls_loss_coef, 'loss_bbox': args.bbox_loss_coef}
    weight_dict['loss_giou'] = args.giou_loss_coef
    if args.masks:
        weight_dict["loss_mask"] = args.mask_loss_coef
        weight_dict["loss_dice"] = args.dice_loss_coef
    # TODO this is a hack
    if args.aux_loss:
        aux_weight_dict = {}
        for i in range(args.dec_layers - 1):
            aux_weight_dict.update({k + f'_{i}': v for k, v in weight_dict.items()})
        aux_weight_dict.update({k + f'_enc': v for k, v in weight_dict.items()})
        weight_dict.update(aux_weight_dict)

    losses = ['labels', 'boxes', 'cardinality']
    if args.masks:
        losses += ["masks"]
    # num_classes, matcher, weight_dict, losses, focal_alpha=0.25
    criterion = SetCriterion(num_classes, matcher, weight_dict, losses, focal_alpha=args.focal_alpha)
    criterion.to(device)
    postprocessors = {'bbox': PostProcess()}
    if args.masks:
        postprocessors['segm'] = PostProcessSegm()
        if args.dataset_file == "coco_panoptic":
            is_thing_map = {i: i <= 90 for i in range(201)}
            postprocessors["panoptic"] = PostProcessPanoptic(is_thing_map, threshold=0.85)

    return model, criterion, postprocessors

根据自己的类别修改num_classes,args是参数配置,此时就定位到configs文件夹下对应的.sh文件了。

 注意到这两个配置文件的区别在于--num_feature_levels 1,问题就出在这里,需要在运行detect.py文件的时候添加上这个配置参数。

python detect.py --num_feature_levels 1

这里就结束了,可以正常运行,进行图片视频的预测了。

 感谢某人的帮助捏。*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Deformable DETR进行目标检测,解决size mismatch问题 的相关文章

  • 为什么 C++ Hello World 二进制文件比等效的 C 二进制文件大?

    Bjarne Stroustrup 在他的常见问题解答中表示 当使用 gcc O2 编译时 使用 C 和 C 的 hello world 的文件大小是相同的 参考 http www stroustrup com bs faq html He
  • 声纳数据库有多大?

    这可能看起来像一个愚蠢的问题 事实上 这更像是一项民意调查 您的声纳数据库有多大 我需要它来估计托管我的 Sonar 实例的虚拟机的要求 Also 你的团队有多大 每次新提交在 Sonar 数据库中使用了多少额外字节 我将不胜感激任何帮助
  • 我的处理器上 C 语言中 int、short 和其他数据类型的范围?

    我正在读一本旧的 C 书 据此 int 范围值从 32768 到 32767 由于我的机器可以容纳比该限制更大的 int 我如何找到特定于我的机器的这些数据类型 short int long double float 的范围 有什么方法吗
  • 将图像分成3*3的块

    我有一个矩阵 它的维度恰好不是 3 的倍数 或者可能是 3 的倍数 我们怎样才能将整个图像分成3 3矩阵块 可以忽略最后不属于3 3倍数的 另外 3 3矩阵可以保存在数组中 a 3 b 3 window size x size f 1 a
  • 如何呈现更小的视图控制器

    我想要以比屏幕更小的尺寸呈现视图控制器 vc2 如何在 Swift 3 中做到这一点 感谢帮助 这是我的代码 IBAction func leftButtonPressed sender UIButton let vc2 self stor
  • 为什么C中函数的大小总是1字节?

    当我们使用以下命令检查函数的大小时sizeof 我们总是得到1 byte 这1个字节代表什么 这是一个约束违规 你的编译器should诊断它 如果它编译它 尽管如此 你的程序有未定义的行为 感谢 Steve Jessop对失败模式的澄清 并
  • JTextField 固定高度

    我如何获得JTextField当框架最大化时有固定的高度 我希望它看起来有点类似于 Ubuntu 上的 Skype 应用程序 private JTextField username private JPasswordField passwo
  • R ggplot2 - 底部的图例被剪切,如何动态找到图例的最佳列数?

    我想在底部制作一个带有图例的情节 但图例总是被剪切 因为看起来ggplot2无法自动确定底部图例中的最佳列数 我尝试自己做 但没有成功 假设我有以下内容mydf数据框 mydf lt data frame group paste0 gr 1
  • 如何找出网页浏览者每英寸的像素数?

    谁能想到一种方法来发现用户的每英寸像素数 我想确保图像显示在网络浏览器中exactly我需要它的大小 因此使用分辨率 我可以从用户代理获得 和每英寸像素的组合我可以做到这一点 但是 我不确定是否有任何方法可以发现用户的每英寸像素数 最好使用
  • 确定输入流的大小

    我目前的情况是 我必须读取一个文件并将内容放入InputStream 之后我需要将内容InputStream到一个字节数组中 它需要 据我所知 的大小InputStream 有任何想法吗 根据要求 我将显示我从上传的文件创建的输入流 Inp
  • 使用 WCF 流上传文件,从流中进行微小读取

    我已经使用WCF的流实现了文件上传 一切都按预期进行 但是我遇到了一个问题 我分配 4kb 缓冲区来从传入流中读取数据 但 WCF 仅读取 255 字节 这是我的上传功能 public UploadResponse UploadFile F
  • 如何可靠地获取 C 风格数组的大小?

    如何可靠地获取 C 风格数组的大小 经常推荐的方法似乎是使用sizeof 但它不起作用foo函数 其中x传入 include
  • Node.js:如何限制HTTP请求大小和上传文件大小?

    我正在使用 Node js 和 Express 我想限制 HTTP 请求的大小 比方说 如果有人向我发送超过 2 MB 的 HTTP 请求 那么我会立即停止该请求 我看了代码 我想如果我改变核心 我可以做到 但是 有没有办法设置max re
  • 如何让 Swing 应用程序感知屏幕尺寸变化?

    当我的 swing 应用程序运行时 我更改屏幕尺寸 例如从 1024x768 更改为 800x600 我可以收听任何活动以获得有关此事件的通知吗 或者 我可以每隔几秒检查一次屏幕尺寸 但 Toolkit getScreenSize 不断告诉
  • 如何让用户轻松选择在 Java Swing 应用程序中分配多少内存?

    我们有一个处理相对大量数据的 Swing 应用程序 例如 我们目前处理包含数百万行数据的 CSV 文件 出于性能和简单性的原因 我们将所有数据保留在内存中 然而 不同的用户需要处理的数据量以及 RAM 量也不同 创建安装程序时 我们当然需要
  • 如何在 C# 中获取文件夹大小? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 C 中获取目录大小 目录中的文件 https stackoverflow com questions 1118568 how do i get a directory size files i
  • jquery可调整大小附加图像大小问题

    我有下面的简单代码 当单击按钮时 它将图像附加到 container 问题是当我第一次单击按钮时 图像尺寸未正确附加 但是 当再次单击按钮时 我们会获得具有正确图像大小的附加图像 如果我们从等式中删除 resizing 这种情况就不会发生
  • Android Spinner 尺寸非常大

    我正在尝试获得像我的应用程序中那样的 ICS 旋转器 并玩了几个小时 最后我使用 HoloEverywhere 来获得它 并且它正在工作 但我有一个设计问题 即旋转器没有包装其我在 xml 中设置的内容 默认情况下如下所示 实际上 我在谷歌
  • 如何设置按钮的大小?

    我将按钮放在带有 GridLayout 的 JPane 中 然后我用 BoxLayout Y AXIS 将 JPanel 放入另一个 JPanel 中 我希望 GridLayout 中的按钮是方形的 我使用 tmp setSize 30 3
  • Android 已弃用屏幕尺寸?

    嘿 我需要在我的应用程序中获取屏幕的宽度 该应用程序将在 2 1 及更高版本上运行 我已经将其设置为如下所示 该方法已被弃用 我可能应该使用 getSize 或其他方式 但问题是 这是否适用于 3 0 和 4 0 等 Android 版本

随机推荐

  • Docker Dockerfile

    镜像的生成途径 xff1a Dockerfile基于容器制作 本篇介绍Dockerfile 文件说明 Dockerfile是一个包含用于组合映像的命令的文本文档 Docker通过读取Dockerfile中的指令自动生成镜像 基本结构 基本格
  • Shell学习--基本运算符与test命令

    原生bash不支持简单的数学运算 xff0c 但是可以通过其他命令来实现 xff0c 例如 awk 和 expr xff0c expr 最常用 expr 是一款表达式计算工具 xff0c 使用它能完成表达式的求值操作 例如 xff0c 两个
  • Shell学习--echo命令

    echo 用于字符串的输出 xff0c 命令格式如下 xff1a echo string 1 显示普通字符串 echo 34 It is a test 34 二者效果一致 echo It is a test 2 显示转义字符 xff0c 双
  • Shell学习--printf命令

    printf 命令模仿 C 程序库 xff08 library xff09 里的 printf 程序 xff0c 使用 printf 的脚本比使用 echo 移植性好 printf 使用引用文本或空格分隔的参数 xff0c 外面可以在 pr
  • Shell学习--流程控制

    一 if else 1 if 语法格式 if condition then command1 command2 commandN fi 也可以写成一行 if ps ef grep c 34 ssh 34 gt 1 then echo 34
  • Shell学习--Shell函数

    linux shell 可以用户定义函数 xff0c 然后在shell脚本中可以随便调用 一 简单的函数定义 1 shell中函数的定义格式如下 xff1a function funname action return int 说明 xff
  • Shell学习--Shell 输入/输出重定向

    大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回 到您的终端 一个命令通常从一个叫标准输入的地方读取输入 xff0c 默认情况下 xff0c 这恰好是你的终端 同样 xff0c 一个命令通常将其输出写入到标准输出 xff0
  • Shell学习--Shell 文件包含

    和其他语言一样 xff0c Shell 也可以包含外部脚本 这样可以很方便的封装一些公用的代码作为一个独立的文件 Shell 文件包含的语法格式如下 xff1a filename 注意点号 和文件名中间有一空格 或 source filen
  • 向Github上传文件或项目

    准备工作 xff1a 具有 Github 账号 xff0c 电脑已安装 Git Bash 一 在 Github 上创建新的仓库 1 登录到 Github 主页创建一个新的仓库 xff08 两种方法都可以 xff09 2 配置新建仓库的属性
  • Github分支创建、管理、下载与上传

    当我们想进行文件备份 文件分类 版本更新 分工合作等工作时 xff0c 对github仓库进行分支就变得非常重要 一 创建分支 在Github仓库创建时会生成默认的主分支 xff0c 一般名称为 main xff0c 我们可以以主分支为基础
  • 删除Github仓库中的指定的文件或文件夹

    在Github 仓库中是无法通过鼠标操作直接删除文件和文件夹的 xff0c 那只能通过 git 命令来执行删除操作 xff0c 当我们想删除 First 分支中的 folder 文件夹及其内部的文件 和 file c 文件 时 一 获取当前
  • 如何判断栈、堆的增长方向?

    如何判断栈的增长方向 xff1f 对于一个用惯了i386系列机器的人来说 xff0c 这似乎是一个无聊的问题 xff0c 因为栈就是从高地址向低地址增长 不过 xff0c 显然这不是这个问题的目的 xff0c 既然把这个问题拿出来 xff0
  • 向文件最后一行添加字符串

    当我们想向某个文件中添加指定的字符串时 xff0c 可以使用相关的指令 一 echo指令 使用echo追加重定向可以直接向文件中添加一行字符串 echo 34 add string 34 gt gt test txt 可以看到echo会在文
  • KernelShark分析内核任务执行过程

    一 KernelShark简介 KernelShark是一个非常实用的工具 xff0c 其可以搭配 trace cmd 使用 xff0c 将内核的任务执行过程以直观的形式展现出来 下面的文档中详细的介绍了KernelShark的使用方法和功
  • 关于Linux中断的相关查询

    1 linux 内核 proc interrupts 在 proc interrupts 文件中记录了 Linux 内核的中断信息 xff0c 我们可以通过命令查看 sudo cat proc interrupts 文件中以表格的形式列举出
  • Latex中编译IEEE sensors journal 模板中遇到的种种问题

    总的来说 xff0c 这个期刊的模板跟之前那个TIE的模板不太一样 xff0c 因为目前只接触了这两个 xff08 本人水平比较菜 xff09 1 编译左上角的Logo xff0c 一直在报错 xff0c 并没有显示成功 xff0c 一直显
  • python笔记:argparse模块

    用途 python用于解析命令行参数和选项的标准模块 xff0c 内置于python xff0c 不需要安装 使用步骤 引入模块 span class token keyword import span argparse 创建一个解析器 使
  • Hadoop伪分布部署

    Hadoop伪分布部署 一 任务描述二 任务目标三 任务环境四 任务分析五 任务实施步骤1 解压Hadoop压缩包步骤2 配置Hadoop文件 六 任务测试 原创申明 xff1a 未经许可 xff0c 禁止以任何形式转载 xff0c 若要引
  • ubuntu下共存多个python版本,切换python版本

    ubuntu下切换默认python版本 知乎 zhihu com 1 以 root 身份登录 xff0c 首先罗列出所有可用的python 替代版本信息 update alternatives list python 这一步可能会报错upd
  • Deformable DETR进行目标检测,解决size mismatch问题

    问题描述 xff1a strict 61 False 但还是size mismatch for copying a param with shape from checkpoint the shape in cur 接着 6条消息 Defo