GarmageSet下载和处理

改一下下载路径,在终端登录huggingface:

复制代码
# 1. 获取 Access Token
# 访问: https://huggingface.co/settings/tokens
# 创建新 Token: 
#   - Name: garmagenet
#   - Role: Read (读取权限即可)
#   - 复制令牌(如: hf_xxxxxxxxxxxxxxxx)

# 2. 在终端登录
conda activate garmagenet
huggingface-cli login

# 粘贴 Token(输入时不会显示字符),按回车
# 看到 "Login successful" 即成功
python 复制代码
# /home/user/hk/garmagenet-impl-main/download_garmageset.py
from huggingface_hub import snapshot_download
import os

# 设置下载路径
local_dir = "/home/user/hk/garmagenet-impl-main/GarmageSet"
os.makedirs(local_dir, exist_ok=True)

print(f"🔹 开始下载数据集到: {local_dir}")

# 下载整个数据集
snapshot_download(
    repo_id="Style3D/GarmageSet",
    repo_type="dataset",
    local_dir=local_dir,

    max_workers=8,                 # 并行下载线程数
)

print("✅ 数据集下载完成!")

下载完后解压:

python 复制代码
# /home/user/hk/garmagenet-impl-main/extract_all.py
import os
import tarfile
import argparse
from pathlib import Path
from tqdm import tqdm

def extract_tar_gz(file_path, extract_to=None, remove_after=False):
    """解压单个 .tar.gz 文件"""
    try:
        with tarfile.open(file_path, 'r:gz') as tar:
            # 确定解压目标目录
            if extract_to is None:
                extract_to = file_path.parent
            
            # 创建目标目录
            os.makedirs(extract_to, exist_ok=True)
            
            # 解压文件
            tar.extractall(path=extract_to)
            
            # 可选:解压后删除原压缩包
            if remove_after:
                os.remove(file_path)
                print(f"🗑️  已删除: {file_path.name}")
                
        return True
    except tarfile.TarError as e:
        print(f"❌ TarError 解压失败 {file_path.name}: {e}")
        return False
    except Exception as e:
        print(f"❌ 未知错误 解压失败 {file_path.name}: {e}")
        return False

def find_and_extract(root_dir, remove_after=False, dry_run=False):
    """递归查找并解压所有 .tar.gz 文件"""
    root = Path(root_dir)
    tar_files = list(root.rglob("*.tar.gz"))
    
    if not tar_files:
        print(f"🔍 在 {root_dir} 中未找到 .tar.gz 文件")
        return
    
    print(f"📦 找到 {len(tar_files)} 个压缩包,开始处理...\n")
    
    success_count = 0
    fail_count = 0
    
    # 使用 tqdm 显示进度
    for tar_path in tqdm(tar_files, desc="解压进度"):
        if dry_run:
            print(f"🔸 [DRY RUN] 将会解压: {tar_path}")
            success_count += 1
            continue
            
        # 检查是否已存在解压后的目录(避免重复解压)
        extract_dir = tar_path.parent / tar_path.stem  # 移除 .tar.gz
        if extract_dir.exists() and any(extract_dir.iterdir()):
            print(f"⏭️  跳过(已存在): {tar_path.name}")
            success_count += 1
            continue
            
        if extract_tar_gz(tar_path, remove_after=remove_after):
            success_count += 1
        else:
            fail_count += 1
    
    # 输出统计
    print(f"\n{'='*60}")
    print(f"✅ 解压完成!")
    print(f"   成功: {success_count} | 失败: {fail_count} | 总计: {len(tar_files)}")
    if fail_count > 0:
        print(f"⚠️  请检查上方错误信息")
    print(f"{'='*60}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="批量解压 GarmageSet 中的 .tar.gz 文件")
    parser.add_argument(
        "--root", 
        type=str, 
        default="/home/user/hk/garmagenet-impl-main/GarmageSet",
        help="要搜索的根目录(默认: GarmageSet)"
    )
    parser.add_argument(
        "--remove", 
        action="store_true",
        help="解压成功后删除原 .tar.gz 文件(节省空间)"
    )
    parser.add_argument(
        "--dry-run", 
        action="store_true",
        help="仅列出将要解压的文件,不实际执行"
    )
    
    args = parser.parse_args()
    
    print(f"🔹 根目录: {args.root}")
    print(f"🔹 删除原文件: {'是' if args.remove else '否'}")
    print(f"🔹 模拟运行: {'是' if args.dry_run else '否'}\n")
    
    find_and_extract(args.root, remove_after=args.remove, dry_run=args.dry_run)

在终端执行指令:

python 复制代码
conda activate garmagenet
cd /home/user/hk/garmagenet-impl-main

# 🔍 第一步:干跑模式(预览将要解压的文件)
python extract_all.py --dry-run

# 🚀 第二步:实际解压(保留原压缩包)
python extract_all.py

# 🗑️  第三步:解压并删除原文件(节省磁盘空间)
python extract_all.py --remove

然后运行命令:

python 复制代码
conda install -c nvidia cuda-nvcc=11.8 cuda-cudart-dev=11.8 -y
export TORCH_CUDA_FLAGS="-allow-unsupported-compiler"
export CUDA_NVCC_FLAGS="-allow-unsupported-compiler"
rm -rf ~/.cache/torch_extensions/nvdiffrast_plugin
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda/bin:$PATH
rm -rf ~/.cache/torch_extensions/
python data_process/process_garmage.py     -i GarmageSet/raw     -o GarmageSet/garmages_processed     --num_views 8python data_process/process_garmage.py     -i GarmageSet/raw     -o GarmageSet/garmages_processed     --num_views 8
相关推荐
伞伞悦读7 分钟前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
鹿角片ljp2 小时前
KV Cache 解析
java·算法
captain3762 小时前
网络原理(9)-数据链路层
java·网络协议·java-ee
惊讶的猫3 小时前
意图识别置信度和检索重排的分数
java
2601_966949653 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
caoerzhong3 小时前
仓库管理数字化趋势解读:JeeWMS 开源 Java WMS 视角下的五个演进方向
java·开源
m0_734571763 小时前
深入理解5g <十八>传输块tbsize的计算
开发语言·5g
程序员JerrySUN3 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
Joy T4 小时前
Spring AI 2.0 Agent 进阶:Memory、State 与 Context Engineering 常见技术全景
java·人工智能·后端·spring·agent入门·agent state