# CNN Training Tools Tools for training and preparing data for the CNN post-processing effect. --- ## train_cnn.py PyTorch-based training script for image-to-image stylization. ### Basic Usage ```bash python3 train_cnn.py --input --target [options] ``` ### Examples **Single layer, 3×3 kernel:** ```bash python3 train_cnn.py --input training/input --target training/output \ --layers 1 --kernel-sizes 3 --epochs 500 ``` **Multi-layer, mixed kernels:** ```bash python3 train_cnn.py --input training/input --target training/output \ --layers 3 --kernel-sizes 3,5,3 --epochs 1000 ``` **With checkpointing:** ```bash python3 train_cnn.py --input training/input --target training/output \ --epochs 500 --checkpoint-every 50 ``` **Resume from checkpoint:** ```bash python3 train_cnn.py --input training/input --target training/output \ --resume training/checkpoints/checkpoint_epoch_200.pth ``` ### Options | Option | Default | Description | |--------|---------|-------------| | `--input` | *required* | Input image directory | | `--target` | *required* | Target image directory | | `--layers` | 1 | Number of CNN layers | | `--kernel-sizes` | 3 | Comma-separated kernel sizes (auto-repeats if single value) | | `--epochs` | 100 | Training epochs | | `--batch-size` | 4 | Batch size | | `--learning-rate` | 0.001 | Learning rate | | `--output` | `workspaces/main/shaders/cnn/cnn_weights_generated.wgsl` | Output WGSL file | | `--checkpoint-every` | 0 | Save checkpoint every N epochs (0=disabled) | | `--checkpoint-dir` | `training/checkpoints` | Checkpoint directory | | `--resume` | None | Resume from checkpoint file | ### Architecture - **Layer 0:** `CoordConv2d` - accepts (x,y) patch center + 3×3 RGBA samples - **Layers 1+:** Standard `Conv2d` - 3×3 RGBA samples only - **Activation:** Tanh between layers - **Output:** Residual connection (30% stylization blend) ### Requirements ```bash pip install torch torchvision pillow ``` --- ## image_style_processor.py Generates stylized target images from raw renders. ### Usage ```bash python3 image_style_processor.py