CoolFace
Apppublic

DocForg/Document_Forgery_Detection

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes
setup.py136 linesDownload Raw Back to scripts
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