Remote Sensing Image Change Detection with Transformers复现遇到的问题

1、解决ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22‘ not foun

这个是默认路径下的libstdc++.so.6缺少GLIBCXX_3.4.22,你有可能缺少其它版本的比如3.4.23,解决方法一样,如下所示:

(1)使用指令先看下目前都有哪些版本的

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

(2)使用

sudo find / -name “libstdc++.so.6*”

来查看当前系统中其它的同类型文件,找到一个版本比较高的,

strings /home/zrc/anaconda3/envs/BIT/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.26 | grep GLIBCXX

可以看到有需要的版本,接下来就是建立新的链接到这个文件上
(3)复制到指定目录并建立新的链接
复制

sudo cp /home/zrc/anaconda3/envs/BIT/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.26 /usr/lib/x86_64-linux-gnu/

删除之前链接

sudo rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6

创建新的链接

sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.26 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

之后程序成功运行

原文链接:https://blog.csdn.net/qq_30653631/article/details/107620137

2、关于环境配置的问题

一定要按照Readme的环境进行配置!!!
安装gpu版的pytorch!!

首先在cmd中 查看cuda信息:

nvcc -V

查看驱动版本:

NVIDIA-smi

下载对应cuda版本的安装包,下载链接:

https://download.pytorch.org/whl/torch_stable.html

通过pip install 文件名(要加 .whl)安装
对应版本可以通过这篇博客

https://blog.csdn.net/weixin_42069606/article/details/105198845

但是!!可能会出现false的情况,是因为安装的是cpu版本的pytorch, conda list查看的时候可以看到,正确的安装应该是gpu版本如图所示(我的cuda版本是10.1)

Remote Sensing Image Change Detection with Transformers复现遇到的问题_第1张图片
验证是否安装成功

#使用python运行
import torch
print(torch.__version__)
print(torch.cuda.is_available())

3、OSError: ./LEVIR-CD/list\trainval.txt not found.的问题

这居然是因为作者的run_cd.sh文件里面不小心写错了。。。
在这里插入图片描述
复制主页上的改一下就好了~

split=train # training txt
split_val=val #validation txt

4、数据格式

用了LEVIR-CD数据集,下载下来的数据集格式:

            ├─train
            │  ├─A
            │  ├─B
            │  ├─label
            ├─val
            │  ├─A
            │  ├─B
            │  ├─label
            ├─test
            │  ├─A
            │  ├─B
            │  ├─label

把train、test、val的A和B和label都放到一个文件夹下变成以下格式:(list自己新建一个,txt文件中读取是图片的名称)

            ├─A 
            ├─B
            ├─label
            ├─list
            │  ├─train.txt
            │  ├─test.txt
            │  ├─val.txt

读取文件名的代码如下:

# -*- coding:utf-8 -*-
import glob

# imageList = glob.glob("/media/mym/My Passport/cj/MRI_data/GGZ202106/*/*/*/*")  # 图片所在文件夹的路径
imageList = glob.glob("/BIT_CD/LEVIR/val/A/*")
imageList.sort()  #按照升序排序
f = open('/BIT_CD-master/LEVIR/list/val.txt', 'a')  # 创建标签文件存放图片文件名
for item in imageList:

    # print(item)                                # images_test/m1_a_018_1.jpg
    img_name1 = item.split('/')[-1]  # 图片文件名018.jpg
    # img_name = img_name1.split('.')[0]
    print(img_name1)
    f.write(img_name1 + '\n')  # 将图片文件名逐行写入txt

print('OK')

你可能感兴趣的:(目标检测)