当前位置:   article > 正文

[GitHub]等开源代码跑通的debug记录【通用版】_towards robust tampered text detection in document

towards robust tampered text detection in document image: new dataset and ne

①2023-11-02

SCUT的《Towards Robust Tampered Text Detection in Document Image: New dataset and New Solution》,发表于CVPR2023,是我阅读的第一篇图像文档篡改检测的论文。

 本周的代码是来自于GitHub的开源的,此次目的就是先跑通测试文件。

  • 关于格式要求,作者有明确的文件存放格式要求,如果不按照他的存放要求,就必须将所有的路径改为绝对路径。

  • requirement.txt文件配置对应的包
requirement.txt文件示例

由于作者已经放出来了关于各个包配置的要求,我们只需要:

创建一个新的环境(防止新下的包/库与当前环境下已有的包/库有冲突)

conda create --name yourEnv python=2.7

#激活

windows ==> activate yourEnv  
linux/mac ==> source activate yourEnv
 

然后在终端直接下载requirement文件,就能直接把所有需要的包或者库下载下来啦

pip install -r requirements.txt

②2023/11/30

在settings中没有找到自己新建的环境

正常方法:

  1. 打开PyCharm,点击右上角的 "File" 菜单,然后选择 "Settings"。
  2. 在 "Settings" 窗口中,点击左侧的 "Project: <你的项目名>",然后选择 "Python Interpreter"。
  3. 在右侧的 "Python Interpreter" 界面中,点击右上角的齿轮图标,然后选择 "Add"。
  4. 在弹出的 "Add Python Interpreter" 窗口中,选择 "Existing environment"。
  5. 点击 "..." 按钮,浏览到你的Anaconda环境的路径(例如:/home_2/zqy/anaconda3/envs/zqy)。
  6. 选择该环境,然后点击 "OK"。
  7. 等待PyCharm加载环境,完成后点击 "OK" 关闭 "Add Python Interpreter" 窗口。
  8. 现在你已经将PyCharm的项目解析器设置为你指定的Anaconda环境了

特殊情况下:

从第4步开始不一样,点击system interpret;找到anaconda3-envs-环境名-bin-python;完成!

③2023/11/30

timm因为版本问题一直报错 试了很多种版本 都一直报错

timm 版本为0.6.1 错误为:modulenotfounderror:No modulenamed 'timm.layers'

timm版本为0.9.2或者0.9.12  错误为:modulenotfounderror:No modulenamed 'timm.models.layers'

原来是有个库没有安装 而不是 这个timm库的版本问题

--------------------------------------------------下划线部分非大众问题-------------------------------------------------

报错问题:TypeError: unsupported operated type(s) for /: 'tuple' and "int'

排查之后发现错误来源于 efficientnet_pytorch 库中的 Conv2d 类的构造函数中发生了错误。

GPT

        你正在使用 efficientnet_pytorch 的版本为 0.6.3。从这个版本开始,efficientnet_pytorch 库的 Conv2d 类被移除,而是使用了 PyTorch 自带的 torch.nn.Conv2d 类。因此,你需要确保你的代码中导入的是 PyTorch 自带的 Conv2d 类。

所以需要

  • 将这行代码:

from efficientnet_pytorch.utils import Conv2d

改为:

import torch.nn as nn

  • 然后在代码中使用 nn.Conv2d 代替 Conv2d.

Q2:

如果是efficientnet_pytorch的get_same_padding_conv2d(image_size=image_size) 方法里面传了一个image_size参数 对应torch.nn.Conv2d要如何改

GPT:

如果你正在使用 efficientnet_pytorch 库中的 get_same_padding_conv2d 方法,并且该方法接受一个 image_size 参数,你可以将该方法的返回结果作为 torch.nn.Conv2d 的输入。在 PyTorch 中,torch.nn.Conv2dpadding 参数可以接受一个元组,该元组的两个元素分别表示在图像的高度和宽度方向上的填充量。你可以根据你得到的 image_size 参数来计算填充量,然后将其传递给 torch.nn.Conv2d

具体来说,你可以将 get_same_padding_conv2d 的返回结果(通常是一个 nn.Conv2d 类的实例)的 padding 参数设置为一个元组,该元组的两个元素分别为高度和宽度方向上的填充量

因此,若原始代码为:

from efficientnet_pytorch.utils import get_same_padding_conv2d

# 假设 image_size 是一个包含高度和宽度的元组,例如 (256, 256)
image_size = (256, 256)

# 使用 get_same_padding_conv2d 获取 Conv2d 实例
conv = get_same_padding_conv2d(image_size=image_size, ...)

则将其改为:

import torch.nn as nn

# 计算填充量
padding_h = conv.padding[0]
padding_w = conv.padding[1]

# 创建 PyTorch 的 Conv2d 实例,并传入计算得到的填充量
torch_conv = nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding=(padding_h, padding_w))

将元组输入改为整数输入,当padding(1,1)时作为边界补充,效果等同于直接输入1,这样就能避免因为不接受元组输入格式而报错的问题,而padding(n,m)当n!=m时,是想要将长和宽对应填充不同的值,此时就不能用一个整数来代替元组中两个不同的数了。

DEBUG FINISH!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/554697
推荐阅读
相关标签
  

闽ICP备14008679号