| # Scripts | |
| Utility scripts for working with CLEVR counterfactual scenes. | |
| ## Available Scripts | |
| ### generate_scenes.py | |
| Generate scene JSON files with counterfactuals (no rendering). | |
| **Purpose**: Create scene JSON files that can be rendered later. | |
| **Usage:** | |
| ```bash | |
| # Generate 10 scene sets | |
| python scripts/generate_scenes.py --num_scenes 10 --num_objects 5 --run_name experiment1 | |
| # Resume from checkpoint | |
| python scripts/generate_scenes.py --num_scenes 100 --run_name experiment1 --resume | |
| ``` | |
| **Output**: Scene JSON files in `output/run_name/scenes/` | |
| **Next step**: Use `pipeline.py --render_only` to render these scenes. | |
| **Note**: Alternatively, you can use `pipeline.py --skip_render` instead of this script. | |
| --- | |
| ### generate_examples.py | |
| Generate examples of each counterfactual type applied to a base scene. Optionally renders scenes to images. | |
| **Purpose**: Create reference examples demonstrating all counterfactual types. | |
| **Usage:** | |
| ```bash | |
| # Generate scene JSON files only | |
| python scripts/generate_examples.py [--output_dir DIR] [--num_objects N] | |
| # Generate and render to images | |
| python scripts/generate_examples.py --render [--output_dir DIR] [--num_objects N] [--use_gpu 0|1] | |
| ``` | |
| **Options:** | |
| - `--output_dir`: Output directory (default: `output/counterfactual_examples`) | |
| - `--num_objects`: Number of objects in base scene (default: 5) | |
| - `--render`: Render scenes to PNG images | |
| - `--use_gpu`: Use GPU rendering (0 = CPU, 1 = GPU, default: 0) | |
| **Output**: | |
| - Scene JSON files for all counterfactual types | |
| - Optional: PNG images (if `--render` is used) | |
| --- | |
| ### generate_questions_mapping.py | |
| Generate CSV mapping with questions and counterfactual questions for scenes. | |
| **Purpose**: Create question-answer datasets for training/evaluation. | |
| **Usage:** | |
| ```bash | |
| # For a specific run directory | |
| python scripts/generate_questions_mapping.py --output_dir output/experiment1 --generate_questions | |
| # Auto-detect latest run | |
| python scripts/generate_questions_mapping.py --output_dir output --auto_latest --generate_questions | |
| # Generate CSV with scene_id and links (relative paths) | |
| python scripts/generate_questions_mapping.py --output_dir output/experiment1 --generate_questions --with_links | |
| # Generate CSV with scene_id and full URLs | |
| python scripts/generate_questions_mapping.py --output_dir output/experiment1 --generate_questions --with_links --base_url https://example.com/dataset | |
| ``` | |
| **Options:** | |
| - `--output_dir`: Run directory or base output directory (default: `output`) | |
| - `--auto_latest`: Automatically find and use the latest run in output_dir | |
| - `--csv_name`: Output CSV filename (default: `image_mapping_with_questions.csv`) | |
| - `--generate_questions`: Generate questions and answers for each scene set | |
| - `--with_links`: Include scene_id and image/scene link columns (for URLs or file paths) | |
| - `--base_url`: Base URL for links (e.g., `https://example.com`). If not provided, uses relative paths like `images/filename.png` | |
| **Output**: CSV files with question-answer mappings | |
| --- | |
| ## Main Pipeline | |
| For production use (generating large datasets), use the main pipeline script: | |
| ```bash | |
| python pipeline.py --num_scenes 100 --num_objects 5 --run_name my_experiment | |
| ``` | |
| See the main `README.md` for full documentation of the production pipeline. | |
| --- | |
| ## Script Summary | |
| | Script | Purpose | When to Use | | |
| |--------|---------|-------------| | |
| | `generate_scenes.py` | Generate scene JSON files | Generate scenes separately (alternative to `pipeline.py --skip_render`) | | |
| | `generate_examples.py` | Generate reference examples | Creating demonstrations, testing counterfactuals | | |
| | `generate_questions_mapping.py` | Create QA datasets | Preparing training/evaluation data | | |
| | `pipeline.py` | Combined generation + rendering | Main entry point. Supports `--skip_render` and `--render_only` modes | | |