"torchvision/vscode:/vscode.git/clone" did not exist on "418d8a6f106bad5ae08c14951105735ba67eec1e"
  • Takuma Mori's avatar
    Add a ControlNet model & pipeline (#2407) · 8dfff7c0
    Takuma Mori authored
    
    
    * add scaffold
    - copied convert_controlnet_to_diffusers.py from
    convert_original_stable_diffusion_to_diffusers.py
    
    * Add support to load ControlNet (WIP)
    - this makes Missking Key error on ControlNetModel
    
    * Update to convert ControlNet without error msg
    - init impl for StableDiffusionControlNetPipeline
    - init impl for ControlNetModel
    
    * cleanup of commented out
    
    * split create_controlnet_diffusers_config()
    from create_unet_diffusers_config()
    
    - add config: hint_channels
    
    * Add input_hint_block, input_zero_conv and
    middle_block_out
    - this makes missing key error on loading model
    
    * add unet_2d_blocks_controlnet.py
    - copied from unet_2d_blocks.py as impl CrossAttnDownBlock2D,DownBlock2D
    - this makes missing key error on loading model
    
    * Add loading for input_hint_block, zero_convs
    and middle_block_out
    
    - this makes no error message on model loading
    
    * Copy from UNet2DConditionalModel except __init__
    
    * Add ultra primitive test for ControlNetModel
    inference
    
    * Support ControlNetModel inference
    - without exceptions
    
    * copy forward() from UNet2DConditionModel
    
    * Impl ControlledUNet2DConditionModel inference
    - test_controlled_unet_inference passed
    
    * Frozen weight & biases for training
    
    * Minimized version of ControlNet/ControlledUnet
    - test_modules_controllnet.py passed
    
    * make style
    
    * Add support model loading for minimized ver
    
    * Remove all previous version files
    
    * from_pretrained and inference test passed
    
    * copied from pipeline_stable_diffusion.py
    except `__init__()`
    
    * Impl pipeline, pixel match test (almost) passed.
    
    * make style
    
    * make fix-copies
    
    * Fix to add import ControlNet blocks
    for `make fix-copies`
    
    * Remove einops dependency
    
    * Support  np.ndarray, PIL.Image for controlnet_hint
    
    * set default config file as lllyasviel's
    
    * Add support grayscale (hw) numpy array
    
    * Add and update docstrings
    
    * add control_net.mdx
    
    * add control_net.mdx to toctree
    
    * Update copyright year
    
    * Fix to add PIL.Image RGB->BGR conversion
    - thanks @Mystfit
    
    * make fix-copies
    
    * add basic fast test for controlnet
    
    * add slow test for controlnet/unet
    
    * Ignore down/up_block len check on ControlNet
    
    * add a copy from test_stable_diffusion.py
    
    * Accept controlnet_hint is None
    
    * merge pipeline_stable_diffusion.py diff
    
    * Update class name to SDControlNetPipeline
    
    * make style
    
    * Baseline fast test almost passed (w long desc)
    
    * still needs investigate.
    
    Following didn't passed descriped in TODO comment:
    - test_stable_diffusion_long_prompt
    - test_stable_diffusion_no_safety_checker
    
    Following didn't passed same as stable_diffusion_pipeline:
    - test_attention_slicing_forward_pass
    - test_inference_batch_single_identical
    - test_xformers_attention_forwardGenerator_pass
    these seems come from calc accuracy.
    
    * Add note comment related vae_scale_factor
    
    * add test_stable_diffusion_controlnet_ddim
    
    * add assertion for vae_scale_factor != 8
    
    * slow test of pipeline almost passed
    Failed: test_stable_diffusion_pipeline_with_model_offloading
    - ImportError: `enable_model_offload` requires `accelerate v0.17.0` or higher
    
    but currently latest version == 0.16.0
    
    * test_stable_diffusion_long_prompt passed
    
    * test_stable_diffusion_no_safety_checker passed
    
    - due to its model size, move to slow test
    
    * remove PoC test files
    
    * fix num_of_image, prompt length issue add add test
    
    * add support List[PIL.Image] for controlnet_hint
    
    * wip
    
    * all slow test passed
    
    * make style
    
    * update for slow test
    
    * RGB(PIL)->BGR(ctrlnet) conversion
    
    * fixes
    
    * remove manual num_images_per_prompt test
    
    * add document
    
    * add `image` argument docstring
    
    * make style
    
    * Add line to correct conversion
    
    * add controlnet_conditioning_scale (aka control_scales
    strength)
    
    * rgb channel ordering by default
    
    * image batching logic
    
    * Add control image descriptions for each checkpoint
    
    * Only save controlnet model in conversion script
    
    * Update src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_controlnet.py
    
    typo
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/control_net.mdx
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/control_net.mdx
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/control_net.mdx
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/control_net.mdx
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/control_net.mdx
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/control_net.mdx
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/control_net.mdx
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/control_net.mdx
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/control_net.mdx
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    
    * add gerated image example
    
    * a depth mask -> a depth map
    
    * rename control_net.mdx to controlnet.mdx
    
    * fix toc title
    
    * add ControlNet abstruct and link
    
    * Update src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_controlnet.py
    Co-authored-by: default avatardqueue <dbyqin@gmail.com>
    
    * remove controlnet constructor arguments re: @patrickvonplaten
    
    * [integration tests] test canny
    
    * test_canny fixes
    
    * [integration tests] test_depth
    
    * [integration tests] test_hed
    
    * [integration tests] test_mlsd
    
    * add channel order config to controlnet
    
    * [integration tests] test normal
    
    * [integration tests] test_openpose test_scribble
    
    * change height and width to default to conditioning image
    
    * [integration tests] test seg
    
    * style
    
    * test_depth fix
    
    * [integration tests] size fixes
    
    * [integration tests] cpu offloading
    
    * style
    
    * generalize controlnet embedding
    
    * fix conversion script
    
    * Update docs/source/en/api/pipelines/stable_diffusion/controlnet.mdx
    Co-authored-by: default avatarSayak Paul <spsayakpaul@gmail.com>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/controlnet.mdx
    Co-authored-by: default avatarSayak Paul <spsayakpaul@gmail.com>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/controlnet.mdx
    Co-authored-by: default avatarSayak Paul <spsayakpaul@gmail.com>
    
    * Update docs/source/en/api/pipelines/stable_diffusion/controlnet.mdx
    Co-authored-by: default avatarSayak Paul <spsayakpaul@gmail.com>
    
    * Style adapted to the documentation of pix2pix
    
    * merge main by hand
    
    * style
    
    * [docs] controlling generation doc nits
    
    * correct some things
    
    * add: controlnetmodel to autodoc.
    
    * finish docs
    
    * finish
    
    * finish 2
    
    * correct images
    
    * finish controlnet
    
    * Apply suggestions from code review
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    
    * uP
    
    * upload model
    
    * up
    
    * up
    
    ---------
    Co-authored-by: default avatarWilliam Berman <WLBberman@gmail.com>
    Co-authored-by: default avatarPedro Cuenca <pedro@huggingface.co>
    Co-authored-by: default avatardqueue <dbyqin@gmail.com>
    Co-authored-by: default avatarSayak Paul <spsayakpaul@gmail.com>
    Co-authored-by: default avatarPatrick von Platen <patrick.v.platen@gmail.com>
    8dfff7c0
__init__.py 6.31 KB