DocForg/Document_Forgery_Detection
0
1"""
2Setup Script
3
4Creates output directories and verifies installation.
5
6Usage:
7 python scripts/setup.py
8"""
9
10import sys
11from pathlib import Path
12
13# Add src to path
14sys.path.insert(0, str(Path(__file__).parent.parent))
15
16
17def create_directories():
18 """Create required output directories"""
19
20 base_dir = Path(__file__).parent.parent
21
22 directories = [
23 base_dir / 'outputs',
24 base_dir / 'outputs' / 'checkpoints',
25 base_dir / 'outputs' / 'logs',
26 base_dir / 'outputs' / 'plots',
27 base_dir / 'outputs' / 'results',
28 base_dir / 'outputs' / 'classifier',
29 base_dir / 'outputs' / 'exported',
30 ]
31
32 for directory in directories:
33 directory.mkdir(parents=True, exist_ok=True)
34 print(f"Created: {directory}")
35
36
37def verify_installation():
38 """Verify all required packages are installed"""
39
40 required_packages = [
41 ('torch', 'PyTorch'),
42 ('torchvision', 'TorchVision'),
43 ('timm', 'TIMM'),
44 ('lightgbm', 'LightGBM'),
45 ('sklearn', 'Scikit-learn'),
46 ('cv2', 'OpenCV'),
47 ('PIL', 'Pillow'),
48 ('numpy', 'NumPy'),
49 ('pandas', 'Pandas'),
50 ('matplotlib', 'Matplotlib'),
51 ('seaborn', 'Seaborn'),
52 ('albumentations', 'Albumentations'),
53 ('tqdm', 'TQDM'),
54 ('yaml', 'PyYAML'),
55 ('pywt', 'PyWavelets'),
56 ]
57
58 print("\nVerifying installation...")
59 print("-" * 40)
60
61 missing = []
62
63 for package, name in required_packages:
64 try:
65 __import__(package)
66 print(f" ✓ {name}")
67 except ImportError:
68 print(f" ✗ {name} (MISSING)")
69 missing.append(name)
70
71 # Check CUDA
72 print("-" * 40)
73 try:
74 import torch
75 if torch.cuda.is_available():
76 print(f" ✓ CUDA Available: {torch.cuda.get_device_name(0)}")
77 else:
78 print(" ⚠ CUDA Not Available (CPU mode)")
79 except Exception as e:
80 print(f" ✗ CUDA Check Failed: {e}")
81
82 return missing
83
84
85def verify_datasets():
86 """Verify dataset paths exist"""
87
88 base_dir = Path(__file__).parent.parent
89
90 datasets = {
91 'DocTamper': base_dir / 'datasets' / 'DocTamper',
92 'RTM': base_dir / 'datasets' / 'RealTextManipulation',
93 'CASIA': base_dir / 'datasets' / 'CASIA 1.0 dataset',
94 'Receipts': base_dir / 'datasets' / 'findit2',
95 }
96
97 print("\nVerifying datasets...")
98 print("-" * 40)
99
100 for name, path in datasets.items():
101 if path.exists():
102 print(f" ✓ {name}: {path}")
103 else:
104 print(f" ✗ {name}: NOT FOUND ({path})")
105
106
107def main():
108 print("\n" + "="*60)
109 print("Hybrid Document Forgery Detection - Setup")
110 print("="*60)
111
112 # Create directories
113 print("\nCreating directories...")
114 print("-" * 40)
115 create_directories()
116
117 # Verify installation
118 missing = verify_installation()
119
120 # Verify datasets
121 verify_datasets()
122
123 # Summary
124 print("\n" + "="*60)
125 if missing:
126 print("Setup complete with WARNINGS")
127 print(f"Missing packages: {', '.join(missing)}")
128 print("Run: pip install -r requirements.txt")
129 else:
130 print("Setup Complete! All checks passed.")
131 print("="*60)
132
133
134if __name__ == '__main__':
135 main()
136 