| param( |
| [string]$BundleRoot = "C:\Users\aryan\Google Drive\My Drive\nes2net_remote_bundle", |
| [string]$ProjectRoot = "C:\E\Project\Project B.tech\Multimodal Deepfake Detection", |
| [switch]$IncludeDFDataset, |
| [switch]$IncludeLA, |
| [switch]$IncludeDemoWav, |
| [switch]$IncludeInTheWildCheckpoint, |
| [switch]$ZipCodeOnly, |
| [switch]$DryRun |
| ) |
|
|
| $ErrorActionPreference = "Stop" |
|
|
| function Write-Step { |
| param([string]$Message) |
| Write-Host "[Bundle] $Message" |
| } |
|
|
| function Ensure-Dir { |
| param([string]$Path) |
| if ($DryRun) { |
| Write-Step "Would create directory: $Path" |
| return |
| } |
| New-Item -ItemType Directory -Force -Path $Path | Out-Null |
| } |
|
|
| function Copy-FileSafe { |
| param( |
| [string]$Source, |
| [string]$DestinationDir |
| ) |
| if (-not (Test-Path $Source)) { |
| throw "Missing source file: $Source" |
| } |
|
|
| if ($DryRun) { |
| Write-Step "Would copy file: $Source -> $DestinationDir" |
| return |
| } |
|
|
| Copy-Item -Path $Source -Destination $DestinationDir -Force |
| } |
|
|
| function Copy-DirSafe { |
| param( |
| [string]$Source, |
| [string]$DestinationParent |
| ) |
| if (-not (Test-Path $Source)) { |
| throw "Missing source directory: $Source" |
| } |
|
|
| $leaf = Split-Path -Path $Source -Leaf |
| $destination = Join-Path $DestinationParent $leaf |
|
|
| if ($DryRun) { |
| Write-Step "Would copy directory: $Source -> $destination" |
| return |
| } |
|
|
| Ensure-Dir $destination |
|
|
| $robocopyArgs = @( |
| $Source, |
| $destination, |
| "/E", |
| "/Z", |
| "/R:5", |
| "/W:5", |
| "/NFL", |
| "/NDL", |
| "/NJH", |
| "/NJS", |
| "/NP" |
| ) |
|
|
| & robocopy @robocopyArgs | Out-Host |
| $robocopyExit = $LASTEXITCODE |
|
|
| if ($robocopyExit -gt 7) { |
| throw "robocopy failed for $Source -> $destination with exit code $robocopyExit" |
| } |
| } |
|
|
| function Zip-CodeFolder { |
| param( |
| [string]$Source, |
| [string]$DestinationZip |
| ) |
| if ($DryRun) { |
| Write-Step "Would zip code folder: $Source -> $DestinationZip" |
| return |
| } |
|
|
| if (Test-Path $DestinationZip) { |
| Remove-Item -Path $DestinationZip -Force |
| } |
|
|
| Compress-Archive -Path $Source -DestinationPath $DestinationZip -Force |
| } |
|
|
| $codeDir = Join-Path $ProjectRoot "audio_detection\Nes2Net_ASVspoof_ITW" |
| $checkpointsDir = Join-Path $ProjectRoot "audio_detection\checkpoints" |
| $audioDataDir = Join-Path $ProjectRoot "data\audio" |
| $notebookPath = Join-Path $ProjectRoot "notebooks\audio_remote_validation_colab.ipynb" |
|
|
| $bundleCodeDir = Join-Path $BundleRoot "code" |
| $bundleCheckpointsDir = Join-Path $BundleRoot "checkpoints" |
| $bundleNotebooksDir = Join-Path $BundleRoot "notebooks" |
| $bundleAudioDir = Join-Path $BundleRoot "data\audio" |
|
|
| Write-Step "Preparing bundle root: $BundleRoot" |
| Ensure-Dir $bundleCodeDir |
| Ensure-Dir $bundleCheckpointsDir |
| Ensure-Dir $bundleNotebooksDir |
|
|
| if ($IncludeDFDataset -or $IncludeLA -or $IncludeDemoWav) { |
| Ensure-Dir $bundleAudioDir |
| } |
|
|
| Write-Step "Copying code bundle" |
| Copy-DirSafe -Source $codeDir -DestinationParent $bundleCodeDir |
|
|
| Write-Step "Copying Colab notebook" |
| Copy-FileSafe -Source $notebookPath -DestinationDir $bundleNotebooksDir |
|
|
| Write-Step "Copying required checkpoints" |
| Copy-FileSafe -Source (Join-Path $checkpointsDir "xlsr2_300m.pt") -DestinationDir $bundleCheckpointsDir |
| Copy-FileSafe -Source (Join-Path $checkpointsDir "ASVspoof_2021_wav2vec2_Nes2Net_X_e100_bz12_lr2.5e_07_algo4_avg_ckpt_ep56_60_62_76_95.pth") -DestinationDir $bundleCheckpointsDir |
|
|
| if ($IncludeInTheWildCheckpoint) { |
| Write-Step "Copying optional In-the-Wild checkpoint" |
| Copy-FileSafe -Source (Join-Path $checkpointsDir "In_the_Wild_wav2vec2_Nes2Net_X_e100_bz12_lr2.5e_07_algo4_seed12345_avg_ckpt_ep59_61_69.pth") -DestinationDir $bundleCheckpointsDir |
| } |
|
|
| if ($IncludeDFDataset) { |
| Write-Step "Copying optional DF dataset" |
| Copy-DirSafe -Source (Join-Path $audioDataDir "ASVspoof2021_DF_eval") -DestinationParent $bundleAudioDir |
| } |
|
|
| if ($IncludeLA) { |
| Write-Step "Copying optional LA dataset" |
| Copy-DirSafe -Source (Join-Path $audioDataDir "ASVspoof2021_LA_eval") -DestinationParent $bundleAudioDir |
| } |
|
|
| if ($IncludeDemoWav) { |
| Write-Step "Copying optional demo WAV folder" |
| Copy-DirSafe -Source (Join-Path $audioDataDir "demo_wav") -DestinationParent $bundleAudioDir |
| } |
|
|
| if ($ZipCodeOnly) { |
| $zipPath = Join-Path $BundleRoot "Nes2Net_ASVspoof_ITW.zip" |
| Write-Step "Creating optional code zip" |
| Zip-CodeFolder -Source $codeDir -DestinationZip $zipPath |
| } |
|
|
| Write-Step "Bundle preparation complete." |
| if ($DryRun) { |
| Write-Step "Dry run only. No files were copied." |
| } |
|
|