DG2013SP1_1100U1.exe 与 ATEN 62US USB型多电脑切换器应用冲突

本文详细记录了解决在安装驱动精灵2013后使用KVM时出现的延迟问题的过程。包括与ATEN技术支持的沟通、识别问题原因以及最终通过卸载驱动精灵而解决问题的方法。

1、安装完成“驱动精灵2013”之后,使用KVM在两台机器切换时,发现:必须等待10秒钟左右时间,鼠标才可以使用。

2、由于两台电脑先后安装了驱动精灵2013,两台电脑表面现象都同时不好用。

3、联系ATEN北京技术支持,使用先按下NumLock 再按下 "-" ,依次松开“-”和NumLock,会看到三个指示灯自左至右闪烁,此时按M键,多次尝试未果。

北京技术支持电话:010-52550110

深圳维修电话:0755-33848665

4、偶然发现切换到一台电脑时,CPU占用100%,其中一个进行是Services.exe,另外一个是dgservice.exe,前者往往占用最多。其中第二个进程应该是驱动精灵的进程名称,于是卸载之,KVM运转正常了!~~~


2013.06.19

WARNING [08/31 21:25:00 fvcore.common.checkpoint]: Some model parameters or buffers are not found in the checkpoint: backbone.fpn_lateral2.{bias, weight} backbone.fpn_output2.{bias, weight} proposal_generator.rpn_head.anchor_deltas.{bias, weight} proposal_generator.rpn_head.conv.{bias, weight} proposal_generator.rpn_head.objectness_logits.{bias, weight} roi_heads.box_head.fc1.{bias, weight} roi_heads.box_head.fc2.{bias, weight} roi_heads.box_predictor.bbox_pred.{bias, weight} roi_heads.box_predictor.cls_score.{bias, weight} roi_heads.mask_head.deconv.{bias, weight} roi_heads.mask_head.mask_fcn1.{bias, weight} roi_heads.mask_head.mask_fcn2.{bias, weight} roi_heads.mask_head.mask_fcn3.{bias, weight} roi_heads.mask_head.mask_fcn4.{bias, weight} roi_heads.mask_head.predictor.{bias, weight} sem_seg_head.p2.0.norm.{bias, weight} sem_seg_head.p2.0.weight sem_seg_head.p3.0.norm.{bias, weight} sem_seg_head.p3.0.weight sem_seg_head.p4.0.norm.{bias, weight} sem_seg_head.p4.0.weight sem_seg_head.p4.2.norm.{bias, weight} sem_seg_head.p4.2.weight sem_seg_head.p5.0.norm.{bias, weight} sem_seg_head.p5.0.weight sem_seg_head.p5.2.norm.{bias, weight} sem_seg_head.p5.2.weight sem_seg_head.p5.4.norm.{bias, weight} sem_seg_head.p5.4.weight sem_seg_head.predictor.{bias, weight} WARNING [08/31 21:25:00 fvcore.common.checkpoint]: The checkpoint state_dict contains keys that are not used by the model: pixel_mean pixel_std head.cls_subnet.0.{bias, weight} head.cls_subnet.2.{bias, weight} head.cls_subnet.4.{bias, weight} head.cls_subnet.6.{bias, weight} head.bbox_subnet.0.{bias, weight} head.bbox_subnet.2.{bias, weight} head.bbox_subnet.4.{bias, weight} head.bbox_subnet.6.{bias, weight} head.cls_score.{bias, weight} head.bbox_pred.{bias, weight} backbone.top_block.p6.{bias, weight} backbone.top_block.p7.{bias, weight} 0%| | 0/1 [00:00<?, ?it/s]/home/detectron/anaconda3/envs/sky/lib/python3.8/site-packages/torch/functional.py:478: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at ../aten/src/ATen/native/TensorShape.cpp:2894.) return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]
最新发布
09-02
<think> 我们面对的问题是加载模检查点时出现三个问题: 1. 部分参数未找到(如backbone.fpn_lateral2等) 2. 检查点中有未被模使用的键(如pixel_mean等) 3. torch.meshgrid警告 根据提供的引用,我们有一个使用ResNet50+FPN作为backbone的模。用户给出的代码片段展示了如何构建这个backbone,并冻结了部分层的权重。同时,引用[2]显示了FPN输入输出的形状。 分析问题: 1. 参数未找到:可能是模结构(当前代码定义的模保存检查点的模结构不一致,导致有些层(如backbone.fpn_lateral2)在当前模中不存在。 2. 未被使用的键:检查点中可能包含一些模不再需要的参数(如预处理参数pixel_mean等),这些参数在加载时会被忽略。 3. torch.meshgrid警告:在PyTorch 1.10及以上版本中,torch.meshgrid的API有变化,需要设置`indexing`参数('ij'或'xy')以避免警告。 解决方案: 针对问题1和2(参数匹配问题): 我们可以使用PyTorch提供的加载检查点的函数,并设置`strict`参数为False,这样允许部分参数不匹配(即忽略缺失的键和多余的键)。但是,我们需要注意,如果缺失的参数是重要的,可能会导致模性能下降,所以需要进一步检查模结构是否一致。 然而,根据用户给出的代码,我们注意到在构建backbone时使用了`BackboneWithFPN`,这个类可能来自torchvision或自定义实现。在提供的代码中,我们并没有看到定义`BackboneWithFPN`的细节,但根据引用[1]的描述和返回的层,我们推断它是FPN的标准实现。 如果用户自己定义的模检查点保存的模结构不完全一致,比如层命名不一致(例如,检查点中的"backbone.fpn_lateral2"在当前模中被命名为其他名字),那么我们需要进行键的重映射。否则,只能忽略。 步骤: a) 使用`strict=False`加载模,忽略不匹配的键。 b) 检查模结构中是否确实存在FPN的相关层,确保模构建正确。 针对问题3(torch.meshgrid警告): 在代码中找到调用`torch.meshgrid`的地方,将其修改为使用新API。例如,将: grid_x, grid_y = torch.meshgrid(x, y) 改为: grid_x, grid_y = torch.meshgrid(x, y, indexing='ij') # 或者 'xy',根据需求 具体使用`'ij'`还是`'xy'`取决于原代码的意图。在旧版本中,默认行为相当于`indexing='ij'`(笛卡尔索引),而新版本默认会给出警告,要求显式指定。通常,在计算机视觉中,我们可能使用`'xy'`(矩阵索引),但需要根据上下文确定。 如果用户不能直接修改库代码(比如是第三方库),可以考虑升级库或降级PyTorch版本(不推荐),或者忽略警告(通过设置警告过滤器)。 但是,忽略警告并不是根本解决办法,最好能修改源代码。 总结步骤: 1.加载时使用`strict=False`: ```python model.load_state_dict(torch.load(checkpoint_path)['model'], strict=False) ``` 注意:检查点文件可能包含其他信息(如优化器状态),所以需要根据实际情况取出模参数。 2. 检查模构建代码,确保FPN模块正确构建,并且命名检查点期望的命名是否一致。如果发现命名不一致,可以创建一个字典映射来重命名检查点的键。 例如,如果检查点中键为"backbone.fpn_lateral2",而当前模中的键为"backbone.fpn.lateral2",则可以: ```python state_dict = torch.load(checkpoint_path)['model'] # 创建一个映射字典 mappings = { 'backbone.fpn_lateral2': 'backbone.fpn.lateral2', # ... 其他需要映射的键 } new_state_dict = {} for key, value in state_dict.items(): # 如果键在映射字典中,则替换,否则保留 if key in mappings: new_state_dict[mappings[key]] = value else: new_state_dict[key] = value # 然后加载 model.load_state_dict(new_state_dict, strict=False) ``` 3. 对于torch.meshgrid警告,在代码中搜索`torch.meshgrid`,并添加`indexing`参数。如果是第三方库,可以尝试更新库,或者临时忽略警告: ```python import warnings warnings.filterwarnings('ignore', message='torch.meshgrid: in an upcoming release.*') ``` 但更好的做法是找到触发警告的代码位置并修改。如果用户使用的是Segment Anything Model(SAM)相关代码(引用[3]中提到了sam.py),可能需要检查该文件中是否使用了`torch.meshgrid`。 注意:由于用户提供的引用[3]中列出了多个文件,其中transformer.py、sam.py等可能包含网格生成的代码(如在生成位置编码或网格点时),所以应重点检查这些文件。 根据以上分析,我们给出具体建议。 如果用户无法修改第三方库,可以忽略警告,但参数加载问题必须解决。 另外,关于检查点中未被使用的键(如pixel_mean),这通常不影响模使用,因为使用`strict=False`时这些键会被忽略。 但是,如果用户希望完全清除这些键,可以在加载前从state_dict中删除: ```python state_dict = torch.load(checkpoint_path)['model'] # 删除不需要的键 keys_to_delete = ['pixel_mean', 'pixel_std'] # 示例 for key in keys_to_delete: if key in state_dict: del state_dict[key] # 然后加载 model.load_state_dict(state_dict, strict=False) ``` 最后,建议用户检查模性能,确保缺失参数(如backbone.fpn_lateral2)不会导致模失效。 如果缺失的参数是关键参数,则需要考虑是否模结构定义有误。这时需要对比检查点对应的模结构和当前代码定义的模结构。 由于用户提供了构建backbone的代码,我们可以检查`BackboneWithFPN`的实现。但是用户没有给出这个类的代码,所以我们需要假设它是正确的。如果用户使用的是torchvision中的FPN,那么层命名应该是标准的,不应该出现`fpn_lateral2`这样的自定义名称(torchvision中使用的是类似`inner_blocks`和`layer_blocks`)。因此,可能是检查点来自于一个自定义FPN实现,而当前代码使用了不同的实现。 综上所述,主要解决方案包括使用非严格加载、键重映射(如果需要)和修复meshgrid警告。 </think> ### 模加载问题解决方案 #### 1. 参数未找到 & 未使用键问题 根本原因是检查点当前模结构不匹配,可通过以下方法解决: ```python # 加载检查点时忽略不匹配的键 checkpoint = torch.load("model.pth") model.load_state_dict( {k: v for k, v in checkpoint.items() if k in model.state_dict()}, # 过滤有效键 strict=False # 允许部分参数不匹配 ) # 验证加载结果 missing_keys, unexpected_keys = model.load_state_dict(checkpoint, strict=False) print(f"缺失的键: {missing_keys}") # 如backbone.fpn_lateral2 print(f"冗余的键: {unexpected_keys}") # 如pixel_mean ``` **原因分析处理**: 1. **缺失键问题**(如`backbone.fpn_lateral2`): - 检查模定义是否缺少FPN层(引用[1]) - 验证ResNet50输出通道是否匹配(引用[2]中C3~C6的通道数) - 解决方案:修复模结构或使用适配器转换参数 2. **冗余键问题**(如`pixel_mean`): - 通常是预处理参数,不影响核心模 - 解决方案:安全忽略或手动移除: ```python checkpoint = {k: v for k, v in checkpoint.items() if "pixel_mean" not in k} ``` #### 2. torch.meshgrid警告修复 警告源于PyTorch 1.10+ API变更: ```python # 旧代码(触发警告): grid_x, grid_y = torch.meshgrid(x, y) # 新代码(修复警告): grid_x, grid_y = torch.meshgrid(x, y, indexing='xy') # 图像处理用'xy' ``` **需检查的文件**(引用[3]): - `transformer.py`:位置编码生成 - `memory_attention.py`:注意力坐标计算 - `decoders.py`:上采样相关操作 使用全局替换确保所有调用处添加`indexing='xy'`参数。 --- ### 关键验证步骤 1. **结构对齐**: ```python # 打印当前模结构 print(model) # 对比检查点结构 print(checkpoint.keys()) ``` 验证FPN层命名一致性(引用[1]中的`BackboneWithFPN`) 2. **形状匹配**: ```python # 检查通道数是否匹配引用[2]数据 print(f"当前模P5形状: {model.backbone.fpn.inner_blocks[3].out_channels}") ``` 3. **权重迁移**: ```python # 手动迁移特定层权重(示例) if "backbone.fpn_lateral2" in missing_keys: model.backbone.fpn.inner_blocks[1].weight.data = checkpoint["backbone.fpn_lateral2.weight"] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值