使用ISBNet跑S3DIS数据集时出现的问题及解决措施

部署运行你感兴趣的模型镜像

数据集文件夹构建格式看这篇

手把手教ISBNET环境配置以及训练(遇到的问题) 全网最全-优快云博客

需要先激活isbnet环境(非常重要!)

conda activate isbnet

py文件里面的内容——文件路径根据你自己的修改

首先是prepare_s3dis.py文件的问题

4月1日晚上遇到一个问题:

prepare_s3dis.py 在尝试读取 Area_X/room_Y/room_Y.txt 时,发现文件中包含非法字符串 '167.\x1000000'(应为 167.1000000)。

4月2日在我添加一个提示后,神奇的好了,因为昨天是愚人节吗哈哈

然后,多跑了几个文件后又出问题了

之前出现的很多问题都是在.DS_Store文件中的,所以把它们都给删除

# 删除所有 .DS_Store 文件(可选)
find ~/ISBNet/dataset/s3dis/ -name ".DS_Store" -delete

# 重新运行脚本
cd ~/ISBNet/dataset/s3dis/
bash prepare_data.sh

查找可能有问题的文件

(isbnet) ubuntu@ubuntu-OptiPlex-7000:~/ISBNet/dataset/s3dis$ find ~/ISBNet/dataset/s3dis/Stanford3dDataset_v1.2_Aligned_Version/ \
>   -name "*.txt" -exec grep -l -a -P '[\x00-\x1F]' {} +

/home/ubuntu/ISBNet/dataset/s3dis/Stanford3dDataset_v1.2_Aligned_Version/Area_5/hallway_6/Annotations/ceiling_1.txt

(isbnet) ubuntu@ubuntu-OptiPlex-7000:~/ISBNet/dataset/s3dis$ 
(isbnet) ubuntu@ubuntu-OptiPlex-7000:~/ISBNet/dataset/s3dis$ 
(isbnet) ubuntu@ubuntu-OptiPlex-7000:~/ISBNet/dataset/s3dis$ head -n 5 ~/ISBNet/dataset/s3dis/Stanford3dDataset_v1.2_Aligned_Version/Area_5/hallway_6/Annotations/ceiling_1.txt
22.946 8.392 3.035 206 207 199
23.218 8.390 3.016 184 188 191
22.616 8.395 3.014 191 194 201
23.111 8.390 3.016 188 191 196
22.789 8.394 3.016 195 195 203
(isbnet) ubuntu@ubuntu-OptiPlex-7000:~/ISBNet/dataset/s3dis$ grep -n -a -P '[\x00-\x1F]' ~/ISBNet/dataset/s3dis/Stanford3dDataset_v1.2_Aligned_Version/Area_5/hallway_6/Annotations/ceiling_1.txt
180389:22.350 6.692 3.048 185187 182

直接打开文件就发现了问题

然后我就直接手动删除了

又出现找不到文件的错误,打开文件夹后发现是命名多了个_

这数据集真让人感到无语了......

又修改了代码,让它能接着上次的进行

下面是prepare_superpoints.py的问题了

python3 prepare_superpoints.py

这个错误表明程序无法找到 superpoints/ 目录来保存输出文件。

使用Deepseek改成下面的代码就成功了

import numpy as np
import torch
import glob
import os

# 确保输出目录存在
os.makedirs("superpoints", exist_ok=True)

files = sorted(glob.glob("learned_superpoint_graph_segmentations/*.npy"))

success_count = 0
skip_count = 0
error_count = 0

for file in files:
    try:
        # 解析文件名
        filename = os.path.basename(file)
        area, room = filename.split(".")[:2]  # 获取Area和Room部分
        
        # 构建输出路径
        output_path = os.path.join("superpoints", f"{area}_{room}.pth")
        
        # 检查文件是否已存在
        if os.path.exists(output_path):
            print(f"文件已存在,跳过: {output_path}")
            skip_count += 1
            continue
            
        # 加载并处理数据
        data = np.load(file, allow_pickle=True).item()
        if "segments" not in data:
            raise ValueError(f"文件 {filename} 中缺少'segments'键")
            
        # 保存结果
        torch.save(data["segments"], output_path)
        success_count += 1
        print(f"成功处理: {filename} -> {output_path}")
        
    except Exception as e:
        error_count += 1
        print(f"处理文件 {filename} 时出错: {str(e)}")

# 打印汇总信息
print(f"\n处理完成!\n成功: {success_count}\n跳过: {skip_count}\n失败: {error_count}")

这次数据就都准备好了

接下来开始训练

# Pretrain step 骨干网络预训练
python3 tools/train.py configs/s3dis/isbnet_backbone_s3dis_area5.yaml --only_backbone  --exp_name default

# Train entire model 完整模型训练
python3 tools/train.py configs/s3dis/isbnet_s3dis_area5.yaml --trainall  --exp_name default

出现了参考文章里面一样的问题

然后我deepseek修改了代码好了

问题:

新的问题已经出现——GPU内存不足

然后又出现了新的问题

这个CUDA错误 (CUBLAS_STATUS_INVALID_VALUE) 通常是由于GPU内存不足或张量形状不匹配导致的

您可能感兴趣的与本文相关的镜像

PyTorch 2.6

PyTorch 2.6

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值