佛山微网站推广,怎么入驻电商平台,新吁网站建设,带有网站开发的图片目录
【1 - 问题描述】
【2 - 报错位置检查】
【3 - 问题解决】
【4 - 解决的过程】 【1 - 问题描述】
在mmsegmentation中运行mask2former模型的分割任务遇到报错缺少关键字的错误#xff1a; TypeError: class Mask2FormerHead in mmseg/models/decode_heads/mask2form…目录
【1 - 问题描述】
【2 - 报错位置检查】
【3 - 问题解决】
【4 - 解决的过程】 【1 - 问题描述】
在mmsegmentation中运行mask2former模型的分割任务遇到报错缺少关键字的错误 TypeError: class Mask2FormerHead in mmseg/models/decode_heads/mask2former_head.py: __init__() got an unexpected keyword argument in_channels 【2 - 报错位置检查】 在我运行train.py命令中对应的--config 文件中确实有in_channels和strides等参数我在查看了Mask2Former的源码Mask2Former/mask2former/modeling/transformer_decoder/mask2former_transformer_decoder.py at main · facebookresearch/Mask2Former (github.com)中网络结构确实需要这些参数的输入 而在模型库的.../mmsegmentation/mmseg/models/decode_heads/maskformer_head.py下文中 maskformer_head.py 都说的是这个文件的head模块定义中只有如下简单的几个参数报错导致了__init__() got an unexpected keyword argument in_channels。 【3 - 问题解决】
根本原因在于没有安装mmdet这一图像检测的库maskformer这一实例分割网络依赖目标检测的结果故会调用mmdetection的类和模块
参考 快速入门 — MMDetection 3.3.0 文档
由于我只是将 mmdet 用作依赖项或第三方包故使用 MIM 安装它
mim install mmdet 到这里 我的__init__() got an unexpected keyword argument in_channels的报错就解决了
【4 - 解决的过程】
可选读在这里只是简单记录一下我的解决过程
通过搜索 ‘maskformer head定义in_channel’ 发现一篇很详细的博文mmdetection源码阅读--MaskFormer(三) - 知乎 (zhihu.com)。
对比博文中的代码发现我的mmseg分割工作的MaskFormer Head的定义maskformer_head.py为 看到“class Mask2FormerHead(MMDET_Mask2FormerHead):”意识到是继承了mmdet的类。并且在该maskformer_head.py的import中有这么一句
try:from mmdet.models.dense_headsimport Mask2FormerHead as MMDET_Mask2FormerHeadexcept ModuleNotFoundError:MMDET_Mask2FormerHead BaseModule # BaseModule即 mmseg.models,而mmseg中没有in_channels等参数的定义