Skip to content
52 changes: 32 additions & 20 deletions notebooks/11-rococo-train-test-split.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"import os\n",
"import shutil\n",
"import random\n",
"import csv\n"
"import csv"
]
},
{
Expand All @@ -52,9 +52,8 @@
}
],
"source": [
"\n",
"os.chdir(\"..\")\n",
"print(os.getcwd())\n"
"print(os.getcwd())"
]
},
{
Expand Down Expand Up @@ -98,7 +97,7 @@
"frame_files = sorted(os.listdir(frames_dir))\n",
"\n",
"print(f\"Number of face files: {len(face_files)}\")\n",
"print(f\"Number of frame files: {len(frame_files)}\") "
"print(f\"Number of frame files: {len(frame_files)}\")"
]
},
{
Expand Down Expand Up @@ -147,16 +146,16 @@
" train_frames = []\n",
" test_frames = []\n",
" train_face_set = set(face_id_from_filename(f) for f in train_faces)\n",
" \n",
"\n",
" for frame in all_frames:\n",
"\n",
" face_id = face_id_from_filename(frame)\n",
" if face_id in train_face_set:\n",
" train_frames.append(frame)\n",
" else:\n",
" test_frames.append(frame)\n",
" \n",
" return train_frames, test_frames\n"
"\n",
" return train_frames, test_frames"
]
},
{
Expand Down Expand Up @@ -290,7 +289,7 @@
" src = os.path.join(frames_dir, f)\n",
" dst = os.path.join(train_frames_dir, f)\n",
" shutil.copyfile(src, dst)\n",
" \n",
"\n",
" for f in te_frames:\n",
" src = os.path.join(frames_dir, f)\n",
" dst = os.path.join(test_frames_dir, f)\n",
Expand Down Expand Up @@ -328,7 +327,7 @@
"for ratio in split_ratios:\n",
" split_dir = os.path.join(splits_root, f\"split_{int(ratio*100)}\")\n",
" os.makedirs(split_dir, exist_ok=True)\n",
" create_partitioned_set(ratio, dataset_root, split_dir)\n"
" create_partitioned_set(ratio, dataset_root, split_dir)"
]
},
{
Expand All @@ -353,14 +352,17 @@
" frame_files = sorted(os.listdir(frames_dir))\n",
" return face_files, frame_files\n",
"\n",
"\n",
"def get_matches(face_id, frame_files, n_pairs):\n",
" matches = [f for f in frame_files if face_id_from_filename(f) == face_id]\n",
" return random.sample(matches, n_pairs)\n",
"\n",
"\n",
"def get_mismatches(face_id, frame_files, n_pairs):\n",
" mismatches = [f for f in frame_files if face_id_from_filename(f) != face_id]\n",
" return random.sample(mismatches, n_pairs)\n",
"\n",
"\n",
"def create_pairs(face_files, frame_files, n_pairs_per_face):\n",
" match_pairs = []\n",
" mismatch_pairs = []\n",
Expand Down Expand Up @@ -403,16 +405,16 @@
"print(f\"Number of faces: {len(faces)}\")\n",
"print(f\"Number of frames: {len(frames)}\")\n",
"\n",
"n_train = int(len(faces) * 2/3)\n",
"n_train = int(len(faces) * 2 / 3)\n",
"n_val = len(faces) - n_train\n",
"print(f\"Number of training faces: {n_train}\")\n",
"print(f\"Number of validation faces: {n_val}\")\n",
"\n",
"train_faces = faces[:n_train]\n",
"val_faces = faces[n_train:]\n",
"\n",
"train_frames = frames[:n_train*31]\n",
"val_frames = frames[n_train*31:]\n",
"train_frames = frames[: n_train * 31]\n",
"val_frames = frames[n_train * 31 :]\n",
"\n",
"print(train_faces[-4:])\n",
"print(val_faces[:4])\n",
Expand Down Expand Up @@ -1488,13 +1490,14 @@
],
"source": [
"def save_csv(pairs, filepath):\n",
" with open(filepath, mode='w', newline='') as file:\n",
" with open(filepath, mode=\"w\", newline=\"\") as file:\n",
" writer = csv.writer(file)\n",
" writer.writerow([\"face\", \"frame\"])\n",
" for face, frame in pairs:\n",
" writer.writerow([face, frame])\n",
" print(f\"Saved {len(pairs)} pairs to {filepath}\")\n",
"\n",
"\n",
"save_csv(match_train_pairs, \"data/rococo2v3-dev/train_match_pairs.csv\")\n",
"save_csv(mismatch_train_pairs, \"data/rococo2v3-dev/train_mismatch_pairs.csv\")\n",
"save_csv(match_val_pairs, \"data/rococo2v3-dev/val_match_pairs.csv\")\n",
Expand Down Expand Up @@ -1529,14 +1532,23 @@
}
],
"source": [
"used_frames = set([\n",
" *(frame for _, frame in match_train_pairs),\n",
" *(frame for _, frame in mismatch_train_pairs),\n",
" *(frame for _, frame in match_val_pairs),\n",
" *(frame for _, frame in mismatch_val_pairs),\n",
"])\n",
"used_frames = set(\n",
" [\n",
" *(frame for _, frame in match_train_pairs),\n",
" *(frame for _, frame in mismatch_train_pairs),\n",
" *(frame for _, frame in match_val_pairs),\n",
" *(frame for _, frame in mismatch_val_pairs),\n",
" ]\n",
")\n",
"\n",
"len(used_frames), sum((len(match_train_pairs), len(mismatch_train_pairs), len(match_val_pairs), len(mismatch_val_pairs)))"
"len(used_frames), sum(\n",
" (\n",
" len(match_train_pairs),\n",
" len(mismatch_train_pairs),\n",
" len(match_val_pairs),\n",
" len(mismatch_val_pairs),\n",
" )\n",
")"
]
},
{
Expand Down
Loading
Loading