How xingangpan/draggan works
DragGAN is an interactive point-based editor for images generated by pretrained StyleGAN models. The main workflow is to choose a model and seed, generate an image, set source/target points and a mask, then iteratively render the edited result. The repository also provides a Gradio interface, latent/model controls, and adjacent StyleGAN-Human tools including PTI inversion and InsetGAN composition. Links follow the README and shown excerpts/SOURCE INDEX references; unsampled capabilities are included where documented, but their internal wiring is not assumed.
Main entry points: visualizer_drag.py Desktop GUI · renderer.py Render engine · networks_stylegan2.py StyleGAN2 generator · visualizer_drag_gradio.py Gradio demo
Components 18
Editing interfaces
- Desktop GUI
visualizer_drag.py - Gradio demo
visualizer_drag_gradio.py - Point controls
viz/drag_widget.py - Latent controls
viz/latent_widget.py - Model selection
viz/pickle_widget.py - Capture controls
viz/capture_widget.py
Generation and editing
- Render engine
viz/renderer.py
GAN models
- StyleGAN2 generator
training/networks_stylegan2.py - StyleGAN3 generator
training/networks_stylegan3.py - Human generator
stylegan_human/training_scripts/sg2/training/networks.py - Checkpoint loading
legacy.py - GAN training
training/training_loop.py - Pretrained weights
Human-image tools
- Human editing
stylegan_human/edit.py - PTI inversion
stylegan_human/run_pti.py - Face-body composition
stylegan_human/insetgan.py
Runtime support
- GAN tensor ops
torch_utils/ops/upfirdn2d.py
Other components
- Editor
Connections 21
- Editor → Desktop GUI: opens
- Editor → Gradio demo: opens
- Desktop GUI → Point controls: updates controls
visualizer_drag.py - Desktop GUI → Latent controls: hosts controls
visualizer_drag.py - Desktop GUI → Model selection: hosts controls
visualizer_drag.py - Desktop GUI → Capture controls: hosts controls
visualizer_drag.py - Desktop GUI → Render engine: renders via
visualizer_drag.py - Gradio demo → Render engine: uses renderer
visualizer_drag_gradio.py - Point controls → Desktop GUI: sets edit args
viz/drag_widget.py - Render engine → Checkpoint loading: loads checkpoint
viz/renderer.py - Render engine → StyleGAN2 generator: selects generator
viz/renderer.py - Render engine → StyleGAN3 generator: selects generator
viz/renderer.py - Render engine → Human generator: selects generator
viz/renderer.py - StyleGAN2 generator → GAN tensor ops: uses resampling
training/networks_stylegan2.py - Checkpoint loading → StyleGAN2 generator: reconstructs network
legacy.py - Editor → PTI inversion: inverts image
- PTI inversion → Desktop GUI: loads latent and weights
- Editor → Human editing: runs human edits
- Editor → Face-body composition: runs composition
stylegan_human/insetgan.py - Editor → GAN training: trains models
- Pretrained weights → Render engine: provides checkpoint