File size: 5,243 Bytes
919865e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | #!/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 - [可选] 去重/增强数据集(可重新生成)"
|