AutoDL云服务器上119G的GREW数据集预处理实战:从邮件获取到OpenGait训练pkl全流程

在云服务器上进行大规模数据集预处理,是许多AI研究者必须面对的挑战。特别是当遇到GREW这样体积庞大(解压后达119G)的户外步态数据集时,如何在AutoDL这类磁盘空间有限的云环境中高效完成从原始数据到训练就绪格式的转换,需要一套经过实战检验的方法论。本文将分享我在AutoDL云服务器上处理GREW数据集的完整流程,包括资源规划、分步解压、路径配置等关键环节,以及如何避免常见的"坑"。

1. GREW数据集获取与云环境准备

GREW数据集作为当前最大的户外步态识别基准,其获取流程与常见开源数据集有所不同。首先需要通过GREW官方网站提交使用申请,填写完协议表格后,研究团队通常会在12小时内通过邮件回复下载链接和解压密码。根据实测,整个申请过程简洁高效,不会成为项目瓶颈。

云服务器磁盘空间规划是首要考虑因素。AutoDL默认数据盘容量为50G,而GREW仅训练集(train)解压后就达119G。建议采取以下策略:

  • 优先扩容autodl-tmp数据盘至200G(AutoDL当前单盘上限)
  • 如预算有限,可仅处理训练集(约119G),放弃测试集和干扰物集
  • 使用df -h命令实时监控磁盘使用情况
# 查看磁盘空间使用情况
df -h /root/autodl-tmp

注意:AutoDL的/root/autodl-tmp是挂载的高速SSD,适合作为数据处理工作区,而/home目录空间有限且性能较低,不建议存放大型数据集。

2. 数据集上传与分步解压技巧

收到GREW压缩包后,建议先本地检查文件完整性再上传。云环境中的分步解压操作需要特别注意:

  1. 创建专用工作目录
mkdir -p /root/autodl-tmp/GREW
  1. 上传train.zip到该目录(使用AutoDL网页端或scp命令)

  2. 分阶段解压以节省临时空间:

cd /root/autodl-tmp/GREW
unzip train.zip  # 输入邮件提供的密码
cd train
ls *.tgz | xargs -n1 tar xzvf  # 逐个解压tgz文件

解压后的目录结构应如下:

GREW/
└── train/
    ├── 00001/
    ├── 00002/
    └── ... (共20000个子目录)

常见问题排查

  • 解压密码错误:确认使用的是邮件中提供的密码而非网站登录密码
  • 空间不足:在解压前使用du -sh检查当前可用空间
  • 解压中断:可使用nohup让命令在后台持续运行

3. 数据集预处理:从原始图像到标准格式

OpenGait框架要求输入特定目录结构的pkl文件,这需要两步关键转换。

3.1 图像重新排列

首先运行rearrange_GREW.py脚本重组原始图像结构:

python datasets/GREW/rearrange_GREW.py \
    --input_path /root/autodl-tmp/GREW \
    --output_path /root/autodl-tmp/GREW-rearranged

关键参数说明:

参数 说明 典型值
--input_path 原始GREW目录 /root/autodl-tmp/GREW
--output_path 重组后输出目录 /root/autodl-tmp/GREW-rearranged

重要:input_path应指向包含train/的上级目录,而非直接指向train/本身,这是新手常犯的错误。

3.2 生成pkl训练文件

接下来使用pretreatment.py将重组后的图像转为pkl格式:

python datasets/pretreatment.py \
    --input_path /root/autodl-tmp/GREW-rearranged \
    --output_path /root/autodl-tmp/GREW-pkl \
    --dataset GREW

处理完成后,目录结构应变为:

GREW-pkl/
├── test/
├── train/
└── distractor/

4. 云环境优化与实用技巧

在资源受限的云环境中,以下技巧能显著提升效率:

内存管理

  • 使用top命令监控内存使用
  • 添加swap空间避免OOM错误:
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

处理中断恢复

  • 使用screentmux保持会话
  • 对长时间运行的命令添加日志重定向:
nohup python pretreatment.py ... > pretreat.log 2>&1 &

空间清理

  • 处理完成后及时删除中间文件:
rm -rf /root/autodl-tmp/GREW/train/*.tgz
  • 使用ncdu可视化分析磁盘占用

实际项目中,我发现最耗时的步骤是pretreatment.py的pkl生成,20000个样本约需3-4小时。建议在业务低峰期启动该任务,或考虑使用AutoDL的定时实例功能降低成本。

更多推荐