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 - [可选] 去重/增强数据集(可重新生成)"