天池赛top2复现任务学习记录

一、准备工作错误记录

1.安装库报错
安装mmdet库的时候,出现了以下报错:
在这里插入图片描述

在构建pycocotools的wheel时出现了问题。错误提示中指出缺少Microsoft Visual C++ 14.0或更高版本。这是因为pycocotools库中的一部分代码需要编译为C扩展,而编译C扩展需要使用适当的编译工具。

解决方法:安装Microsoft Visual C++
在这里插入图片描述

2.mmcv版本问题
在这里插入图片描述
在这里插入图片描述
解决方法:安装mmcv==2.0.0rc4再安装mmdet

3.torch与mmcv版本不兼容
在这里插入图片描述
在这里插入图片描述
解决方法:不使用faster_rcnn,先用yolov4进行复现

二、复现途中问题

1.传入参数为tensor,却出现’list’ object has no attribute 'shape’报错
yolov4_helper中loss_in_box函数写法
yolov4_helper中loss_in_box函数写法
在这里插入图片描述在这里插入图片描述
后续发现可能因为pdb断点问题导致,报错位置错误,实际上是output.shape[-2:]出现错误,因为output是一个列表,且形状为[[1,255,76,76],[1,255,38,38],[1,255,38,38]],所以还有以下这个问题
在这里插入图片描述
不能直接转为tensor
解决方案:后续发现yolov4中的loss_in_box函数不完整,漏洞很多,而这是ig_attack中学习所需重要函数,因此放弃ig_attack.py

mask_ = mask_ * (mask_== maximum_filter(mask_,footprint=np.ones((filter,filter))))这行代码出现
File “D:\Anaconda\envs\deep_learning2\lib\site-packages\scipy\ndimage_filters.py”, line 1271, in maximum_filter
return _min_or_max_filter(input, size, footprint, None, output, mode,
File “D:\Anaconda\envs\deep_learning2\lib\site-packages\scipy\ndimage_filters.py”, line 1149, in _min_or_max_filter
sizes = _ni_support._normalize_sequence(size, input.ndim)
File “D:\Anaconda\envs\deep_learning2\lib\site-packages\scipy\ndimage_ni_support.py”, line 67, in normalize_sequence
raise RuntimeError(err)
RuntimeError: sequence argument must have length equal to input rank
该问题说明,maximum_filter()函数中缺少size参数,后续发现原因是
mask
= IG.get_mask(adv_img.detach(), baseline=(None if baseline is None else baseline.detach().to(adv_img.device)), attack_type=attack_type)
其获得的mask_为Nonetype,这又不得不联系前面的代码
在这里插入图片描述
因为attack_type里没有检测到‘integrated_grad’导致baseline=None,导致mask_为Nonetype
在这里插入图片描述
解决方案,因为该项目是传参运行,直接运行使attack_type=None,所以自定义attack_type
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值