goat / Scripts /migrate_pack.sh
LightChuan's picture
Upload folder using huggingface_hub
919865e verified
Raw
History Blame Contribute Delete
5.24 kB
#!/bin/bash
# ==========================================================
# DairyGoat 项目迁移打包脚本
# 分3个包,按优先级:
# Pack1 (~1.8GB): 核心代码+标注+最佳权重+对话记录 [必须]
# Pack2 (~1.6GB): 原始数据集图片 [必须]
# Pack3 (~2GB): 全部实验权重+训练曲线 [建议]
# ==========================================================
set -e
cd /home/user/work/lch/DairyGoat
PACK_DIR="/home/user/work/lch/DairyGoat_migration"
mkdir -p "$PACK_DIR"
echo "============================================"
echo " DairyGoat 项目迁移打包"
echo " $(date)"
echo "============================================"
# ==========================================================
# Pack 1: 核心 (代码+标注+最佳权重+对话+配置)
# ==========================================================
echo ""
echo "[1/3] 打包 Pack1: 核心文件..."
tar czf "$PACK_DIR/pack1_core.tar.gz" \
--exclude='__pycache__' \
--exclude='*.cache' \
Scripts/ \
Data/Detection_dataset/dataset.yaml \
Data/Detection_dataset/labels/ \
Data/Detection_dataset_dedup/dataset.yaml \
Data/Detection_dataset_nightaug/dataset.yaml \
logs/ \
docs/ \
Models/ \
Background/ \
Platform/ \
.claude/ \
need_review_images.txt \
2>/dev/null
echo " Pack1 基础文件打包完成"
# 追加最佳权重 (每个实验只保留best.pt)
echo " 添加最佳权重..."
BEST_WEIGHTS=""
for d in runs/detect/Detection_experiments/*/weights/best.pt; do
if [ -f "$d" ]; then
BEST_WEIGHTS="$BEST_WEIGHTS $d"
fi
done
# 也加上last.pt以备resume
for d in runs/detect/Detection_experiments/*/weights/last.pt; do
if [ -f "$d" ]; then
BEST_WEIGHTS="$BEST_WEIGHTS $d"
fi
done
# 追加results.csv和args.yaml
RESULTS_FILES=""
for d in runs/detect/Detection_experiments/*/; do
for f in results.csv args.yaml confusion_matrix.png results.png; do
if [ -f "${d}${f}" ]; then
RESULTS_FILES="$RESULTS_FILES ${d}${f}"
fi
done
done
# 追加预训练权重
PRETRAINED="yolo11s.pt yolo11m.pt yolo11l.pt yolo11n.pt yolov8s.pt rtdetr-l.pt yolo26n.pt"
PRETRAINED_FILES=""
for f in $PRETRAINED; do
if [ -f "$f" ]; then
PRETRAINED_FILES="$PRETRAINED_FILES $f"
fi
done
tar rzf "$PACK_DIR/pack1_core.tar.gz" \
$BEST_WEIGHTS \
$RESULTS_FILES \
$PRETRAINED_FILES \
2>/dev/null || true
# 追加对话记录
echo " 添加对话记录..."
CLAUDE_DIR="/home/user/.claude/projects/-home-user-work-lch-DairyGoat"
if [ -d "$CLAUDE_DIR" ]; then
tar rzf "$PACK_DIR/pack1_core.tar.gz" \
-C /home/user/.claude/projects \
"-home-user-work-lch-DairyGoat/" \
2>/dev/null || true
fi
echo " Pack1 完成: $(du -sh $PACK_DIR/pack1_core.tar.gz | cut -f1)"
# ==========================================================
# Pack 2: 数据集图片
# ==========================================================
echo ""
echo "[2/3] 打包 Pack2: 数据集图片..."
tar czf "$PACK_DIR/pack2_images.tar.gz" \
Data/Detection_dataset/images/ \
2>/dev/null
echo " Pack2 完成: $(du -sh $PACK_DIR/pack2_images.tar.gz | cut -f1)"
# ==========================================================
# Pack 3: 全部实验权重+曲线 (可选但建议)
# ==========================================================
echo ""
echo "[3/3] 打包 Pack3: 全部实验权重..."
# 排除最大的中间epoch权重,只保留best/last + 每10epoch一个
tar czf "$PACK_DIR/pack3_all_weights.tar.gz" \
runs/detect/Detection_experiments/*/weights/best.pt \
runs/detect/Detection_experiments/*/weights/last.pt \
runs/detect/Detection_experiments/*/results.csv \
runs/detect/Detection_experiments/*/args.yaml \
runs/detect/Detection_experiments/*/*.png \
2>/dev/null || true
echo " Pack3 完成: $(du -sh $PACK_DIR/pack3_all_weights.tar.gz | cut -f1)"
# ==========================================================
# 也单独打包可重建的数据集
# ==========================================================
echo ""
echo "[bonus] 打包去重/夜增强数据集标注..."
tar czf "$PACK_DIR/pack_extra_datasets.tar.gz" \
Data/Detection_dataset_dedup/labels/ \
Data/Detection_dataset_dedup/images/train/ \
Data/Detection_dataset_dedup/dataset.yaml \
Data/Detection_dataset_nightaug/dataset.yaml \
Data/Detection_dataset/labels/train_backup_before_refine/ \
Data/Detection_dataset/labels/train_backup_before_refine_v2/ \
2>/dev/null || true
echo " Extra datasets 完成: $(du -sh $PACK_DIR/pack_extra_datasets.tar.gz | cut -f1)"
# ==========================================================
# 汇总
# ==========================================================
echo ""
echo "============================================"
echo " 打包完成!文件位于: $PACK_DIR/"
echo "============================================"
echo ""
ls -lh "$PACK_DIR/"
echo ""
du -sh "$PACK_DIR/"
echo ""
echo "迁移优先级:"
echo " 1. pack1_core.tar.gz - [必须] 代码+标注+最佳权重+对话记录"
echo " 2. pack2_images.tar.gz - [必须] 数据集原始图片"
echo " 3. pack3_all_weights.tar.gz - [建议] 全部实验权重(可从best.pt重新推断)"
echo " 4. pack_extra_datasets.tar.gz - [可选] 去重/增强数据集(可重新生成)"