""" Quick Setup Test for Basketball Binary Classifier ๐Ÿงช This tests if everything is ready before full training """ def test_imports(): """Test if all required modules can be imported""" print("๐Ÿงช Testing imports...") try: import torch import torchvision print(f"โœ… PyTorch: {torch.__version__}") print(f"โœ… TorchVision: {torchvision.__version__}") if torch.cuda.is_available(): print(f"โœ… CUDA: {torch.version.cuda}") print(f"๐Ÿš€ GPU: {torch.cuda.get_device_name(0)}") else: print("โš ๏ธ CUDA: Not available (will use CPU - slower training)") except ImportError as e: print(f"โŒ Import error: {e}") return False try: from binary_dataset import get_binary_dataloaders from binary_model import get_binary_model print("โœ… Custom modules imported successfully") except ImportError as e: print(f"โŒ Custom module error: {e}") return False return True def test_data_paths(): """Test if data paths exist""" print("\n๐Ÿ“‚ Testing data paths...") import os data_root = r"C:\ASH_PROJECT\data\UCF101" annotation_path = r"C:\ASH_PROJECT\data\ucfTrainTestlist" if os.path.exists(data_root): print("โœ… UCF101 data directory found") # Count some directories dirs = [d for d in os.listdir(data_root) if os.path.isdir(os.path.join(data_root, d))] print(f" ๐Ÿ“ Found {len(dirs)} action classes") # Check if Basketball exists if "Basketball" in dirs: print("โœ… Basketball class found") basket_path = os.path.join(data_root, "Basketball") videos = [f for f in os.listdir(basket_path) if f.endswith(('.avi', '.mp4'))] print(f" ๐Ÿ€ Basketball videos: {len(videos)}") else: print("โš ๏ธ Basketball class not found") else: print(f"โŒ UCF101 data not found at: {data_root}") return False if os.path.exists(annotation_path): print("โœ… Annotation path found") else: print(f"โŒ Annotations not found at: {annotation_path}") return False return True def test_model_creation(): """Test if we can create a binary model""" print("\n๐Ÿ”ง Testing model creation...") try: from binary_model import get_binary_model model = get_binary_model("simple") print("โœ… Binary model created successfully") # Test with dummy input import torch dummy_input = torch.randn(1, 3, 16, 112, 112) with torch.no_grad(): output = model(dummy_input) print(f"โœ… Model forward pass: {output.shape}") if output.shape == (1, 2): print("โœ… Correct output shape for binary classification") else: print(f"โš ๏ธ Expected (1, 2), got {output.shape}") return True except Exception as e: print(f"โŒ Model creation failed: {e}") return False def test_dataset_loading(): """Test if we can load a small batch of data""" print("\n๐Ÿ“Š Testing dataset loading...") try: from binary_dataset import get_binary_dataloaders # Test with very small batch train_loader, test_loader, class_weights = get_binary_dataloaders( r"C:\ASH_PROJECT\data\UCF101", r"C:\ASH_PROJECT\data\ucfTrainTestlist", target_action="Basketball", batch_size=2, # Very small for testing num_workers=0 ) print("โœ… DataLoaders created successfully") print(f" ๐Ÿ“Š Training batches: {len(train_loader)}") print(f" ๐Ÿ“Š Test batches: {len(test_loader)}") print(f" โš–๏ธ Class weights: {class_weights}") # Try to load one batch print("\n๐Ÿ” Testing batch loading...") for clips, labels in train_loader: print(f"โœ… First batch: clips={clips.shape}, labels={labels}") break return True except Exception as e: print(f"โŒ Dataset loading failed: {e}") return False def main(): """Run all tests""" print("๐Ÿš€" * 30) print("๐Ÿš€ BASKETBALL BINARY CLASSIFIER SETUP TEST") print("๐Ÿš€" * 30) all_passed = True all_passed &= test_imports() all_passed &= test_data_paths() all_passed &= test_model_creation() all_passed &= test_dataset_loading() print("\n" + "=" * 50) if all_passed: print("๐ŸŽ‰ ALL TESTS PASSED!") print("โœ… Ready for basketball binary classifier training!") print("\n๐Ÿš€ Next step: Run 'python train_basketball.py'") else: print("โŒ SOME TESTS FAILED!") print("๐Ÿ’ก Fix the issues above before training") print("=" * 50) if __name__ == "__main__": main()