Showing preview only (8,295K chars total). Download the full file or copy to clipboard to get everything.
Repository: Perp-Neg/Perp-Neg-stablediffusion
Branch: main
Commit: 347c203e71e3
Files: 144
Total size: 7.9 MB
Directory structure:
gitextract_bvrh37j4/
├── .gitattributes
├── LICENSE
├── README.md
├── notebooks/
│ └── demo.ipynb
├── perpneg_diffusion/
│ ├── __init__.py
│ └── perpneg_stable_diffusion/
│ ├── __init__.py
│ ├── pipeline_composable_stable_diffusion.py
│ ├── pipeline_composable_stable_diffusion_3d_rotation.py
│ ├── pipeline_composable_stable_diffusion_rotation.py
│ ├── pipeline_perpneg_stable_diffusion.py
│ ├── pipeline_perpneg_stable_diffusion_rotation.py
│ └── safety_checker.py
├── scripts/
│ └── image_sample_stable_diffusion.py
├── setup.py
└── stable-dreamfusion/
├── .gitignore
├── LICENSE
├── activation.py
├── assets/
│ ├── advanced.md
│ └── update_logs.md
├── config/
│ ├── anya.csv
│ ├── car.csv
│ └── corgi.csv
├── docker/
│ ├── Dockerfile
│ └── README.md
├── dpt.py
├── encoding.py
├── evaluation/
│ ├── Prompt.py
│ ├── mesh_to_video.py
│ ├── r_precision.py
│ └── readme.md
├── freqencoder/
│ ├── __init__.py
│ ├── backend.py
│ ├── freq.py
│ ├── setup.py
│ └── src/
│ ├── bindings.cpp
│ ├── freqencoder.cu
│ └── freqencoder.h
├── gridencoder/
│ ├── __init__.py
│ ├── backend.py
│ ├── grid.py
│ ├── setup.py
│ └── src/
│ ├── bindings.cpp
│ ├── gridencoder.cu
│ └── gridencoder.h
├── guidance/
│ ├── clip_utils.py
│ ├── if_utils.py
│ ├── perpneg_utils.py
│ ├── sd_utils.py
│ └── zero123_utils.py
├── ldm/
│ ├── extras.py
│ ├── guidance.py
│ ├── lr_scheduler.py
│ ├── models/
│ │ ├── autoencoder.py
│ │ └── diffusion/
│ │ ├── __init__.py
│ │ ├── classifier.py
│ │ ├── ddim.py
│ │ ├── ddpm.py
│ │ ├── plms.py
│ │ └── sampling_util.py
│ ├── modules/
│ │ ├── attention.py
│ │ ├── diffusionmodules/
│ │ │ ├── __init__.py
│ │ │ ├── model.py
│ │ │ ├── openaimodel.py
│ │ │ └── util.py
│ │ ├── distributions/
│ │ │ ├── __init__.py
│ │ │ └── distributions.py
│ │ ├── ema.py
│ │ ├── encoders/
│ │ │ ├── __init__.py
│ │ │ └── modules.py
│ │ ├── evaluate/
│ │ │ ├── adm_evaluator.py
│ │ │ ├── evaluate_perceptualsim.py
│ │ │ ├── frechet_video_distance.py
│ │ │ ├── ssim.py
│ │ │ └── torch_frechet_video_distance.py
│ │ ├── image_degradation/
│ │ │ ├── __init__.py
│ │ │ ├── bsrgan.py
│ │ │ ├── bsrgan_light.py
│ │ │ └── utils_image.py
│ │ ├── losses/
│ │ │ ├── __init__.py
│ │ │ ├── contperceptual.py
│ │ │ └── vqperceptual.py
│ │ └── x_transformer.py
│ ├── thirdp/
│ │ └── psp/
│ │ ├── helpers.py
│ │ ├── id_loss.py
│ │ └── model_irse.py
│ └── util.py
├── main.py
├── meshutils.py
├── nerf/
│ ├── gui.py
│ ├── network.py
│ ├── network_grid.py
│ ├── network_grid_taichi.py
│ ├── network_grid_tcnn.py
│ ├── provider.py
│ ├── renderer.py
│ └── utils.py
├── optimizer.py
├── preprocess_image.py
├── pretrained/
│ └── zero123/
│ └── sd-objaverse-finetune-c_concat-256.yaml
├── raymarching/
│ ├── __init__.py
│ ├── backend.py
│ ├── raymarching.py
│ ├── setup.py
│ └── src/
│ ├── bindings.cpp
│ ├── raymarching.cu
│ └── raymarching.h
├── readme.md
├── requirements.txt
├── scripts/
│ ├── install_ext.sh
│ ├── res64.args
│ ├── run.sh
│ ├── run2.sh
│ ├── run3.sh
│ ├── run4.sh
│ ├── run5.sh
│ ├── run6.sh
│ ├── run_if.sh
│ ├── run_if2.sh
│ ├── run_if2_perpneg.sh
│ ├── run_image.sh
│ ├── run_image_anya.sh
│ ├── run_image_hard_examples.sh
│ ├── run_image_procedure.sh
│ ├── run_image_text.sh
│ └── run_images.sh
├── shencoder/
│ ├── __init__.py
│ ├── backend.py
│ ├── setup.py
│ ├── sphere_harmonics.py
│ └── src/
│ ├── bindings.cpp
│ ├── shencoder.cu
│ └── shencoder.h
├── taichi_modules/
│ ├── __init__.py
│ ├── hash_encoder.py
│ ├── intersection.py
│ ├── ray_march.py
│ ├── utils.py
│ ├── volume_render_test.py
│ └── volume_train.py
└── tets/
├── 128_tets.npz
├── 32_tets.npz
├── 64_tets.npz
├── README.md
└── generate_tets.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2023 Perp-Neg
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
### [Project Page](https://perp-neg.github.io/) | [Paper](https://arxiv.org/abs/2304.04968) | [Huggingface][huggingface-demo]
[![][huggingface]][huggingface-demo]
[huggingface]: <https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue>
[huggingface-demo]: <https://huggingface.co/spaces/rezaarmand/Perp-Neg>

# Perp-Neg Stable Diffusion
This is the repository for using Perp-Neg sampling with Stable Diffusion model, as presented in [Re-imagine the Negative Prompt Algorithm: Transform 2D Diffusion into 3D, alleviate Janus problem and Beyond.](https://Perp-Neg.github.io).
## Running code
**Run compositional ebm with diffusion model**
```
python scripts/image_sample_stable_diffusion.py --prompt="a boy wearing sunglasses|sunglasses with black frame" --weights="1|-1.5" --pipeline='cebm' --num_images=1
```
**Run PerpNeg**
```
python scripts/image_sample_stable_diffusion.py --prompt="a boy wearing sunglasses|sunglasses with black frame" --weights="1|-1.5" --pipeline='perpneg' --num_images=1
```
**Run PerpNeg-rotation**
```
python scripts/image_sample_stable_diffusion.py --prompt="a photo of lion, front view | a photo of lion, side view" --weights="1|-1.5|-1.5" --pipeline='rotation_perpneg' --num_images=1
```
**PerpNeg-Stable DreamFusion**
please use the scripts in
stable-dreamfusion/scripts/run_if2_perpneg.sh to run the Stable DreamFusion + PerpNeg to avoid the Janus problem.
This code is manily based on [Stable-DreamFusion](https://github.com/ashawkey/stable-dreamfusion)
If you find it useful for your work, please cite:
```
@article{armandpour2023re,
title={Re-imagine the Negative Prompt Algorithm: Transform 2D Diffusion into 3D, alleviate Janus problem and Beyond},
author={Armandpour, Mohammadreza and Zheng, Huangjie and Sadeghian, Ali and Sadeghian, Amir and Zhou, Mingyuan},
journal={arXiv preprint arXiv:2304.04968},
year={2023}
}
```
================================================
FILE: notebooks/demo.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 301,
"referenced_widgets": [
"ffaa1a5508fd423ba90aa435e1e900b6",
"6256a498f2524ac2aad4716164da874a",
"be79104a922c4b918cea7528aa213fbb",
"6146c7ee93ca4a61bb978eea839adba7",
"64cc7cdcffee4cd5889b0c464dd68acb",
"315aab75bc724665bc2e79b8af1114e8",
"a0a3f02145b84953a040c50d72b07b63",
"1a68aa400e8c4217ad0847d84921f862",
"3154df922df642f7bdf454e4e8d15d79",
"d2be532bb1e44a14a94538eafa1fc556",
"38fb08268ca34f46b6646f963fdffc5b",
"4360519a8e7c4bcc8e6a81037cc50561",
"df7e6f661c7742e1a692938e9c946704",
"02e1e306949d4a18b2aa3d0973e8f2fa"
]
},
"id": "ZtIStDEBnoz9",
"outputId": "f86bd33b-649e-4241-a8fb-18dc88bfb4ca",
"pycharm": {
"name": "#%%\n"
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Token is valid.\n",
"\u001b[1m\u001b[31mCannot authenticate through git-credential as no helper is defined on your machine.\n",
"You might have to re-authenticate when pushing to the Hugging Face Hub.\n",
"Run the following command in your terminal in case you want to set the 'store' credential helper as default.\n",
"\n",
"git config --global credential.helper store\n",
"\n",
"Read https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage for more details.\u001b[0m\n",
"Token has not been saved to git credential helper.\n",
"Your token has been saved to /home/hjzheng/.cache/huggingface/token\n",
"Login successful\n"
]
}
],
"source": [
"from huggingface_hub import notebook_login\n",
"notebook_login()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Obtaining file:///data/hjzheng/perpneg-diffusion\n",
" Preparing metadata (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25hRequirement already satisfied: Pillow in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (9.2.0)\n",
"Requirement already satisfied: attrs in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (21.4.0)\n",
"Requirement already satisfied: torch in /home/hjzheng/.local/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (2.0.0)\n",
"Requirement already satisfied: filelock in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (3.6.0)\n",
"Requirement already satisfied: requests in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (2.28.1)\n",
"Requirement already satisfied: tqdm in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (4.64.1)\n",
"Requirement already satisfied: ftfy in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (6.1.1)\n",
"Requirement already satisfied: regex in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (2022.7.9)\n",
"Requirement already satisfied: numpy in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (1.21.5)\n",
"Requirement already satisfied: blobfile in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (2.0.0)\n",
"Requirement already satisfied: torchvision in /home/hjzheng/.local/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (0.15.1)\n",
"Requirement already satisfied: diffuser in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (0.0.1)\n",
"Requirement already satisfied: transformers in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from perpneg-diffusion==2.0) (4.25.1)\n",
"Requirement already satisfied: urllib3~=1.25 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from blobfile->perpneg-diffusion==2.0) (1.26.11)\n",
"Requirement already satisfied: pycryptodomex~=3.8 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from blobfile->perpneg-diffusion==2.0) (3.16.0)\n",
"Requirement already satisfied: lxml~=4.9 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from blobfile->perpneg-diffusion==2.0) (4.9.1)\n",
"Requirement already satisfied: wcwidth>=0.2.5 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from ftfy->perpneg-diffusion==2.0) (0.2.5)\n",
"Requirement already satisfied: charset-normalizer<3,>=2 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from requests->perpneg-diffusion==2.0) (2.0.4)\n",
"Requirement already satisfied: idna<4,>=2.5 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from requests->perpneg-diffusion==2.0) (3.3)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from requests->perpneg-diffusion==2.0) (2022.9.14)\n",
"Requirement already satisfied: nvidia-cublas-cu11==11.10.3.66 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (11.10.3.66)\n",
"Requirement already satisfied: networkx in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (2.8.4)\n",
"Requirement already satisfied: nvidia-cusolver-cu11==11.4.0.1 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (11.4.0.1)\n",
"Requirement already satisfied: nvidia-nccl-cu11==2.14.3 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (2.14.3)\n",
"Requirement already satisfied: sympy in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (1.10.1)\n",
"Requirement already satisfied: nvidia-cuda-runtime-cu11==11.7.99 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (11.7.99)\n",
"Requirement already satisfied: triton==2.0.0 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (2.0.0)\n",
"Requirement already satisfied: nvidia-curand-cu11==10.2.10.91 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (10.2.10.91)\n",
"Requirement already satisfied: nvidia-cusparse-cu11==11.7.4.91 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (11.7.4.91)\n",
"Requirement already satisfied: nvidia-cuda-cupti-cu11==11.7.101 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (11.7.101)\n",
"Requirement already satisfied: jinja2 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (2.11.3)\n",
"Requirement already satisfied: nvidia-cudnn-cu11==8.5.0.96 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (8.5.0.96)\n",
"Requirement already satisfied: typing-extensions in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (4.3.0)\n",
"Requirement already satisfied: nvidia-cuda-nvrtc-cu11==11.7.99 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (11.7.99)\n",
"Requirement already satisfied: nvidia-cufft-cu11==10.9.0.58 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (10.9.0.58)\n",
"Requirement already satisfied: nvidia-nvtx-cu11==11.7.91 in /home/hjzheng/.local/lib/python3.9/site-packages (from torch->perpneg-diffusion==2.0) (11.7.91)\n",
"Requirement already satisfied: setuptools in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from nvidia-cublas-cu11==11.10.3.66->torch->perpneg-diffusion==2.0) (63.4.1)\n",
"Requirement already satisfied: wheel in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from nvidia-cublas-cu11==11.10.3.66->torch->perpneg-diffusion==2.0) (0.37.1)\n",
"Requirement already satisfied: cmake in /home/hjzheng/.local/lib/python3.9/site-packages (from triton==2.0.0->torch->perpneg-diffusion==2.0) (3.26.1)\n",
"Requirement already satisfied: lit in /home/hjzheng/.local/lib/python3.9/site-packages (from triton==2.0.0->torch->perpneg-diffusion==2.0) (16.0.0)\n",
"Requirement already satisfied: tokenizers!=0.11.3,<0.14,>=0.11.1 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from transformers->perpneg-diffusion==2.0) (0.13.2)\n",
"Requirement already satisfied: huggingface-hub<1.0,>=0.10.0 in /home/hjzheng/.local/lib/python3.9/site-packages (from transformers->perpneg-diffusion==2.0) (0.13.4)\n",
"Requirement already satisfied: packaging>=20.0 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from transformers->perpneg-diffusion==2.0) (21.3)\n",
"Requirement already satisfied: pyyaml>=5.1 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from transformers->perpneg-diffusion==2.0) (6.0)\n",
"Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from packaging>=20.0->transformers->perpneg-diffusion==2.0) (3.0.9)\n",
"Requirement already satisfied: MarkupSafe>=0.23 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from jinja2->torch->perpneg-diffusion==2.0) (2.0.1)\n",
"Requirement already satisfied: mpmath>=0.19 in /home/hjzheng/anaconda3/lib/python3.9/site-packages (from sympy->torch->perpneg-diffusion==2.0) (1.2.1)\n",
"Installing collected packages: perpneg-diffusion\n",
" Attempting uninstall: perpneg-diffusion\n",
" Found existing installation: perpneg-diffusion 2.0\n",
" Uninstalling perpneg-diffusion-2.0:\n",
" Successfully uninstalled perpneg-diffusion-2.0\n",
" Running setup.py develop for perpneg-diffusion\n",
"Successfully installed perpneg-diffusion-2.0\n"
]
}
],
"source": [
"!pip install git+https://github.com/Perp-Neg/Perp-Neg-stablediffusion.git\n",
"!pip install diffusers"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vGySZS39FcY9",
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"# **Perp-Neg using pretrained Stable-Diffusion 1v-4**"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 579,
"referenced_widgets": [
"7a15fac547de426682b10aab3ee8ab28",
"f0386c3b5c3b4bbc91baa3a300241bdc",
"0b29c9cf11a14cfc91b3ed25834b3db8",
"f1f2d0ab1787476aab96fbb78176f4b0",
"ea2170f36d9a4fabb8d3570d190f3406",
"d374aac4cc4141088044e2c663baa146",
"3b43d183fa31402cb33ed6733dac0f8e",
"622b9e3567984a57811d1fb68dca3c8c",
"8fc8e833967e4948a3dec4714b1e432a",
"c529baa978e94cbfaee08055fc5d5012",
"808b869f427b4628bb1790165c00c64a",
"daa47040dd41460f95a470fc7f2edd9b",
"832b523eaeab4c79b02f54f79faaecc0",
"3b68375fba4e4fd4b1349bae894995c1",
"0e39cd0b31774ed3b97081b767e1d348",
"ac3ed15108484e398f0c842e7f3f001f",
"ce0062fb965b40868061eedc16b54a5c",
"48b2fa7ac9a74b9da44ef6879af5c3ce",
"4a6d6a8d88eb4b2f94ddb50f3cb85587",
"812c002832c340aebff511e05b8d9b0a",
"4dc0b08e0cdf416fb7c89280250f5936",
"15d219577406453780f29682d5d4fb16",
"4807204d0a0546549cd1c3e3d7c38681",
"848e661e2a3d453096ba0f7eec053863",
"98dc7d1ddb554b9e8dc0a1a67de9b182",
"d0689d9ffc654621983d0c17c6be26e1",
"a1131a0e3ac14c85b676ca8ee0954930",
"12e6abec2a1c4fd587464f9235f1c6d6",
"a459df56ab6c4be8a4bd560662091c55",
"8be418caa510492a849979a1764725fc",
"32c239799fd6497881d4d267aab11843",
"4158590b952a4beb8c6f3bbe86b1c912",
"9accc7f2222646cf9277634a57f627e8",
"40f59236ae144e78808ff59d3d1a3fa5",
"2ce0361adede4e76b2c9a86fd5c6147f",
"29a80ae25af843f19865c93065855ad8",
"9a7e65a02ec1417295aa7fe922adaddb",
"da2312e5132e4a778eff81d8157ef405",
"f648ea3359b647d484ffc9d4e9afd5a3",
"52f4274f2aa54227bff5b3b82788a1d2",
"3115d914599a4278bcc1ea389b29d741",
"f6aef2a9dd5b49678e2d6e0bfc4dcf80",
"78fc9660063146bfb78de91aa2dd71c1",
"5548ca291c284bc7b50d01b47bd1fc26",
"66366dd1629140339e3581bb51afa96d",
"23b4574bfd464bf88ad0686d1f4cf004",
"1cacb3a9162b4db2b2f9dce6955130d2",
"7d7dc237a8c84b0d81b49c206ce12f53",
"093c2510cdac4d9e90bb722bc313f5a9",
"55d71426798c41c0a05f015026f78a13",
"7dfeaca1c058448497affc9dc0630a22",
"4f534a47ecbb4f45a461ce42ddc1c19d",
"c919196e3b7c498280f08978beb9ee33",
"9174190f9bc044f2a0fe5cd6ab8b9434",
"d88916e44cf74df3a9ccbd6003ee30fb",
"8d8b8babbc4d4827831d42ac7dd87e83",
"4b9e352a09e64b89a3fc3c4754e75a8b",
"a47717a26020451f8e01b4f225df86d0",
"42a1fcb22c1840aaad16f4b40d9135aa",
"1b574186f7bb480e83eddb85b70ec046",
"11cd8fae624a4826a49a27034660696c",
"f11ab8950fd844dd92fe565f5fee8027",
"7b882cacc7ea4830914424f297cefa93",
"cb1cf909e7c046128223c42b48f67d98",
"17faef4d9d504a349224a10d4f2a376d",
"8c87731c190f49948db30b3af5c6656c",
"09ace8b696834e4b9457bbce4221c288",
"742fa62a14d24ac786d15f8060eecdd6",
"cf4701481d754ff68f74267605260ada",
"228a0e6c57354d8180a11d7b6c003b98",
"e7712bcea58040e5b81056bfeda00ba5",
"b832ac68d0ba4edd8214d250c96c79ab",
"0013f4a6fd59428abe6bfae6f3b772cc",
"c2caed4aa5154d8091949c38f99e4f90",
"9241d2e3a2754ec690241e432f584955",
"b382f9a2c8a24626b53cd7c72876c70b",
"97b40683d60b4f92a11744707f04314f",
"9e7556dac41c49e8939103c394c1047d",
"06b988380c5d4d79a70837d7edb2385f",
"1b6fc13fdfc243c28f8dc0411eaf6bb3",
"cc09042baa274dc9991084da6675ffb3",
"8c46ad7825b44906a74018dc377b9ff1",
"0bfa794434ce48579baf77be2a5d0370",
"5d2551dafe6a475aaf0fcc16307384e7",
"10090f12c0ac46d7834cfac47f2312e1",
"e6bde272668a41c58472a796e5982f93",
"0ca901a8a5694574b4aa70706c3c8e8d",
"56388564b8d74fd3ab2cbffef589797f",
"b3f6cc05b8674bfbb936fe3da486a0e2",
"e622762a460240d1a2584818972944ba",
"7d8ddf8c95954c928a7aa88e3cd63d80",
"89bd2aa710124086b005da053cb658b7",
"cb73c1ba97da496393006a6cd731382c",
"dc3b6c7eaaf34957a92c6dd0864ed7e7",
"75f0d06868e74e7c98c412ee7e83e006",
"ed25d7106116414d92a9c2480dccbed5",
"0be9ae806bbe46108c0d53bdc51d1af4",
"93ccbd3392bb484aa48ab6ef68ca72ca",
"7243e124ac4245ea924daa9322b1f4f8",
"2fec261807dd49c5b8a2e683399075db",
"46ce988949ce426faad782dee444e6d8",
"3ac887b612e14b53982bfe1b51ec56cb",
"a765c310cd4442e9a4a5a5d3a68efffc",
"b7af62ebf3db41b4b719ed9a09d38134",
"9532016370764d1b8cebaacb905004a4",
"fb6c95c2d17e40ec87857440cd6feb70",
"54e10661b84946adaef68974e0603244",
"89b0a47b9fea4599ab35a72131d1ad8c",
"0b3d8f79299a41e2aa2328d29eae9ae9",
"346cba7fd81145bf9a289aae5edc18cf",
"ff62352842474a22ad56bd1bf3f425c8",
"88bc0062b810446db4f092d474ff2260",
"887c6d7dfb114026bd216627eaa7617f",
"a815a11222664108bae82f92c7b55e74",
"01fd5dc24f2e4cf797ef1fae5bab225e",
"4d61d6a2d9d04525a0da4f43a3dcc96b",
"40539f777ec54b3ab743a919a97c8fac",
"63ff3d042375405dabdbcb5e97aa04fb",
"b0a34e49f1c64078a48d7256b91c2b98",
"d2483a9369a3434d9ce003c5e9a41ef4",
"9bf892af07694f4494f2a080acbea909",
"9c22d4e42f264aa89559c48987c3f908",
"5b9aa13e72e34e659dd8044c0d148aa8",
"b3a5fd88df1049bdb5db14cfcf1b30d5",
"7a10cfda8ebe483b8d1e17dc1dc79e80",
"755cae0a3665483b931d5de85214cf9c",
"fd75f9deec6b4cf1961251b6817036cd",
"0dd302fed0164b1fa1edbd59b56d6dd3",
"484f734a4cc248ffbe74859872974f9d",
"2e5788b50f3046f693a5138241335d93",
"ce375a1a01b64a5585d4c1f03a8e0dd3",
"62219a1fb7b7454ba179ceeacd71fdce",
"1c737663b397455f93a61aee29b38e36",
"f4c275484d57412aa7bfd58a3102f05d",
"3fbd4fc1ec424d559b950487a541fdc0",
"3af0e0a5f3634842972c62c1fee1d7c2",
"62806d8bd0d84777b3d85e10fae882a4",
"52a5694271084eb3b95d1af2719ca4c0",
"84963e80fcdb4ca18e726397d8795e84",
"912b82d360df42b78b32696dd37e3d5e",
"e5a6ad2492f74626b23b328da9bba0bb",
"8c41f01c30af4278a8d70d30a6fcfd0e",
"6d1830c28f694585b801920f4ec0289e",
"ee018e8cdc014996ae7a7e29aec51aee",
"6f22e9410daa4dfe882bd53ccecd094e",
"35ac8bc3a4e74377be312b87c65ec0e3",
"11222bf1b1ac43c0ad8a6a1dd3e10b90",
"6b2ba9b98e3a4a82a5f76710abc14c57",
"07be7854de894d6499a5adc33bc8a333",
"260085a5d23c4d5cad21d446aa1bb0a5",
"3521caaa92ba43748c280a3113ad8cb6",
"0f0d59bd022f429898cc6ec4f2d065b5",
"444c6dfda1e441f88ec0bd3a10cfce74",
"ed1ea149b4f643a3af6468e6f7275455",
"d7495cb2e92d4415963bd9de02dd0fbb",
"c627b6dd164643f884f2171b8d436379",
"74dd629bc88249e69b6dde2dc7853297",
"ddd9defb7fb64d0a98f574c511c51b7a",
"9c35fd30ddc44935ab42a92fabff5434",
"7225f778b0af42b1a31df41a823fae1e",
"29c502ee32c54a64ab946286a7e774fa",
"18e22e8d6420498ab759fe5c01189a53",
"ab07702d6b454d40a328e231f2a9e375",
"7f724391b4ef4ee088bc379ab8829682",
"877d26f3563e4d6289033606f616bf8e",
"adaab63e9c04450f8f2bf24ec224a9b0",
"bb7cded3863e430ea91af9d8e4c5cc74",
"d05a851310ba40f9af88854d780592d7",
"a9bfc166ead14363b615fc462bdf75a2",
"dedea924f0fb427585780a7f39f0dbcb",
"c1e1d7073e6d41e8b451e2b6480ca899",
"9e242fbc45cd40a2bfb5131a6310a75e",
"babe5c904c47478fbdfc1b2dfa100e69",
"e7c244e63c144b00812a87b9ed1ec0f8",
"73840385d3544d9c9f4bddebe63e143c",
"ec7311e77dd145eaacb05fc4a9132900",
"908c09b9c3834ad9980557a8665708d8",
"0a737abc8dbc4fd692d038bc15ae04f7",
"6d0eae6bcfa545408011ec1c2e3256d2",
"a20493f67fdd4d509cb4a205695a0b64",
"8d0c37c3a4004293b7f402d02156bdf3",
"8f4421503d80478482de92fc345abb05",
"2c1ac055fbf341d68bbb075d6dede5c6",
"a4e0981f8cf741ceb58652d5e43a323a",
"66f2c5b960d14c5daafc0d5240ec1215",
"cff3083a76e34a2db0cb78de06bd2243",
"aa80a5d8c85e4209b38c0d7b20bd4a19"
]
},
"id": "8fNLZCu5Fic_",
"outputId": "a2049c35-8cc7-4314-a337-cd2afb00bfe2",
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "32a75109602c441abe015ba38cf202aa",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Fetching 20 files: 0%| | 0/20 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"The config attributes {'scaling_factor': 0.18215} were passed to AutoencoderKL, but are not expected and will be ignored. Please verify your config.json configuration file.\n"
]
}
],
"source": [
"import torch\n",
"import torch as th\n",
"from IPython.display import display\n",
"import os\n",
"from PIL import Image\n",
"from torch import autocast\n",
"from perpneg_diffusion.perpneg_stable_diffusion.pipeline_composable_stable_diffusion import ComposableStableDiffusionPipeline\n",
"\n",
"has_cuda = torch.cuda.is_available()\n",
"device = torch.device('cpu' if not has_cuda else 'cuda')\n",
"print(device)\n",
"\n",
"# initialize stable diffusion model\n",
"pipe = ComposableStableDiffusionPipeline.from_pretrained(\n",
" \"CompVis/stable-diffusion-v1-4\",\n",
" use_auth_token=True\n",
").to(device)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cuda:1\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b7ee5636b60241d6abffdf9c614eadf6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Fetching 20 files: 0%| | 0/20 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"The config attributes {'scaling_factor': 0.18215} were passed to AutoencoderKL, but are not expected and will be ignored. Please verify your config.json configuration file.\n"
]
}
],
"source": [
"from perpneg_diffusion.perpneg_stable_diffusion.pipeline_perpneg_stable_diffusion import PerpStableDiffusionPipeline\n",
"\n",
"\n",
"has_cuda = torch.cuda.is_available()\n",
"device2 = torch.device('cpu' if not has_cuda else 'cuda:1')\n",
"print(device2)\n",
"\n",
"# initialize stable diffusion model\n",
"pipe_perpneg = PerpStableDiffusionPipeline.from_pretrained(\n",
" \"CompVis/stable-diffusion-v1-4\",\n",
" use_auth_token=True\n",
").to(device2)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4079990b03804fa1b696bbbc42db8656",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/51 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[False]\n"
]
},
{
"data": {
"image/png": "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
gitextract_bvrh37j4/
├── .gitattributes
├── LICENSE
├── README.md
├── notebooks/
│ └── demo.ipynb
├── perpneg_diffusion/
│ ├── __init__.py
│ └── perpneg_stable_diffusion/
│ ├── __init__.py
│ ├── pipeline_composable_stable_diffusion.py
│ ├── pipeline_composable_stable_diffusion_3d_rotation.py
│ ├── pipeline_composable_stable_diffusion_rotation.py
│ ├── pipeline_perpneg_stable_diffusion.py
│ ├── pipeline_perpneg_stable_diffusion_rotation.py
│ └── safety_checker.py
├── scripts/
│ └── image_sample_stable_diffusion.py
├── setup.py
└── stable-dreamfusion/
├── .gitignore
├── LICENSE
├── activation.py
├── assets/
│ ├── advanced.md
│ └── update_logs.md
├── config/
│ ├── anya.csv
│ ├── car.csv
│ └── corgi.csv
├── docker/
│ ├── Dockerfile
│ └── README.md
├── dpt.py
├── encoding.py
├── evaluation/
│ ├── Prompt.py
│ ├── mesh_to_video.py
│ ├── r_precision.py
│ └── readme.md
├── freqencoder/
│ ├── __init__.py
│ ├── backend.py
│ ├── freq.py
│ ├── setup.py
│ └── src/
│ ├── bindings.cpp
│ ├── freqencoder.cu
│ └── freqencoder.h
├── gridencoder/
│ ├── __init__.py
│ ├── backend.py
│ ├── grid.py
│ ├── setup.py
│ └── src/
│ ├── bindings.cpp
│ ├── gridencoder.cu
│ └── gridencoder.h
├── guidance/
│ ├── clip_utils.py
│ ├── if_utils.py
│ ├── perpneg_utils.py
│ ├── sd_utils.py
│ └── zero123_utils.py
├── ldm/
│ ├── extras.py
│ ├── guidance.py
│ ├── lr_scheduler.py
│ ├── models/
│ │ ├── autoencoder.py
│ │ └── diffusion/
│ │ ├── __init__.py
│ │ ├── classifier.py
│ │ ├── ddim.py
│ │ ├── ddpm.py
│ │ ├── plms.py
│ │ └── sampling_util.py
│ ├── modules/
│ │ ├── attention.py
│ │ ├── diffusionmodules/
│ │ │ ├── __init__.py
│ │ │ ├── model.py
│ │ │ ├── openaimodel.py
│ │ │ └── util.py
│ │ ├── distributions/
│ │ │ ├── __init__.py
│ │ │ └── distributions.py
│ │ ├── ema.py
│ │ ├── encoders/
│ │ │ ├── __init__.py
│ │ │ └── modules.py
│ │ ├── evaluate/
│ │ │ ├── adm_evaluator.py
│ │ │ ├── evaluate_perceptualsim.py
│ │ │ ├── frechet_video_distance.py
│ │ │ ├── ssim.py
│ │ │ └── torch_frechet_video_distance.py
│ │ ├── image_degradation/
│ │ │ ├── __init__.py
│ │ │ ├── bsrgan.py
│ │ │ ├── bsrgan_light.py
│ │ │ └── utils_image.py
│ │ ├── losses/
│ │ │ ├── __init__.py
│ │ │ ├── contperceptual.py
│ │ │ └── vqperceptual.py
│ │ └── x_transformer.py
│ ├── thirdp/
│ │ └── psp/
│ │ ├── helpers.py
│ │ ├── id_loss.py
│ │ └── model_irse.py
│ └── util.py
├── main.py
├── meshutils.py
├── nerf/
│ ├── gui.py
│ ├── network.py
│ ├── network_grid.py
│ ├── network_grid_taichi.py
│ ├── network_grid_tcnn.py
│ ├── provider.py
│ ├── renderer.py
│ └── utils.py
├── optimizer.py
├── preprocess_image.py
├── pretrained/
│ └── zero123/
│ └── sd-objaverse-finetune-c_concat-256.yaml
├── raymarching/
│ ├── __init__.py
│ ├── backend.py
│ ├── raymarching.py
│ ├── setup.py
│ └── src/
│ ├── bindings.cpp
│ ├── raymarching.cu
│ └── raymarching.h
├── readme.md
├── requirements.txt
├── scripts/
│ ├── install_ext.sh
│ ├── res64.args
│ ├── run.sh
│ ├── run2.sh
│ ├── run3.sh
│ ├── run4.sh
│ ├── run5.sh
│ ├── run6.sh
│ ├── run_if.sh
│ ├── run_if2.sh
│ ├── run_if2_perpneg.sh
│ ├── run_image.sh
│ ├── run_image_anya.sh
│ ├── run_image_hard_examples.sh
│ ├── run_image_procedure.sh
│ ├── run_image_text.sh
│ └── run_images.sh
├── shencoder/
│ ├── __init__.py
│ ├── backend.py
│ ├── setup.py
│ ├── sphere_harmonics.py
│ └── src/
│ ├── bindings.cpp
│ ├── shencoder.cu
│ └── shencoder.h
├── taichi_modules/
│ ├── __init__.py
│ ├── hash_encoder.py
│ ├── intersection.py
│ ├── ray_march.py
│ ├── utils.py
│ ├── volume_render_test.py
│ └── volume_train.py
└── tets/
├── 128_tets.npz
├── 32_tets.npz
├── 64_tets.npz
├── README.md
└── generate_tets.py
SYMBOL INDEX (1151 symbols across 83 files)
FILE: perpneg_diffusion/perpneg_stable_diffusion/__init__.py
class StableDiffusionPipelineOutput (line 16) | class StableDiffusionPipelineOutput(BaseOutput):
FILE: perpneg_diffusion/perpneg_stable_diffusion/pipeline_composable_stable_diffusion.py
class ComposableStableDiffusionPipeline (line 20) | class ComposableStableDiffusionPipeline(DiffusionPipeline):
method __init__ (line 48) | def __init__(
method enable_attention_slicing (line 70) | def enable_attention_slicing(self, slice_size: Optional[Union[str, int...
method disable_attention_slicing (line 89) | def disable_attention_slicing(self):
method __call__ (line 98) | def __call__(
FILE: perpneg_diffusion/perpneg_stable_diffusion/pipeline_composable_stable_diffusion_3d_rotation.py
function get_prependicualr_component (line 20) | def get_prependicualr_component(x, y):
function weighted_prependicualr_aggricator (line 25) | def weighted_prependicualr_aggricator(delta_noise_pred_pos, w_pos, delta...
class ComposableStableDiffusionPipeline_perpneg (line 39) | class ComposableStableDiffusionPipeline_perpneg(DiffusionPipeline):
method __init__ (line 67) | def __init__(
method enable_attention_slicing (line 89) | def enable_attention_slicing(self, slice_size: Optional[Union[str, int...
method disable_attention_slicing (line 108) | def disable_attention_slicing(self):
method __call__ (line 117) | def __call__(
FILE: perpneg_diffusion/perpneg_stable_diffusion/pipeline_composable_stable_diffusion_rotation.py
function get_prependicualr_component (line 20) | def get_prependicualr_component(x, y):
function weighted_prependicualr_aggricator (line 25) | def weighted_prependicualr_aggricator(delta_noise_pred_pos, w_pos, delta...
class ComposableStableDiffusionPipeline_perpneg (line 39) | class ComposableStableDiffusionPipeline_perpneg(DiffusionPipeline):
method __init__ (line 67) | def __init__(
method enable_attention_slicing (line 89) | def enable_attention_slicing(self, slice_size: Optional[Union[str, int...
method disable_attention_slicing (line 108) | def disable_attention_slicing(self):
method __call__ (line 117) | def __call__(
FILE: perpneg_diffusion/perpneg_stable_diffusion/pipeline_perpneg_stable_diffusion.py
function get_prependicualr_component (line 20) | def get_prependicualr_component(x, y):
function weighted_prependicualr_aggricator (line 24) | def weighted_prependicualr_aggricator(delta_noise_pred_pos, w_pos, delta...
class PerpStableDiffusionPipeline (line 38) | class PerpStableDiffusionPipeline(DiffusionPipeline):
method __init__ (line 66) | def __init__(
method enable_attention_slicing (line 88) | def enable_attention_slicing(self, slice_size: Optional[Union[str, int...
method disable_attention_slicing (line 107) | def disable_attention_slicing(self):
method __call__ (line 116) | def __call__(
FILE: perpneg_diffusion/perpneg_stable_diffusion/pipeline_perpneg_stable_diffusion_rotation.py
function get_prependicualr_component (line 20) | def get_prependicualr_component(x, y):
function weighted_prependicualr_aggricator (line 24) | def weighted_prependicualr_aggricator(delta_noise_pred_pos, w_pos, delta...
class PerpStableDiffusionPipeline (line 38) | class PerpStableDiffusionPipeline(DiffusionPipeline):
method __init__ (line 66) | def __init__(
method enable_attention_slicing (line 88) | def enable_attention_slicing(self, slice_size: Optional[Union[str, int...
method disable_attention_slicing (line 107) | def disable_attention_slicing(self):
method __call__ (line 116) | def __call__(
FILE: perpneg_diffusion/perpneg_stable_diffusion/safety_checker.py
function cosine_distance (line 16) | def cosine_distance(image_embeds, text_embeds):
class StableDiffusionSafetyChecker (line 22) | class StableDiffusionSafetyChecker(PreTrainedModel):
method __init__ (line 25) | def __init__(self, config: CLIPConfig):
method forward (line 38) | def forward(self, clip_input, images):
method forward_onnx (line 86) | def forward_onnx(self, clip_input: torch.FloatTensor, images: torch.Fl...
FILE: scripts/image_sample_stable_diffusion.py
function dummy (line 51) | def dummy(images, **kwargs):
FILE: stable-dreamfusion/activation.py
class _trunc_exp (line 5) | class _trunc_exp(Function):
method forward (line 8) | def forward(ctx, x):
method backward (line 14) | def backward(ctx, g):
function biased_softplus (line 20) | def biased_softplus(x, bias=0):
FILE: stable-dreamfusion/dpt.py
class BaseModel (line 10) | class BaseModel(torch.nn.Module):
method load (line 11) | def load(self, path):
function unflatten_with_named_tensor (line 24) | def unflatten_with_named_tensor(input, dim, sizes):
class Slice (line 30) | class Slice(nn.Module):
method __init__ (line 31) | def __init__(self, start_index=1):
method forward (line 35) | def forward(self, x):
class AddReadout (line 39) | class AddReadout(nn.Module):
method __init__ (line 40) | def __init__(self, start_index=1):
method forward (line 44) | def forward(self, x):
class ProjectReadout (line 52) | class ProjectReadout(nn.Module):
method __init__ (line 53) | def __init__(self, in_features, start_index=1):
method forward (line 59) | def forward(self, x):
class Transpose (line 66) | class Transpose(nn.Module):
method __init__ (line 67) | def __init__(self, dim0, dim1):
method forward (line 72) | def forward(self, x):
function forward_vit (line 77) | def forward_vit(pretrained, x):
function _resize_pos_embed (line 118) | def _resize_pos_embed(self, posemb, gs_h, gs_w):
function forward_flex (line 135) | def forward_flex(self, x):
function get_activation (line 177) | def get_activation(name):
function get_readout_oper (line 184) | def get_readout_oper(vit_features, features, use_readout, start_index=1):
function _make_vit_b16_backbone (line 201) | def _make_vit_b16_backbone(
function _make_pretrained_vitl16_384 (line 315) | def _make_pretrained_vitl16_384(pretrained, use_readout="ignore", hooks=...
function _make_pretrained_vitb16_384 (line 328) | def _make_pretrained_vitb16_384(pretrained, use_readout="ignore", hooks=...
function _make_pretrained_deitb16_384 (line 337) | def _make_pretrained_deitb16_384(pretrained, use_readout="ignore", hooks...
function _make_pretrained_deitb16_distil_384 (line 346) | def _make_pretrained_deitb16_distil_384(pretrained, use_readout="ignore"...
function _make_vit_b_rn50_backbone (line 361) | def _make_vit_b_rn50_backbone(
function _make_pretrained_vitb_rn50_384 (line 496) | def _make_pretrained_vitb_rn50_384(
function _make_encoder (line 511) | def _make_encoder(backbone, features, use_pretrained, groups=1, expand=F...
function _make_scratch (line 549) | def _make_scratch(in_shape, out_shape, groups=1, expand=False):
function _make_pretrained_efficientnet_lite3 (line 578) | def _make_pretrained_efficientnet_lite3(use_pretrained, exportable=False):
function _make_efficientnet_backbone (line 588) | def _make_efficientnet_backbone(effnet):
function _make_resnet_backbone (line 601) | def _make_resnet_backbone(resnet):
function _make_pretrained_resnext101_wsl (line 614) | def _make_pretrained_resnext101_wsl(use_pretrained):
class Interpolate (line 620) | class Interpolate(nn.Module):
method __init__ (line 624) | def __init__(self, scale_factor, mode, align_corners=False):
method forward (line 637) | def forward(self, x):
class ResidualConvUnit (line 652) | class ResidualConvUnit(nn.Module):
method __init__ (line 656) | def __init__(self, features):
method forward (line 673) | def forward(self, x):
class FeatureFusionBlock (line 688) | class FeatureFusionBlock(nn.Module):
method __init__ (line 692) | def __init__(self, features):
method forward (line 702) | def forward(self, *xs):
class ResidualConvUnit_custom (line 723) | class ResidualConvUnit_custom(nn.Module):
method __init__ (line 727) | def __init__(self, features, activation, bn):
method forward (line 754) | def forward(self, x):
class FeatureFusionBlock_custom (line 780) | class FeatureFusionBlock_custom(nn.Module):
method __init__ (line 784) | def __init__(self, features, activation, deconv=False, bn=False, expan...
method forward (line 808) | def forward(self, *xs):
function _make_fusion_block (line 832) | def _make_fusion_block(features, use_bn):
class DPT (line 843) | class DPT(BaseModel):
method __init__ (line 844) | def __init__(
method forward (line 884) | def forward(self, x):
class DPTDepthModel (line 904) | class DPTDepthModel(DPT):
method __init__ (line 905) | def __init__(self, path=None, non_negative=True, num_channels=1, **kwa...
method forward (line 923) | def forward(self, x):
FILE: stable-dreamfusion/encoding.py
class FreqEncoder_torch (line 5) | class FreqEncoder_torch(nn.Module):
method __init__ (line 6) | def __init__(self, input_dim, max_freq_log2, N_freqs,
method forward (line 30) | def forward(self, input, max_level=None, **kwargs):
function get_encoder (line 54) | def get_encoder(encoding, input_dim=3,
FILE: stable-dreamfusion/evaluation/mesh_to_video.py
function render_video (line 9) | def render_video(anim_mesh):
function generate_mesh (line 26) | def generate_mesh(obj1,obj2,transform_vector):
FILE: stable-dreamfusion/freqencoder/backend.py
function find_cl_path (line 18) | def find_cl_path():
FILE: stable-dreamfusion/freqencoder/freq.py
class _freq_encoder (line 15) | class _freq_encoder(Function):
method forward (line 18) | def forward(ctx, inputs, degree, output_dim):
method backward (line 39) | def backward(ctx, grad):
class FreqEncoder (line 55) | class FreqEncoder(nn.Module):
method __init__ (line 56) | def __init__(self, input_dim=3, degree=4):
method __repr__ (line 63) | def __repr__(self):
method forward (line 66) | def forward(self, inputs, **kwargs):
FILE: stable-dreamfusion/freqencoder/setup.py
function find_cl_path (line 19) | def find_cl_path():
FILE: stable-dreamfusion/freqencoder/src/bindings.cpp
function PYBIND11_MODULE (line 5) | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
FILE: stable-dreamfusion/gridencoder/backend.py
function find_cl_path (line 17) | def find_cl_path():
FILE: stable-dreamfusion/gridencoder/grid.py
class _grid_encode (line 25) | class _grid_encode(Function):
method forward (line 28) | def forward(ctx, inputs, embeddings, offsets, per_level_scale, base_re...
method backward (line 75) | def backward(ctx, grad):
class GridEncoder (line 103) | class GridEncoder(nn.Module):
method __init__ (line 104) | def __init__(self, input_dim=3, num_levels=16, level_dim=2, per_level_...
method reset_parameters (line 145) | def reset_parameters(self):
method __repr__ (line 149) | def __repr__(self):
method forward (line 152) | def forward(self, inputs, bound=1, max_level=None):
method grad_total_variation (line 173) | def grad_total_variation(self, weight=1e-7, inputs=None, bound=1, B=10...
method grad_weight_decay (line 196) | def grad_weight_decay(self, weight=0.1):
FILE: stable-dreamfusion/gridencoder/setup.py
function find_cl_path (line 18) | def find_cl_path():
FILE: stable-dreamfusion/gridencoder/src/bindings.cpp
function PYBIND11_MODULE (line 5) | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
FILE: stable-dreamfusion/guidance/clip_utils.py
class CLIP (line 9) | class CLIP(nn.Module):
method __init__ (line 10) | def __init__(self, device, **kwargs):
method get_text_embeds (line 21) | def get_text_embeds(self, prompt, **kwargs):
method get_img_embeds (line 29) | def get_img_embeds(self, image, **kwargs):
method train_step (line 37) | def train_step(self, clip_z, pred_rgb, grad_scale=10, **kwargs):
FILE: stable-dreamfusion/guidance/if_utils.py
class SpecifyGradient (line 15) | class SpecifyGradient(torch.autograd.Function):
method forward (line 18) | def forward(ctx, input_tensor, gt_grad):
method backward (line 25) | def backward(ctx, grad_scale):
function seed_everything (line 30) | def seed_everything(seed):
class IF (line 37) | class IF(nn.Module):
method __init__ (line 38) | def __init__(self, device, vram_O, t_range=[0.02, 0.98]):
method get_text_embeds (line 77) | def get_text_embeds(self, prompt):
method train_step (line 88) | def train_step(self, text_embeddings, pred_rgb, guidance_scale=100, gr...
method train_step_perpneg (line 125) | def train_step_perpneg(self, text_embeddings, weights, pred_rgb, guida...
method produce_imgs (line 167) | def produce_imgs(self, text_embeddings, height=64, width=64, num_infer...
method prompt_to_img (line 197) | def prompt_to_img(self, prompts, negative_prompts='', height=512, widt...
FILE: stable-dreamfusion/guidance/perpneg_utils.py
function get_perpendicular_component (line 4) | def get_perpendicular_component(x, y):
function batch_get_perpendicular_component (line 9) | def batch_get_perpendicular_component(x, y):
function weighted_perpendicular_aggregator (line 17) | def weighted_perpendicular_aggregator(delta_noise_preds, weights, batch_...
FILE: stable-dreamfusion/guidance/sd_utils.py
class SpecifyGradient (line 18) | class SpecifyGradient(torch.autograd.Function):
method forward (line 21) | def forward(ctx, input_tensor, gt_grad):
method backward (line 28) | def backward(ctx, grad_scale):
function seed_everything (line 33) | def seed_everything(seed):
class StableDiffusion (line 39) | class StableDiffusion(nn.Module):
method __init__ (line 40) | def __init__(self, device, fp16, vram_O, sd_version='2.1', hf_key=None...
method get_text_embeds (line 91) | def get_text_embeds(self, prompt):
method train_step (line 100) | def train_step(self, text_embeddings, pred_rgb, guidance_scale=100, as...
method train_step_perpneg (line 180) | def train_step_perpneg(self, text_embeddings, weights, pred_rgb, guida...
method produce_latents (line 265) | def produce_latents(self, text_embeddings, height=512, width=512, num_...
method decode_latents (line 287) | def decode_latents(self, latents):
method encode_imgs (line 296) | def encode_imgs(self, imgs):
method prompt_to_img (line 306) | def prompt_to_img(self, prompts, negative_prompts='', height=512, widt...
FILE: stable-dreamfusion/guidance/zero123_utils.py
class SpecifyGradient (line 20) | class SpecifyGradient(torch.autograd.Function):
method forward (line 23) | def forward(ctx, input_tensor, gt_grad):
method backward (line 30) | def backward(ctx, grad_scale):
function load_model_from_config (line 36) | def load_model_from_config(config, ckpt, device, vram_O=False, verbose=F...
class Zero123 (line 70) | class Zero123(nn.Module):
method __init__ (line 71) | def __init__(self, device, fp16,
method get_img_embeds (line 104) | def get_img_embeds(self, x):
method angle_between (line 111) | def angle_between(self, sph_v1, sph_v2):
method train_step (line 127) | def train_step(self, embeddings, pred_rgb, polar, azimuth, radius, gui...
method __call__ (line 249) | def __call__(self,
method decode_latents (line 286) | def decode_latents(self, latents):
method encode_imgs (line 294) | def encode_imgs(self, imgs):
FILE: stable-dreamfusion/ldm/extras.py
function all_logging_disabled (line 12) | def all_logging_disabled(highest_level=logging.CRITICAL):
function load_training_dir (line 37) | def load_training_dir(train_dir, device, epoch="last"):
function load_model_from_config (line 55) | def load_model_from_config(config, ckpt, device="cpu", verbose=False):
FILE: stable-dreamfusion/ldm/guidance.py
class GuideModel (line 10) | class GuideModel(torch.nn.Module, abc.ABC):
method __init__ (line 11) | def __init__(self) -> None:
method preprocess (line 15) | def preprocess(self, x_img):
method compute_loss (line 19) | def compute_loss(self, inp):
class Guider (line 23) | class Guider(torch.nn.Module):
method __init__ (line 24) | def __init__(self, sampler, guide_model, scale=1.0, verbose=False):
method get_scales (line 49) | def get_scales(self):
method modify_score (line 57) | def modify_score(self, model, e_t, x, t, c):
FILE: stable-dreamfusion/ldm/lr_scheduler.py
class LambdaWarmUpCosineScheduler (line 4) | class LambdaWarmUpCosineScheduler:
method __init__ (line 8) | def __init__(self, warm_up_steps, lr_min, lr_max, lr_start, max_decay_...
method schedule (line 17) | def schedule(self, n, **kwargs):
method __call__ (line 32) | def __call__(self, n, **kwargs):
class LambdaWarmUpCosineScheduler2 (line 36) | class LambdaWarmUpCosineScheduler2:
method __init__ (line 41) | def __init__(self, warm_up_steps, f_min, f_max, f_start, cycle_lengths...
method find_in_interval (line 52) | def find_in_interval(self, n):
method schedule (line 59) | def schedule(self, n, **kwargs):
method __call__ (line 77) | def __call__(self, n, **kwargs):
class LambdaLinearScheduler (line 81) | class LambdaLinearScheduler(LambdaWarmUpCosineScheduler2):
method schedule (line 83) | def schedule(self, n, **kwargs):
FILE: stable-dreamfusion/ldm/models/autoencoder.py
class VQModel (line 14) | class VQModel(pl.LightningModule):
method __init__ (line 15) | def __init__(self,
method ema_scope (line 64) | def ema_scope(self, context=None):
method init_from_ckpt (line 78) | def init_from_ckpt(self, path, ignore_keys=list()):
method on_train_batch_end (line 92) | def on_train_batch_end(self, *args, **kwargs):
method encode (line 96) | def encode(self, x):
method encode_to_prequant (line 102) | def encode_to_prequant(self, x):
method decode (line 107) | def decode(self, quant):
method decode_code (line 112) | def decode_code(self, code_b):
method forward (line 117) | def forward(self, input, return_pred_indices=False):
method get_input (line 124) | def get_input(self, batch, k):
method training_step (line 142) | def training_step(self, batch, batch_idx, optimizer_idx):
method validation_step (line 164) | def validation_step(self, batch, batch_idx):
method _validation_step (line 170) | def _validation_step(self, batch, batch_idx, suffix=""):
method configure_optimizers (line 197) | def configure_optimizers(self):
method get_last_layer (line 230) | def get_last_layer(self):
method log_images (line 233) | def log_images(self, batch, only_inputs=False, plot_ema=False, **kwargs):
method to_rgb (line 255) | def to_rgb(self, x):
class VQModelInterface (line 264) | class VQModelInterface(VQModel):
method __init__ (line 265) | def __init__(self, embed_dim, *args, **kwargs):
method encode (line 269) | def encode(self, x):
method decode (line 274) | def decode(self, h, force_not_quantize=False):
class AutoencoderKL (line 285) | class AutoencoderKL(pl.LightningModule):
method __init__ (line 286) | def __init__(self,
method init_from_ckpt (line 313) | def init_from_ckpt(self, path, ignore_keys=list()):
method encode (line 324) | def encode(self, x):
method decode (line 330) | def decode(self, z):
method forward (line 335) | def forward(self, input, sample_posterior=True):
method get_input (line 344) | def get_input(self, batch, k):
method training_step (line 351) | def training_step(self, batch, batch_idx, optimizer_idx):
method validation_step (line 372) | def validation_step(self, batch, batch_idx):
method configure_optimizers (line 386) | def configure_optimizers(self):
method get_last_layer (line 397) | def get_last_layer(self):
method log_images (line 401) | def log_images(self, batch, only_inputs=False, **kwargs):
method to_rgb (line 417) | def to_rgb(self, x):
class IdentityFirstStage (line 426) | class IdentityFirstStage(torch.nn.Module):
method __init__ (line 427) | def __init__(self, *args, vq_interface=False, **kwargs):
method encode (line 431) | def encode(self, x, *args, **kwargs):
method decode (line 434) | def decode(self, x, *args, **kwargs):
method quantize (line 437) | def quantize(self, x, *args, **kwargs):
method forward (line 442) | def forward(self, x, *args, **kwargs):
FILE: stable-dreamfusion/ldm/models/diffusion/classifier.py
function disabled_train (line 22) | def disabled_train(self, mode=True):
class NoisyLatentImageClassifier (line 28) | class NoisyLatentImageClassifier(pl.LightningModule):
method __init__ (line 30) | def __init__(self,
method init_from_ckpt (line 70) | def init_from_ckpt(self, path, ignore_keys=list(), only_model=False):
method load_diffusion (line 88) | def load_diffusion(self):
method load_classifier (line 95) | def load_classifier(self, ckpt_path, pool):
method get_x_noisy (line 110) | def get_x_noisy(self, x, t, noise=None):
method forward (line 120) | def forward(self, x_noisy, t, *args, **kwargs):
method get_input (line 124) | def get_input(self, batch, k):
method get_conditioning (line 133) | def get_conditioning(self, batch, k=None):
method compute_top_k (line 150) | def compute_top_k(self, logits, labels, k, reduction="mean"):
method on_train_epoch_start (line 157) | def on_train_epoch_start(self):
method write_logs (line 162) | def write_logs(self, loss, logits, targets):
method shared_step (line 179) | def shared_step(self, batch, t=None):
method training_step (line 198) | def training_step(self, batch, batch_idx):
method reset_noise_accs (line 202) | def reset_noise_accs(self):
method on_validation_start (line 206) | def on_validation_start(self):
method validation_step (line 210) | def validation_step(self, batch, batch_idx):
method configure_optimizers (line 220) | def configure_optimizers(self):
method log_images (line 238) | def log_images(self, batch, N=8, *args, **kwargs):
FILE: stable-dreamfusion/ldm/models/diffusion/ddim.py
class DDIMSampler (line 13) | class DDIMSampler(object):
method __init__ (line 14) | def __init__(self, model, schedule="linear", **kwargs):
method to (line 20) | def to(self, device):
method register_buffer (line 29) | def register_buffer(self, name, attr):
method make_schedule (line 35) | def make_schedule(self, ddim_num_steps, ddim_discretize="uniform", ddi...
method sample (line 67) | def sample(self,
method ddim_sampling (line 128) | def ddim_sampling(self, cond, shape,
method p_sample_ddim (line 186) | def p_sample_ddim(self, x, c, t, index, repeat_noise=False, use_origin...
method encode (line 248) | def encode(self, x0, c, t_enc, use_original_steps=False, return_interm...
method stochastic_encode (line 294) | def stochastic_encode(self, x0, t, use_original_steps=False, noise=None):
method decode (line 310) | def decode(self, x_latent, cond, t_start, unconditional_guidance_scale...
FILE: stable-dreamfusion/ldm/models/diffusion/ddpm.py
function disabled_train (line 37) | def disabled_train(self, mode=True):
function uniform_on_device (line 43) | def uniform_on_device(r1, r2, shape, device):
class DDPM (line 47) | class DDPM(pl.LightningModule):
method __init__ (line 49) | def __init__(self,
method register_schedule (line 126) | def register_schedule(self, given_betas=None, beta_schedule="linear", ...
method ema_scope (line 181) | def ema_scope(self, context=None):
method init_from_ckpt (line 196) | def init_from_ckpt(self, path, ignore_keys=list(), only_model=False):
method q_mean_variance (line 254) | def q_mean_variance(self, x_start, t):
method predict_start_from_noise (line 266) | def predict_start_from_noise(self, x_t, t, noise):
method q_posterior (line 272) | def q_posterior(self, x_start, x_t, t):
method p_mean_variance (line 281) | def p_mean_variance(self, x, t, clip_denoised: bool):
method p_sample (line 294) | def p_sample(self, x, t, clip_denoised=True, repeat_noise=False):
method p_sample_loop (line 303) | def p_sample_loop(self, shape, return_intermediates=False):
method sample (line 318) | def sample(self, batch_size=16, return_intermediates=False):
method q_sample (line 324) | def q_sample(self, x_start, t, noise=None):
method get_loss (line 329) | def get_loss(self, pred, target, mean=True):
method p_losses (line 344) | def p_losses(self, x_start, t, noise=None):
method forward (line 373) | def forward(self, x, *args, **kwargs):
method get_input (line 379) | def get_input(self, batch, k):
method shared_step (line 387) | def shared_step(self, batch):
method training_step (line 392) | def training_step(self, batch, batch_idx):
method validation_step (line 417) | def validation_step(self, batch, batch_idx):
method on_train_batch_end (line 425) | def on_train_batch_end(self, *args, **kwargs):
method _get_rows_from_list (line 429) | def _get_rows_from_list(self, samples):
method log_images (line 437) | def log_images(self, batch, N=8, n_row=2, sample=True, return_keys=Non...
method configure_optimizers (line 474) | def configure_optimizers(self):
class LatentDiffusion (line 483) | class LatentDiffusion(DDPM):
method __init__ (line 485) | def __init__(self,
method make_cond_schedule (line 539) | def make_cond_schedule(self, ):
method on_train_batch_start (line 546) | def on_train_batch_start(self, batch, batch_idx, dataloader_idx):
method register_schedule (line 561) | def register_schedule(self,
method instantiate_first_stage (line 570) | def instantiate_first_stage(self, config):
method instantiate_cond_stage (line 577) | def instantiate_cond_stage(self, config):
method _get_denoise_row_from_list (line 598) | def _get_denoise_row_from_list(self, samples, desc='', force_no_decode...
method get_first_stage_encoding (line 610) | def get_first_stage_encoding(self, encoder_posterior):
method get_learned_conditioning (line 619) | def get_learned_conditioning(self, c):
method meshgrid (line 632) | def meshgrid(self, h, w):
method delta_border (line 639) | def delta_border(self, h, w):
method get_weighting (line 653) | def get_weighting(self, h, w, Ly, Lx, device):
method get_fold_unfold (line 669) | def get_fold_unfold(self, x, kernel_size, stride, uf=1, df=1): # todo...
method get_input (line 723) | def get_input(self, batch, k, return_first_stage_outputs=False, force_...
method decode_first_stage (line 763) | def decode_first_stage(self, z, predict_cids=False, force_not_quantize...
method encode_first_stage (line 823) | def encode_first_stage(self, x):
method shared_step (line 862) | def shared_step(self, batch, **kwargs):
method forward (line 867) | def forward(self, x, c, *args, **kwargs):
method _rescale_annotations (line 878) | def _rescale_annotations(self, bboxes, crop_coordinates): # TODO: mov...
method apply_model (line 888) | def apply_model(self, x_noisy, t, cond, return_ids=False):
method _predict_eps_from_xstart (line 986) | def _predict_eps_from_xstart(self, x_t, t, pred_xstart):
method _prior_bpd (line 990) | def _prior_bpd(self, x_start):
method p_losses (line 1004) | def p_losses(self, x_start, cond, t, noise=None):
method p_mean_variance (line 1039) | def p_mean_variance(self, x, c, t, clip_denoised: bool, return_codeboo...
method p_sample (line 1071) | def p_sample(self, x, c, t, clip_denoised=False, repeat_noise=False,
method progressive_denoising (line 1102) | def progressive_denoising(self, cond, shape, verbose=True, callback=No...
method p_sample_loop (line 1158) | def p_sample_loop(self, cond, shape, return_intermediates=False,
method sample (line 1209) | def sample(self, cond, batch_size=16, return_intermediates=False, x_T=...
method sample_log (line 1227) | def sample_log(self, cond, batch_size, ddim, ddim_steps, **kwargs):
method get_unconditional_conditioning (line 1241) | def get_unconditional_conditioning(self, batch_size, null_label=None, ...
method log_images (line 1262) | def log_images(self, batch, N=8, n_row=4, sample=True, ddim_steps=200,...
method configure_optimizers (line 1387) | def configure_optimizers(self):
method to_rgb (line 1432) | def to_rgb(self, x):
class DiffusionWrapper (line 1441) | class DiffusionWrapper(pl.LightningModule):
method __init__ (line 1442) | def __init__(self, diff_model_config, conditioning_key):
method forward (line 1448) | def forward(self, x, t, c_concat: list = None, c_crossattn: list = Non...
class LatentUpscaleDiffusion (line 1477) | class LatentUpscaleDiffusion(LatentDiffusion):
method __init__ (line 1478) | def __init__(self, *args, low_scale_config, low_scale_key="LR", **kwar...
method instantiate_low_stage (line 1485) | def instantiate_low_stage(self, config):
method get_input (line 1493) | def get_input(self, batch, k, cond_key=None, bs=None, log_mode=False):
method log_images (line 1515) | def log_images(self, batch, N=8, n_row=4, sample=True, ddim_steps=200,...
class LatentInpaintDiffusion (line 1613) | class LatentInpaintDiffusion(LatentDiffusion):
method __init__ (line 1619) | def __init__(self,
method init_from_ckpt (line 1644) | def init_from_ckpt(self, path, ignore_keys=list(), only_model=False):
method get_input (line 1674) | def get_input(self, batch, k, cond_key=None, bs=None, return_first_sta...
method log_images (line 1700) | def log_images(self, batch, N=8, n_row=4, sample=True, ddim_steps=200,...
class Layout2ImgDiffusion (line 1783) | class Layout2ImgDiffusion(LatentDiffusion):
method __init__ (line 1785) | def __init__(self, cond_stage_key, *args, **kwargs):
method log_images (line 1789) | def log_images(self, batch, N=8, *args, **kwargs):
class SimpleUpscaleDiffusion (line 1807) | class SimpleUpscaleDiffusion(LatentDiffusion):
method __init__ (line 1808) | def __init__(self, *args, low_scale_key="LR", **kwargs):
method get_input (line 1815) | def get_input(self, batch, k, cond_key=None, bs=None, log_mode=False):
method log_images (line 1838) | def log_images(self, batch, N=8, n_row=4, sample=True, ddim_steps=200,...
class MultiCatFrameDiffusion (line 1899) | class MultiCatFrameDiffusion(LatentDiffusion):
method __init__ (line 1900) | def __init__(self, *args, low_scale_key="LR", **kwargs):
method get_input (line 1907) | def get_input(self, batch, k, cond_key=None, bs=None, log_mode=False):
method log_images (line 1935) | def log_images(self, batch, N=8, n_row=4, sample=True, ddim_steps=200,...
FILE: stable-dreamfusion/ldm/models/diffusion/plms.py
class PLMSSampler (line 12) | class PLMSSampler(object):
method __init__ (line 13) | def __init__(self, model, schedule="linear", **kwargs):
method register_buffer (line 19) | def register_buffer(self, name, attr):
method make_schedule (line 25) | def make_schedule(self, ddim_num_steps, ddim_discretize="uniform", ddi...
method sample (line 59) | def sample(self,
method plms_sampling (line 120) | def plms_sampling(self, cond, shape,
method p_sample_plms (line 180) | def p_sample_plms(self, x, c, t, index, repeat_noise=False, use_origin...
FILE: stable-dreamfusion/ldm/models/diffusion/sampling_util.py
function append_dims (line 5) | def append_dims(x, target_dims):
function renorm_thresholding (line 14) | def renorm_thresholding(x0, value):
function norm_thresholding (line 42) | def norm_thresholding(x0, value):
function spatial_norm_thresholding (line 47) | def spatial_norm_thresholding(x0, value):
FILE: stable-dreamfusion/ldm/modules/attention.py
function exists (line 11) | def exists(val):
function uniq (line 15) | def uniq(arr):
function default (line 19) | def default(val, d):
function max_neg_value (line 25) | def max_neg_value(t):
function init_ (line 29) | def init_(tensor):
class GEGLU (line 37) | class GEGLU(nn.Module):
method __init__ (line 38) | def __init__(self, dim_in, dim_out):
method forward (line 42) | def forward(self, x):
class FeedForward (line 47) | class FeedForward(nn.Module):
method __init__ (line 48) | def __init__(self, dim, dim_out=None, mult=4, glu=False, dropout=0.):
method forward (line 63) | def forward(self, x):
function zero_module (line 67) | def zero_module(module):
function Normalize (line 76) | def Normalize(in_channels):
class LinearAttention (line 80) | class LinearAttention(nn.Module):
method __init__ (line 81) | def __init__(self, dim, heads=4, dim_head=32):
method forward (line 88) | def forward(self, x):
class SpatialSelfAttention (line 99) | class SpatialSelfAttention(nn.Module):
method __init__ (line 100) | def __init__(self, in_channels):
method forward (line 126) | def forward(self, x):
class CrossAttention (line 152) | class CrossAttention(nn.Module):
method __init__ (line 153) | def __init__(self, query_dim, context_dim=None, heads=8, dim_head=64, ...
method forward (line 170) | def forward(self, x, context=None, mask=None):
class BasicTransformerBlock (line 196) | class BasicTransformerBlock(nn.Module):
method __init__ (line 197) | def __init__(self, dim, n_heads, d_head, dropout=0., context_dim=None,...
method forward (line 211) | def forward(self, x, context=None):
method _forward (line 214) | def _forward(self, x, context=None):
class SpatialTransformer (line 221) | class SpatialTransformer(nn.Module):
method __init__ (line 229) | def __init__(self, in_channels, n_heads, d_head,
method forward (line 255) | def forward(self, x, context=None):
FILE: stable-dreamfusion/ldm/modules/diffusionmodules/model.py
function get_timestep_embedding (line 12) | def get_timestep_embedding(timesteps, embedding_dim):
function nonlinearity (line 33) | def nonlinearity(x):
function Normalize (line 38) | def Normalize(in_channels, num_groups=32):
class Upsample (line 42) | class Upsample(nn.Module):
method __init__ (line 43) | def __init__(self, in_channels, with_conv):
method forward (line 53) | def forward(self, x):
class Downsample (line 60) | class Downsample(nn.Module):
method __init__ (line 61) | def __init__(self, in_channels, with_conv):
method forward (line 72) | def forward(self, x):
class ResnetBlock (line 82) | class ResnetBlock(nn.Module):
method __init__ (line 83) | def __init__(self, *, in_channels, out_channels=None, conv_shortcut=Fa...
method forward (line 121) | def forward(self, x, temb):
class LinAttnBlock (line 144) | class LinAttnBlock(LinearAttention):
method __init__ (line 146) | def __init__(self, in_channels):
class AttnBlock (line 150) | class AttnBlock(nn.Module):
method __init__ (line 151) | def __init__(self, in_channels):
method forward (line 178) | def forward(self, x):
function make_attn (line 205) | def make_attn(in_channels, attn_type="vanilla"):
class Model (line 216) | class Model(nn.Module):
method __init__ (line 217) | def __init__(self, *, ch, out_ch, ch_mult=(1,2,4,8), num_res_blocks,
method forward (line 316) | def forward(self, x, t=None, context=None):
method get_last_layer (line 364) | def get_last_layer(self):
class Encoder (line 368) | class Encoder(nn.Module):
method __init__ (line 369) | def __init__(self, *, ch, out_ch, ch_mult=(1,2,4,8), num_res_blocks,
method forward (line 434) | def forward(self, x):
class Decoder (line 462) | class Decoder(nn.Module):
method __init__ (line 463) | def __init__(self, *, ch, out_ch, ch_mult=(1,2,4,8), num_res_blocks,
method forward (line 535) | def forward(self, z):
class SimpleDecoder (line 571) | class SimpleDecoder(nn.Module):
method __init__ (line 572) | def __init__(self, in_channels, out_channels, *args, **kwargs):
method forward (line 594) | def forward(self, x):
class UpsampleDecoder (line 607) | class UpsampleDecoder(nn.Module):
method __init__ (line 608) | def __init__(self, in_channels, out_channels, ch, num_res_blocks, reso...
method forward (line 641) | def forward(self, x):
class LatentRescaler (line 655) | class LatentRescaler(nn.Module):
method __init__ (line 656) | def __init__(self, factor, in_channels, mid_channels, out_channels, de...
method forward (line 680) | def forward(self, x):
class MergedRescaleEncoder (line 692) | class MergedRescaleEncoder(nn.Module):
method __init__ (line 693) | def __init__(self, in_channels, ch, resolution, out_ch, num_res_blocks,
method forward (line 705) | def forward(self, x):
class MergedRescaleDecoder (line 711) | class MergedRescaleDecoder(nn.Module):
method __init__ (line 712) | def __init__(self, z_channels, out_ch, resolution, num_res_blocks, att...
method forward (line 722) | def forward(self, x):
class Upsampler (line 728) | class Upsampler(nn.Module):
method __init__ (line 729) | def __init__(self, in_size, out_size, in_channels, out_channels, ch_mu...
method forward (line 741) | def forward(self, x):
class Resize (line 747) | class Resize(nn.Module):
method __init__ (line 748) | def __init__(self, in_channels=None, learned=False, mode="bilinear"):
method forward (line 763) | def forward(self, x, scale_factor=1.0):
class FirstStagePostProcessor (line 770) | class FirstStagePostProcessor(nn.Module):
method __init__ (line 772) | def __init__(self, ch_mult:list, in_channels,
method instantiate_pretrained (line 807) | def instantiate_pretrained(self, config):
method encode_with_pretrained (line 816) | def encode_with_pretrained(self,x):
method forward (line 822) | def forward(self,x):
FILE: stable-dreamfusion/ldm/modules/diffusionmodules/openaimodel.py
function convert_module_to_f16 (line 25) | def convert_module_to_f16(x):
function convert_module_to_f32 (line 28) | def convert_module_to_f32(x):
class AttentionPool2d (line 33) | class AttentionPool2d(nn.Module):
method __init__ (line 38) | def __init__(
method forward (line 52) | def forward(self, x):
class TimestepBlock (line 63) | class TimestepBlock(nn.Module):
method forward (line 69) | def forward(self, x, emb):
class TimestepEmbedSequential (line 75) | class TimestepEmbedSequential(nn.Sequential, TimestepBlock):
method forward (line 81) | def forward(self, x, emb, context=None):
class Upsample (line 92) | class Upsample(nn.Module):
method __init__ (line 101) | def __init__(self, channels, use_conv, dims=2, out_channels=None, padd...
method forward (line 110) | def forward(self, x):
class TransposedUpsample (line 122) | class TransposedUpsample(nn.Module):
method __init__ (line 124) | def __init__(self, channels, out_channels=None, ks=5):
method forward (line 131) | def forward(self,x):
class Downsample (line 135) | class Downsample(nn.Module):
method __init__ (line 144) | def __init__(self, channels, use_conv, dims=2, out_channels=None,paddi...
method forward (line 159) | def forward(self, x):
class ResBlock (line 164) | class ResBlock(TimestepBlock):
method __init__ (line 180) | def __init__(
method forward (line 244) | def forward(self, x, emb):
method _forward (line 256) | def _forward(self, x, emb):
class AttentionBlock (line 279) | class AttentionBlock(nn.Module):
method __init__ (line 286) | def __init__(
method forward (line 315) | def forward(self, x):
method _forward (line 319) | def _forward(self, x):
function count_flops_attn (line 328) | def count_flops_attn(model, _x, y):
class QKVAttentionLegacy (line 348) | class QKVAttentionLegacy(nn.Module):
method __init__ (line 353) | def __init__(self, n_heads):
method forward (line 357) | def forward(self, qkv):
method count_flops (line 376) | def count_flops(model, _x, y):
class QKVAttention (line 380) | class QKVAttention(nn.Module):
method __init__ (line 385) | def __init__(self, n_heads):
method forward (line 389) | def forward(self, qkv):
method count_flops (line 410) | def count_flops(model, _x, y):
class UNetModel (line 414) | class UNetModel(nn.Module):
method __init__ (line 444) | def __init__(
method convert_to_fp16 (line 729) | def convert_to_fp16(self):
method convert_to_fp32 (line 737) | def convert_to_fp32(self):
method forward (line 745) | def forward(self, x, timesteps=None, context=None, y=None,**kwargs):
class EncoderUNetModel (line 780) | class EncoderUNetModel(nn.Module):
method __init__ (line 786) | def __init__(
method convert_to_fp16 (line 959) | def convert_to_fp16(self):
method convert_to_fp32 (line 966) | def convert_to_fp32(self):
method forward (line 973) | def forward(self, x, timesteps):
FILE: stable-dreamfusion/ldm/modules/diffusionmodules/util.py
function make_beta_schedule (line 21) | def make_beta_schedule(schedule, n_timestep, linear_start=1e-4, linear_e...
function make_ddim_timesteps (line 46) | def make_ddim_timesteps(ddim_discr_method, num_ddim_timesteps, num_ddpm_...
function make_ddim_sampling_parameters (line 63) | def make_ddim_sampling_parameters(alphacums, ddim_timesteps, eta, verbos...
function betas_for_alpha_bar (line 77) | def betas_for_alpha_bar(num_diffusion_timesteps, alpha_bar, max_beta=0.9...
function extract_into_tensor (line 96) | def extract_into_tensor(a, t, x_shape):
function checkpoint (line 102) | def checkpoint(func, inputs, params, flag):
class CheckpointFunction (line 119) | class CheckpointFunction(torch.autograd.Function):
method forward (line 121) | def forward(ctx, run_function, length, *args):
method backward (line 131) | def backward(ctx, *output_grads):
function timestep_embedding (line 151) | def timestep_embedding(timesteps, dim, max_period=10000, repeat_only=Fal...
function zero_module (line 174) | def zero_module(module):
function scale_module (line 183) | def scale_module(module, scale):
function mean_flat (line 192) | def mean_flat(tensor):
function normalization (line 199) | def normalization(channels):
class SiLU (line 209) | class SiLU(nn.Module):
method forward (line 210) | def forward(self, x):
class GroupNorm32 (line 214) | class GroupNorm32(nn.GroupNorm):
method forward (line 215) | def forward(self, x):
function conv_nd (line 218) | def conv_nd(dims, *args, **kwargs):
function linear (line 231) | def linear(*args, **kwargs):
function avg_pool_nd (line 238) | def avg_pool_nd(dims, *args, **kwargs):
class HybridConditioner (line 251) | class HybridConditioner(nn.Module):
method __init__ (line 253) | def __init__(self, c_concat_config, c_crossattn_config):
method forward (line 258) | def forward(self, c_concat, c_crossattn):
function noise_like (line 264) | def noise_like(shape, device, repeat=False):
FILE: stable-dreamfusion/ldm/modules/distributions/distributions.py
class AbstractDistribution (line 5) | class AbstractDistribution:
method sample (line 6) | def sample(self):
method mode (line 9) | def mode(self):
class DiracDistribution (line 13) | class DiracDistribution(AbstractDistribution):
method __init__ (line 14) | def __init__(self, value):
method sample (line 17) | def sample(self):
method mode (line 20) | def mode(self):
class DiagonalGaussianDistribution (line 24) | class DiagonalGaussianDistribution(object):
method __init__ (line 25) | def __init__(self, parameters, deterministic=False):
method sample (line 35) | def sample(self):
method kl (line 39) | def kl(self, other=None):
method nll (line 53) | def nll(self, sample, dims=[1,2,3]):
method mode (line 61) | def mode(self):
function normal_kl (line 65) | def normal_kl(mean1, logvar1, mean2, logvar2):
FILE: stable-dreamfusion/ldm/modules/ema.py
class LitEma (line 5) | class LitEma(nn.Module):
method __init__ (line 6) | def __init__(self, model, decay=0.9999, use_num_upates=True):
method forward (line 25) | def forward(self,model):
method copy_to (line 46) | def copy_to(self, model):
method store (line 55) | def store(self, parameters):
method restore (line 64) | def restore(self, parameters):
FILE: stable-dreamfusion/ldm/modules/encoders/modules.py
class AbstractEncoder (line 12) | class AbstractEncoder(nn.Module):
method __init__ (line 13) | def __init__(self):
method encode (line 16) | def encode(self, *args, **kwargs):
class IdentityEncoder (line 19) | class IdentityEncoder(AbstractEncoder):
method encode (line 21) | def encode(self, x):
class FaceClipEncoder (line 24) | class FaceClipEncoder(AbstractEncoder):
method __init__ (line 25) | def __init__(self, augment=True, retreival_key=None):
method forward (line 31) | def forward(self, img):
method encode (line 54) | def encode(self, img):
class FaceIdClipEncoder (line 61) | class FaceIdClipEncoder(AbstractEncoder):
method __init__ (line 62) | def __init__(self):
method forward (line 69) | def forward(self, img):
method encode (line 84) | def encode(self, img):
class ClassEmbedder (line 91) | class ClassEmbedder(nn.Module):
method __init__ (line 92) | def __init__(self, embed_dim, n_classes=1000, key='class'):
method forward (line 97) | def forward(self, batch, key=None):
class TransformerEmbedder (line 106) | class TransformerEmbedder(AbstractEncoder):
method __init__ (line 108) | def __init__(self, n_embed, n_layer, vocab_size, max_seq_len=77, devic...
method forward (line 114) | def forward(self, tokens):
method encode (line 119) | def encode(self, x):
class BERTTokenizer (line 123) | class BERTTokenizer(AbstractEncoder):
method __init__ (line 125) | def __init__(self, device="cuda", vq_interface=True, max_length=77):
method forward (line 133) | def forward(self, text):
method encode (line 140) | def encode(self, text):
method decode (line 146) | def decode(self, text):
class BERTEmbedder (line 150) | class BERTEmbedder(AbstractEncoder):
method __init__ (line 152) | def __init__(self, n_embed, n_layer, vocab_size=30522, max_seq_len=77,
method forward (line 163) | def forward(self, text):
method encode (line 171) | def encode(self, text):
function disabled_train (line 178) | def disabled_train(self, mode=True):
class FrozenT5Embedder (line 184) | class FrozenT5Embedder(AbstractEncoder):
method __init__ (line 186) | def __init__(self, version="google/t5-v1_1-large", device="cuda", max_...
method freeze (line 194) | def freeze(self):
method forward (line 200) | def forward(self, text):
method encode (line 209) | def encode(self, text):
class FrozenFaceEncoder (line 215) | class FrozenFaceEncoder(AbstractEncoder):
method __init__ (line 216) | def __init__(self, model_path, augment=False):
method forward (line 237) | def forward(self, img):
method encode (line 251) | def encode(self, img):
class FrozenCLIPEmbedder (line 254) | class FrozenCLIPEmbedder(AbstractEncoder):
method __init__ (line 256) | def __init__(self, version="openai/clip-vit-large-patch14", device="cu...
method freeze (line 264) | def freeze(self):
method forward (line 270) | def forward(self, text):
method encode (line 279) | def encode(self, text):
class ClipImageProjector (line 284) | class ClipImageProjector(AbstractEncoder):
method __init__ (line 288) | def __init__(self, version="openai/clip-vit-large-patch14", max_length...
method get_null_cond (line 301) | def get_null_cond(self, version, max_length):
method preprocess (line 307) | def preprocess(self, x):
method forward (line 317) | def forward(self, x):
method encode (line 327) | def encode(self, im):
class ProjectedFrozenCLIPEmbedder (line 330) | class ProjectedFrozenCLIPEmbedder(AbstractEncoder):
method __init__ (line 331) | def __init__(self, version="openai/clip-vit-large-patch14", device="cu...
method forward (line 336) | def forward(self, text):
method encode (line 340) | def encode(self, text):
class FrozenCLIPImageEmbedder (line 343) | class FrozenCLIPImageEmbedder(AbstractEncoder):
method __init__ (line 348) | def __init__(
method preprocess (line 363) | def preprocess(self, x):
method forward (line 373) | def forward(self, x):
method encode (line 381) | def encode(self, im):
class FrozenCLIPImageMutliEmbedder (line 387) | class FrozenCLIPImageMutliEmbedder(AbstractEncoder):
method __init__ (line 392) | def __init__(
method preprocess (line 409) | def preprocess(self, x):
method forward (line 423) | def forward(self, x):
method encode (line 440) | def encode(self, im):
class SpatialRescaler (line 443) | class SpatialRescaler(nn.Module):
method __init__ (line 444) | def __init__(self,
method forward (line 462) | def forward(self,x):
method encode (line 471) | def encode(self, x):
class LowScaleEncoder (line 479) | class LowScaleEncoder(nn.Module):
method __init__ (line 480) | def __init__(self, model_config, linear_start, linear_end, timesteps=1...
method register_schedule (line 490) | def register_schedule(self, beta_schedule="linear", timesteps=1000,
method q_sample (line 517) | def q_sample(self, x_start, t, noise=None):
method forward (line 522) | def forward(self, x):
method decode (line 532) | def decode(self, z):
FILE: stable-dreamfusion/ldm/modules/evaluate/adm_evaluator.py
function main (line 31) | def main():
class InvalidFIDException (line 84) | class InvalidFIDException(Exception):
class FIDStatistics (line 88) | class FIDStatistics:
method __init__ (line 89) | def __init__(self, mu: np.ndarray, sigma: np.ndarray):
method frechet_distance (line 93) | def frechet_distance(self, other, eps=1e-6):
class Evaluator (line 139) | class Evaluator:
method __init__ (line 140) | def __init__(
method warmup (line 156) | def warmup(self):
method read_activations (line 159) | def read_activations(self, npz_path: str) -> Tuple[np.ndarray, np.ndar...
method compute_activations (line 163) | def compute_activations(self, batches: Iterable[np.ndarray],silent=Fal...
method read_statistics (line 186) | def read_statistics(
method compute_statistics (line 196) | def compute_statistics(self, activations: np.ndarray) -> FIDStatistics:
method compute_inception_score (line 201) | def compute_inception_score(self, activations: np.ndarray, split_size:...
method compute_prec_recall (line 216) | def compute_prec_recall(
class ManifoldEstimator (line 227) | class ManifoldEstimator:
method __init__ (line 234) | def __init__(
method warmup (line 263) | def warmup(self):
method manifold_radii (line 270) | def manifold_radii(self, features: np.ndarray) -> np.ndarray:
method evaluate (line 305) | def evaluate(self, features: np.ndarray, radii: np.ndarray, eval_featu...
method evaluate_pr (line 347) | def evaluate_pr(
class DistanceBlock (line 384) | class DistanceBlock:
method __init__ (line 391) | def __init__(self, session):
method pairwise_distances (line 415) | def pairwise_distances(self, U, V):
method less_thans (line 424) | def less_thans(self, batch_1, radii_1, batch_2, radii_2):
function _batch_pairwise_distances (line 436) | def _batch_pairwise_distances(U, V):
class NpzArrayReader (line 455) | class NpzArrayReader(ABC):
method read_batch (line 457) | def read_batch(self, batch_size: int) -> Optional[np.ndarray]:
method remaining (line 461) | def remaining(self) -> int:
method read_batches (line 464) | def read_batches(self, batch_size: int) -> Iterable[np.ndarray]:
class BatchIterator (line 477) | class BatchIterator:
method __init__ (line 478) | def __init__(self, gen_fn, length):
method __len__ (line 482) | def __len__(self):
method __iter__ (line 485) | def __iter__(self):
class StreamingNpzArrayReader (line 489) | class StreamingNpzArrayReader(NpzArrayReader):
method __init__ (line 490) | def __init__(self, arr_f, shape, dtype):
method read_batch (line 496) | def read_batch(self, batch_size: int) -> Optional[np.ndarray]:
method remaining (line 511) | def remaining(self) -> int:
class MemoryNpzArrayReader (line 515) | class MemoryNpzArrayReader(NpzArrayReader):
method __init__ (line 516) | def __init__(self, arr):
method load (line 521) | def load(cls, path: str, arr_name: str):
method read_batch (line 526) | def read_batch(self, batch_size: int) -> Optional[np.ndarray]:
method remaining (line 534) | def remaining(self) -> int:
function open_npz_array (line 539) | def open_npz_array(path: str, arr_name: str) -> NpzArrayReader:
function _read_bytes (line 556) | def _read_bytes(fp, size, error_template="ran out of data"):
function _open_npy_file (line 586) | def _open_npy_file(path: str, arr_name: str):
function _download_inception_model (line 595) | def _download_inception_model():
function _create_feature_graph (line 608) | def _create_feature_graph(input_batch):
function _create_softmax_graph (line 625) | def _create_softmax_graph(input_batch):
function _update_shapes (line 639) | def _update_shapes(pool3):
function _numpy_partition (line 658) | def _numpy_partition(arr, kth, **kwargs):
FILE: stable-dreamfusion/ldm/modules/evaluate/evaluate_perceptualsim.py
function normalize_tensor (line 18) | def normalize_tensor(in_feat, eps=1e-10):
function cos_sim (line 25) | def cos_sim(in0, in1):
class squeezenet (line 40) | class squeezenet(torch.nn.Module):
method __init__ (line 41) | def __init__(self, requires_grad=False, pretrained=True):
method forward (line 72) | def forward(self, X):
class alexnet (line 98) | class alexnet(torch.nn.Module):
method __init__ (line 99) | def __init__(self, requires_grad=False, pretrained=True):
method forward (line 124) | def forward(self, X):
class vgg16 (line 143) | class vgg16(torch.nn.Module):
method __init__ (line 144) | def __init__(self, requires_grad=False, pretrained=True):
method forward (line 167) | def forward(self, X):
class resnet (line 187) | class resnet(torch.nn.Module):
method __init__ (line 188) | def __init__(self, requires_grad=False, pretrained=True, num=18):
method forward (line 211) | def forward(self, X):
class PNet (line 234) | class PNet(torch.nn.Module):
method __init__ (line 237) | def __init__(self, pnet_type="vgg", pnet_rand=False, use_gpu=True):
method forward (line 272) | def forward(self, in0, in1, retPerLayer=False):
function ssim_metric (line 299) | def ssim_metric(img1, img2, mask=None):
function psnr (line 304) | def psnr(img1, img2, mask=None,reshape=False):
function perceptual_sim (line 328) | def perceptual_sim(img1, img2, vgg16):
function load_img (line 334) | def load_img(img_name, size=None):
function compute_perceptual_similarity (line 353) | def compute_perceptual_similarity(folder, pred_img, tgt_img, take_every_...
function compute_perceptual_similarity_from_list (line 416) | def compute_perceptual_similarity_from_list(pred_imgs_list, tgt_imgs_list,
function compute_perceptual_similarity_from_list_topk (line 502) | def compute_perceptual_similarity_from_list_topk(pred_imgs_list, tgt_img...
FILE: stable-dreamfusion/ldm/modules/evaluate/frechet_video_distance.py
function preprocess (line 35) | def preprocess(videos, target_resolution):
function _is_in_graph (line 57) | def _is_in_graph(tensor_name):
function create_id3_embedding (line 66) | def create_id3_embedding(videos,warmup=False,batch_size=16):
function calculate_fvd (line 135) | def calculate_fvd(real_activations,
FILE: stable-dreamfusion/ldm/modules/evaluate/ssim.py
function gaussian (line 12) | def gaussian(window_size, sigma):
function create_window (line 22) | def create_window(window_size, channel):
function _ssim (line 31) | def _ssim(
class SSIM (line 79) | class SSIM(torch.nn.Module):
method __init__ (line 80) | def __init__(self, window_size=11, size_average=True):
method forward (line 87) | def forward(self, img1, img2, mask=None):
function ssim (line 116) | def ssim(img1, img2, window_size=11, mask=None, size_average=True):
FILE: stable-dreamfusion/ldm/modules/evaluate/torch_frechet_video_distance.py
function compute_frechet_distance (line 25) | def compute_frechet_distance(mu_sample,sigma_sample,mu_ref,sigma_ref) ->...
function compute_stats (line 34) | def compute_stats(feats: np.ndarray) -> Tuple[np.ndarray, np.ndarray]:
function open_url (line 41) | def open_url(url: str, num_attempts: int = 10, verbose: bool = True, ret...
function load_video (line 114) | def load_video(ip):
function get_data_from_str (line 119) | def get_data_from_str(input_str,nprc = None):
function get_stats (line 142) | def get_stats(stats):
function compute_fvd (line 155) | def compute_fvd(ref_input, sample_input, bs=32,
function compute_statistics (line 199) | def compute_statistics(videos_fake, videos_real, device: str='cuda', bs=...
FILE: stable-dreamfusion/ldm/modules/image_degradation/bsrgan.py
function modcrop_np (line 29) | def modcrop_np(img, sf):
function analytic_kernel (line 49) | def analytic_kernel(k):
function anisotropic_Gaussian (line 65) | def anisotropic_Gaussian(ksize=15, theta=np.pi, l1=6, l2=6):
function gm_blur_kernel (line 86) | def gm_blur_kernel(mean, cov, size=15):
function shift_pixel (line 99) | def shift_pixel(x, sf, upper_left=True):
function blur (line 128) | def blur(x, k):
function gen_kernel (line 145) | def gen_kernel(k_size=np.array([15, 15]), scale_factor=np.array([4, 4]),...
function fspecial_gaussian (line 187) | def fspecial_gaussian(hsize, sigma):
function fspecial_laplacian (line 201) | def fspecial_laplacian(alpha):
function fspecial (line 210) | def fspecial(filter_type, *args, **kwargs):
function bicubic_degradation (line 228) | def bicubic_degradation(x, sf=3):
function srmd_degradation (line 240) | def srmd_degradation(x, k, sf=3):
function dpsr_degradation (line 262) | def dpsr_degradation(x, k, sf=3):
function classical_degradation (line 284) | def classical_degradation(x, k, sf=3):
function add_sharpening (line 299) | def add_sharpening(img, weight=0.5, radius=50, threshold=10):
function add_blur (line 325) | def add_blur(img, sf=4):
function add_resize (line 339) | def add_resize(img, sf=4):
function add_Gaussian_noise (line 369) | def add_Gaussian_noise(img, noise_level1=2, noise_level2=25):
function add_speckle_noise (line 386) | def add_speckle_noise(img, noise_level1=2, noise_level2=25):
function add_Poisson_noise (line 404) | def add_Poisson_noise(img):
function add_JPEG_noise (line 418) | def add_JPEG_noise(img):
function random_crop (line 427) | def random_crop(lq, hq, sf=4, lq_patchsize=64):
function degradation_bsrgan (line 438) | def degradation_bsrgan(img, sf=4, lq_patchsize=72, isp_model=None):
function degradation_bsrgan_variant (line 530) | def degradation_bsrgan_variant(image, sf=4, isp_model=None):
function degradation_bsrgan_plus (line 617) | def degradation_bsrgan_plus(img, sf=4, shuffle_prob=0.5, use_sharp=True,...
FILE: stable-dreamfusion/ldm/modules/image_degradation/bsrgan_light.py
function modcrop_np (line 29) | def modcrop_np(img, sf):
function analytic_kernel (line 49) | def analytic_kernel(k):
function anisotropic_Gaussian (line 65) | def anisotropic_Gaussian(ksize=15, theta=np.pi, l1=6, l2=6):
function gm_blur_kernel (line 86) | def gm_blur_kernel(mean, cov, size=15):
function shift_pixel (line 99) | def shift_pixel(x, sf, upper_left=True):
function blur (line 128) | def blur(x, k):
function gen_kernel (line 145) | def gen_kernel(k_size=np.array([15, 15]), scale_factor=np.array([4, 4]),...
function fspecial_gaussian (line 187) | def fspecial_gaussian(hsize, sigma):
function fspecial_laplacian (line 201) | def fspecial_laplacian(alpha):
function fspecial (line 210) | def fspecial(filter_type, *args, **kwargs):
function bicubic_degradation (line 228) | def bicubic_degradation(x, sf=3):
function srmd_degradation (line 240) | def srmd_degradation(x, k, sf=3):
function dpsr_degradation (line 262) | def dpsr_degradation(x, k, sf=3):
function classical_degradation (line 284) | def classical_degradation(x, k, sf=3):
function add_sharpening (line 299) | def add_sharpening(img, weight=0.5, radius=50, threshold=10):
function add_blur (line 325) | def add_blur(img, sf=4):
function add_resize (line 343) | def add_resize(img, sf=4):
function add_Gaussian_noise (line 373) | def add_Gaussian_noise(img, noise_level1=2, noise_level2=25):
function add_speckle_noise (line 390) | def add_speckle_noise(img, noise_level1=2, noise_level2=25):
function add_Poisson_noise (line 408) | def add_Poisson_noise(img):
function add_JPEG_noise (line 422) | def add_JPEG_noise(img):
function random_crop (line 431) | def random_crop(lq, hq, sf=4, lq_patchsize=64):
function degradation_bsrgan (line 442) | def degradation_bsrgan(img, sf=4, lq_patchsize=72, isp_model=None):
function degradation_bsrgan_variant (line 534) | def degradation_bsrgan_variant(image, sf=4, isp_model=None):
FILE: stable-dreamfusion/ldm/modules/image_degradation/utils_image.py
function is_image_file (line 29) | def is_image_file(filename):
function get_timestamp (line 33) | def get_timestamp():
function imshow (line 37) | def imshow(x, title=None, cbar=False, figsize=None):
function surf (line 47) | def surf(Z, cmap='rainbow', figsize=None):
function get_image_paths (line 67) | def get_image_paths(dataroot):
function _get_paths_from_images (line 74) | def _get_paths_from_images(path):
function patches_from_image (line 93) | def patches_from_image(img, p_size=512, p_overlap=64, p_max=800):
function imssave (line 112) | def imssave(imgs, img_path):
function split_imageset (line 125) | def split_imageset(original_dataroot, taget_dataroot, n_channels=3, p_si...
function mkdir (line 153) | def mkdir(path):
function mkdirs (line 158) | def mkdirs(paths):
function mkdir_and_rename (line 166) | def mkdir_and_rename(path):
function imread_uint (line 185) | def imread_uint(path, n_channels=3):
function imsave (line 203) | def imsave(img, img_path):
function imwrite (line 209) | def imwrite(img, img_path):
function read_img (line 220) | def read_img(path):
function uint2single (line 249) | def uint2single(img):
function single2uint (line 254) | def single2uint(img):
function uint162single (line 259) | def uint162single(img):
function single2uint16 (line 264) | def single2uint16(img):
function uint2tensor4 (line 275) | def uint2tensor4(img):
function uint2tensor3 (line 282) | def uint2tensor3(img):
function tensor2uint (line 289) | def tensor2uint(img):
function single2tensor3 (line 302) | def single2tensor3(img):
function single2tensor4 (line 307) | def single2tensor4(img):
function tensor2single (line 312) | def tensor2single(img):
function tensor2single3 (line 320) | def tensor2single3(img):
function single2tensor5 (line 329) | def single2tensor5(img):
function single32tensor5 (line 333) | def single32tensor5(img):
function single42tensor4 (line 337) | def single42tensor4(img):
function tensor2img (line 342) | def tensor2img(tensor, out_type=np.uint8, min_max=(0, 1)):
function augment_img (line 380) | def augment_img(img, mode=0):
function augment_img_tensor4 (line 401) | def augment_img_tensor4(img, mode=0):
function augment_img_tensor (line 422) | def augment_img_tensor(img, mode=0):
function augment_img_np3 (line 441) | def augment_img_np3(img, mode=0):
function augment_imgs (line 469) | def augment_imgs(img_list, hflip=True, rot=True):
function modcrop (line 494) | def modcrop(img_in, scale):
function shave (line 510) | def shave(img_in, border=0):
function rgb2ycbcr (line 529) | def rgb2ycbcr(img, only_y=True):
function ycbcr2rgb (line 553) | def ycbcr2rgb(img):
function bgr2ycbcr (line 573) | def bgr2ycbcr(img, only_y=True):
function channel_convert (line 597) | def channel_convert(in_c, tar_type, img_list):
function calculate_psnr (line 621) | def calculate_psnr(img1, img2, border=0):
function calculate_ssim (line 642) | def calculate_ssim(img1, img2, border=0):
function ssim (line 669) | def ssim(img1, img2):
function cubic (line 700) | def cubic(x):
function calculate_weights_indices (line 708) | def calculate_weights_indices(in_length, out_length, scale, kernel, kern...
function imresize (line 766) | def imresize(img, scale, antialiasing=True):
function imresize_np (line 839) | def imresize_np(img, scale, antialiasing=True):
FILE: stable-dreamfusion/ldm/modules/losses/contperceptual.py
class LPIPSWithDiscriminator (line 7) | class LPIPSWithDiscriminator(nn.Module):
method __init__ (line 8) | def __init__(self, disc_start, logvar_init=0.0, kl_weight=1.0, pixello...
method calculate_adaptive_weight (line 32) | def calculate_adaptive_weight(self, nll_loss, g_loss, last_layer=None):
method forward (line 45) | def forward(self, inputs, reconstructions, posteriors, optimizer_idx,
FILE: stable-dreamfusion/ldm/modules/losses/vqperceptual.py
function hinge_d_loss_with_exemplar_weights (line 11) | def hinge_d_loss_with_exemplar_weights(logits_real, logits_fake, weights):
function adopt_weight (line 20) | def adopt_weight(weight, global_step, threshold=0, value=0.):
function measure_perplexity (line 26) | def measure_perplexity(predicted_indices, n_embed):
function l1 (line 35) | def l1(x, y):
function l2 (line 39) | def l2(x, y):
class VQLPIPSWithDiscriminator (line 43) | class VQLPIPSWithDiscriminator(nn.Module):
method __init__ (line 44) | def __init__(self, disc_start, codebook_weight=1.0, pixelloss_weight=1.0,
method calculate_adaptive_weight (line 85) | def calculate_adaptive_weight(self, nll_loss, g_loss, last_layer=None):
method forward (line 98) | def forward(self, codebook_loss, inputs, reconstructions, optimizer_idx,
FILE: stable-dreamfusion/ldm/modules/x_transformer.py
class AbsolutePositionalEmbedding (line 25) | class AbsolutePositionalEmbedding(nn.Module):
method __init__ (line 26) | def __init__(self, dim, max_seq_len):
method init_ (line 31) | def init_(self):
method forward (line 34) | def forward(self, x):
class FixedPositionalEmbedding (line 39) | class FixedPositionalEmbedding(nn.Module):
method __init__ (line 40) | def __init__(self, dim):
method forward (line 45) | def forward(self, x, seq_dim=1, offset=0):
function exists (line 54) | def exists(val):
function default (line 58) | def default(val, d):
function always (line 64) | def always(val):
function not_equals (line 70) | def not_equals(val):
function equals (line 76) | def equals(val):
function max_neg_value (line 82) | def max_neg_value(tensor):
function pick_and_pop (line 88) | def pick_and_pop(keys, d):
function group_dict_by_key (line 93) | def group_dict_by_key(cond, d):
function string_begins_with (line 102) | def string_begins_with(prefix, str):
function group_by_key_prefix (line 106) | def group_by_key_prefix(prefix, d):
function groupby_prefix_and_trim (line 110) | def groupby_prefix_and_trim(prefix, d):
class Scale (line 117) | class Scale(nn.Module):
method __init__ (line 118) | def __init__(self, value, fn):
method forward (line 123) | def forward(self, x, **kwargs):
class Rezero (line 128) | class Rezero(nn.Module):
method __init__ (line 129) | def __init__(self, fn):
method forward (line 134) | def forward(self, x, **kwargs):
class ScaleNorm (line 139) | class ScaleNorm(nn.Module):
method __init__ (line 140) | def __init__(self, dim, eps=1e-5):
method forward (line 146) | def forward(self, x):
class RMSNorm (line 151) | class RMSNorm(nn.Module):
method __init__ (line 152) | def __init__(self, dim, eps=1e-8):
method forward (line 158) | def forward(self, x):
class Residual (line 163) | class Residual(nn.Module):
method forward (line 164) | def forward(self, x, residual):
class GRUGating (line 168) | class GRUGating(nn.Module):
method __init__ (line 169) | def __init__(self, dim):
method forward (line 173) | def forward(self, x, residual):
class GEGLU (line 184) | class GEGLU(nn.Module):
method __init__ (line 185) | def __init__(self, dim_in, dim_out):
method forward (line 189) | def forward(self, x):
class FeedForward (line 194) | class FeedForward(nn.Module):
method __init__ (line 195) | def __init__(self, dim, dim_out=None, mult=4, glu=False, dropout=0.):
method forward (line 210) | def forward(self, x):
class Attention (line 215) | class Attention(nn.Module):
method __init__ (line 216) | def __init__(
method forward (line 268) | def forward(
class AttentionLayers (line 370) | class AttentionLayers(nn.Module):
method __init__ (line 371) | def __init__(
method forward (line 481) | def forward(
class Encoder (line 541) | class Encoder(AttentionLayers):
method __init__ (line 542) | def __init__(self, **kwargs):
class TransformerWrapper (line 548) | class TransformerWrapper(nn.Module):
method __init__ (line 549) | def __init__(
method init_ (line 595) | def init_(self):
method forward (line 598) | def forward(
FILE: stable-dreamfusion/ldm/thirdp/psp/helpers.py
class Flatten (line 12) | class Flatten(Module):
method forward (line 13) | def forward(self, input):
function l2_norm (line 17) | def l2_norm(input, axis=1):
class Bottleneck (line 23) | class Bottleneck(namedtuple('Block', ['in_channel', 'depth', 'stride'])):
function get_block (line 27) | def get_block(in_channel, depth, num_units, stride=2):
function get_blocks (line 31) | def get_blocks(num_layers):
class SEModule (line 58) | class SEModule(Module):
method __init__ (line 59) | def __init__(self, channels, reduction):
method forward (line 67) | def forward(self, x):
class bottleneck_IR (line 77) | class bottleneck_IR(Module):
method __init__ (line 78) | def __init__(self, in_channel, depth, stride):
method forward (line 93) | def forward(self, x):
class bottleneck_IR_SE (line 99) | class bottleneck_IR_SE(Module):
method __init__ (line 100) | def __init__(self, in_channel, depth, stride):
method forward (line 118) | def forward(self, x):
FILE: stable-dreamfusion/ldm/thirdp/psp/id_loss.py
class IDFeatures (line 7) | class IDFeatures(nn.Module):
method __init__ (line 8) | def __init__(self, model_path):
method forward (line 16) | def forward(self, x, crop=False):
FILE: stable-dreamfusion/ldm/thirdp/psp/model_irse.py
class Backbone (line 11) | class Backbone(Module):
method __init__ (line 12) | def __init__(self, input_size, num_layers, mode='ir', drop_ratio=0.4, ...
method forward (line 46) | def forward(self, x):
function IR_50 (line 53) | def IR_50(input_size):
function IR_101 (line 59) | def IR_101(input_size):
function IR_152 (line 65) | def IR_152(input_size):
function IR_SE_50 (line 71) | def IR_SE_50(input_size):
function IR_SE_101 (line 77) | def IR_SE_101(input_size):
function IR_SE_152 (line 83) | def IR_SE_152(input_size):
FILE: stable-dreamfusion/ldm/util.py
function pil_rectangle_crop (line 21) | def pil_rectangle_crop(im):
function log_txt_as_img (line 41) | def log_txt_as_img(wh, xc, size=10):
function ismap (line 65) | def ismap(x):
function isimage (line 71) | def isimage(x):
function exists (line 77) | def exists(x):
function default (line 81) | def default(val, d):
function mean_flat (line 87) | def mean_flat(tensor):
function count_params (line 95) | def count_params(model, verbose=False):
function instantiate_from_config (line 102) | def instantiate_from_config(config):
function get_obj_from_str (line 112) | def get_obj_from_str(string, reload=False):
class AdamWwithEMAandWings (line 120) | class AdamWwithEMAandWings(optim.Optimizer):
method __init__ (line 122) | def __init__(self, params, lr=1.e-3, betas=(0.9, 0.999), eps=1.e-8, #...
method __setstate__ (line 143) | def __setstate__(self, state):
method step (line 149) | def step(self, closure=None):
FILE: stable-dreamfusion/main.py
class LoadFromFile (line 13) | class LoadFromFile (argparse.Action):
method __call__ (line 14) | def __call__ (self, parser, namespace, values, option_string = None):
FILE: stable-dreamfusion/meshutils.py
function poisson_mesh_reconstruction (line 4) | def poisson_mesh_reconstruction(points, normals=None):
function decimate_mesh (line 39) | def decimate_mesh(verts, faces, target, backend='pymeshlab', remesh=Fals...
function clean_mesh (line 75) | def clean_mesh(verts, faces, v_pct=1, min_f=8, min_d=5, repair=True, rem...
FILE: stable-dreamfusion/nerf/gui.py
class OrbitCamera (line 10) | class OrbitCamera:
method __init__ (line 11) | def __init__(self, W, H, r=2, fovy=60):
method pose (line 24) | def pose(self):
method intrinsics (line 38) | def intrinsics(self):
method mvp (line 43) | def mvp(self):
method orbit (line 54) | def orbit(self, dx, dy):
method scale (line 61) | def scale(self, delta):
method pan (line 64) | def pan(self, dx, dy, dz=0):
class NeRFGUI (line 69) | class NeRFGUI:
method __init__ (line 70) | def __init__(self, opt, trainer, loader=None, debug=True):
method __del__ (line 99) | def __del__(self):
method train_step (line 103) | def train_step(self):
method prepare_buffer (line 128) | def prepare_buffer(self, outputs):
method test_step (line 137) | def test_step(self):
method register_dpg (line 172) | def register_dpg(self):
method render (line 478) | def render(self):
FILE: stable-dreamfusion/nerf/network.py
class ResBlock (line 14) | class ResBlock(nn.Module):
method __init__ (line 15) | def __init__(self, dim_in, dim_out, bias=True):
method forward (line 29) | def forward(self, x):
class BasicBlock (line 44) | class BasicBlock(nn.Module):
method __init__ (line 45) | def __init__(self, dim_in, dim_out, bias=True):
method forward (line 53) | def forward(self, x):
class MLP (line 61) | class MLP(nn.Module):
method __init__ (line 62) | def __init__(self, dim_in, dim_out, dim_hidden, num_layers, bias=True,...
method forward (line 81) | def forward(self, x):
class NeRFNetwork (line 89) | class NeRFNetwork(NeRFRenderer):
method __init__ (line 90) | def __init__(self,
method common_forward (line 118) | def common_forward(self, x):
method finite_difference_normal (line 132) | def finite_difference_normal(self, x, epsilon=1e-2):
method normal (line 149) | def normal(self, x):
method forward (line 164) | def forward(self, x, d, l=None, ratio=1, shading='albedo'):
method density (line 203) | def density(self, x):
method background (line 214) | def background(self, d):
method get_params (line 226) | def get_params(self, lr):
FILE: stable-dreamfusion/nerf/network_grid.py
class MLP (line 13) | class MLP(nn.Module):
method __init__ (line 14) | def __init__(self, dim_in, dim_out, dim_hidden, num_layers, bias=True):
method forward (line 27) | def forward(self, x):
class NeRFNetwork (line 35) | class NeRFNetwork(NeRFRenderer):
method __init__ (line 36) | def __init__(self,
method common_forward (line 68) | def common_forward(self, x):
method finite_difference_normal (line 81) | def finite_difference_normal(self, x, epsilon=1e-2):
method normal (line 98) | def normal(self, x):
method forward (line 104) | def forward(self, x, d, l=None, ratio=1, shading='albedo'):
method density (line 133) | def density(self, x):
method background (line 144) | def background(self, d):
method get_params (line 156) | def get_params(self, lr):
FILE: stable-dreamfusion/nerf/network_grid_taichi.py
class MLP (line 13) | class MLP(nn.Module):
method __init__ (line 14) | def __init__(self, dim_in, dim_out, dim_hidden, num_layers, bias=True):
method forward (line 27) | def forward(self, x):
class NeRFNetwork (line 35) | class NeRFNetwork(NeRFRenderer):
method __init__ (line 36) | def __init__(self,
method common_forward (line 67) | def common_forward(self, x):
method finite_difference_normal (line 80) | def finite_difference_normal(self, x, epsilon=1e-2):
method normal (line 97) | def normal(self, x):
method forward (line 103) | def forward(self, x, d, l=None, ratio=1, shading='albedo'):
method density (line 131) | def density(self, x):
method background (line 142) | def background(self, d):
method get_params (line 154) | def get_params(self, lr):
FILE: stable-dreamfusion/nerf/network_grid_tcnn.py
class MLP (line 15) | class MLP(nn.Module):
method __init__ (line 16) | def __init__(self, dim_in, dim_out, dim_hidden, num_layers, bias=True):
method forward (line 29) | def forward(self, x):
class NeRFNetwork (line 37) | class NeRFNetwork(NeRFRenderer):
method __init__ (line 38) | def __init__(self,
method common_forward (line 82) | def common_forward(self, x):
method normal (line 93) | def normal(self, x):
method forward (line 108) | def forward(self, x, d, l=None, ratio=1, shading='albedo'):
method density (line 141) | def density(self, x):
method background (line 152) | def background(self, d):
method get_params (line 164) | def get_params(self, lr):
FILE: stable-dreamfusion/nerf/provider.py
function visualize_poses (line 27) | def visualize_poses(poses, dirs, size=0.1):
function get_view_direction (line 52) | def get_view_direction(thetas, phis, overhead, front):
function rand_poses (line 73) | def rand_poses(size, device, opt, radius_range=[1, 1.5], theta_range=[0,...
function circle_poses (line 152) | def circle_poses(device, radius=torch.tensor([3.2]), theta=torch.tensor(...
class NeRFDataset (line 183) | class NeRFDataset:
method __init__ (line 184) | def __init__(self, opt, device, type='train', H=256, W=256, size=100):
method get_default_view_data (line 207) | def get_default_view_data(self):
method collate (line 248) | def collate(self, index):
method dataloader (line 316) | def dataloader(self, batch_size=None):
FILE: stable-dreamfusion/nerf/renderer.py
function sample_pdf (line 19) | def sample_pdf(bins, weights, n_samples, det=False):
function near_far_from_bound (line 56) | def near_far_from_bound(rays_o, rays_d, bound, type='cube', min_near=0.05):
function plot_pointcloud (line 82) | def plot_pointcloud(pc, color=None):
class DMTet (line 94) | class DMTet():
method __init__ (line 95) | def __init__(self, device):
method sort_edges (line 118) | def sort_edges(self, edges_ex2):
method __call__ (line 128) | def __call__(self, pos_nx3, sdf_n, tet_fx4):
function compute_edge_to_face_mapping (line 176) | def compute_edge_to_face_mapping(attr_idx):
function normal_consistency (line 209) | def normal_consistency(face_normals, t_pos_idx):
function laplacian_uniform (line 224) | def laplacian_uniform(verts, faces):
function laplacian_smooth_loss (line 248) | def laplacian_smooth_loss(verts, faces):
class NeRFRenderer (line 257) | class NeRFRenderer(nn.Module):
method __init__ (line 258) | def __init__(self, opt):
method density_blob (line 339) | def density_blob(self, x):
method forward (line 351) | def forward(self, x, d):
method density (line 354) | def density(self, x):
method reset_extra_state (line 357) | def reset_extra_state(self):
method export_mesh (line 366) | def export_mesh(self, path, resolution=None, decimate_target=-1, S=128):
method run (line 560) | def run(self, rays_o, rays_d, light_d=None, ambient_ratio=1.0, shading...
method run_cuda (line 710) | def run_cuda(self, rays_o, rays_d, light_d=None, ambient_ratio=1.0, sh...
method init_tet (line 818) | def init_tet(self, mesh=None):
method run_dmtet (line 862) | def run_dmtet(self, rays_o, rays_d, mvp, h, w, light_d=None, ambient_r...
method run_taichi (line 966) | def run_taichi(self, rays_o, rays_d, light_d=None, ambient_ratio=1.0, ...
method update_extra_state (line 1103) | def update_extra_state(self, decay=0.95, S=128):
method render (line 1154) | def render(self, rays_o, rays_d, mvp, h, w, staged=False, max_ray_batc...
FILE: stable-dreamfusion/nerf/utils.py
function adjust_text_embeddings (line 34) | def adjust_text_embeddings(embeddings, azimuth, opt):
function get_pos_neg_text_embeddings (line 60) | def get_pos_neg_text_embeddings(embeddings, azimuth_val, opt):
function custom_meshgrid (line 102) | def custom_meshgrid(*args):
function safe_normalize (line 109) | def safe_normalize(x, eps=1e-20):
function get_rays (line 113) | def get_rays(poses, intrinsics, H, W, N=-1, error_map=None):
function seed_everything (line 179) | def seed_everything(seed):
function linear_to_srgb (line 190) | def linear_to_srgb(x):
function srgb_to_linear (line 195) | def srgb_to_linear(x):
class Trainer (line 199) | class Trainer(object):
method __init__ (line 200) | def __init__(self,
method prepare_embeddings (line 353) | def prepare_embeddings(self):
method __del__ (line 423) | def __del__(self):
method log (line 428) | def log(self, *args, **kwargs):
method train_step (line 439) | def train_step(self, data, save_guidance_path:Path=None):
method post_train_step (line 725) | def post_train_step(self):
method eval_step (line 743) | def eval_step(self, data):
method test_step (line 765) | def test_step(self, data, bg_color=None, perturb=False):
method save_mesh (line 787) | def save_mesh(self, loader=None, save_path=None):
method train (line 802) | def train(self, train_loader, valid_loader, test_loader, max_epochs):
method evaluate (line 833) | def evaluate(self, loader, name=None):
method test (line 838) | def test(self, loader, save_path=None, name=None, write_video=True):
method train_gui (line 890) | def train_gui(self, train_loader, step=16):
method test_gui (line 949) | def test_gui(self, pose, intrinsics, mvp, W, H, bg_color=None, spp=1, ...
method train_one_epoch (line 1008) | def train_one_epoch(self, loader, max_epochs):
method evaluate_one_epoch (line 1115) | def evaluate_one_epoch(self, loader, name=None):
method save_checkpoint (line 1206) | def save_checkpoint(self, name=None, full=False, best=False):
method load_checkpoint (line 1266) | def load_checkpoint(self, checkpoint=None, model_only=False):
function get_CPU_mem (line 1337) | def get_CPU_mem():
function get_GPU_mem (line 1341) | def get_GPU_mem():
FILE: stable-dreamfusion/optimizer.py
class Adan (line 23) | class Adan(Optimizer):
method __init__ (line 47) | def __init__(self,
method __setstate__ (line 80) | def __setstate__(self, state):
method restart_opt (line 86) | def restart_opt(self):
method step (line 102) | def step(self, closure=None):
function _single_tensor_adan (line 201) | def _single_tensor_adan(
function _multi_tensor_adan (line 259) | def _multi_tensor_adan(
FILE: stable-dreamfusion/preprocess_image.py
class BackgroundRemoval (line 14) | class BackgroundRemoval():
method __init__ (line 15) | def __init__(self, device='cuda'):
method __call__ (line 32) | def __call__(self, image):
class BLIP2 (line 41) | class BLIP2():
method __init__ (line 42) | def __init__(self, device='cuda'):
method __call__ (line 49) | def __call__(self, image):
class DPT (line 59) | class DPT():
method __init__ (line 60) | def __init__(self, task='depth', device='cuda'):
method __call__ (line 97) | def __call__(self, image):
FILE: stable-dreamfusion/raymarching/backend.py
function find_cl_path (line 17) | def find_cl_path():
FILE: stable-dreamfusion/raymarching/raymarching.py
function get_backend (line 14) | def get_backend():
class _near_far_from_aabb (line 31) | class _near_far_from_aabb(Function):
method forward (line 34) | def forward(ctx, rays_o, rays_d, aabb, min_near=0.2):
class _sph_from_ray (line 64) | class _sph_from_ray(Function):
method forward (line 67) | def forward(ctx, rays_o, rays_d, radius):
class _morton3D (line 95) | class _morton3D(Function):
method forward (line 97) | def forward(ctx, coords):
class _morton3D_invert (line 118) | class _morton3D_invert(Function):
method forward (line 120) | def forward(ctx, indices):
class _packbits (line 141) | class _packbits(Function):
method forward (line 144) | def forward(ctx, grid, thresh, bitfield=None):
class _flatten_rays (line 170) | class _flatten_rays(Function):
method forward (line 172) | def forward(ctx, rays, M):
class _march_rays_train (line 197) | class _march_rays_train(Function):
method forward (line 200) | def forward(ctx, rays_o, rays_d, bound, density_bitfield, C, H, nears,...
class _composite_rays_train (line 261) | class _composite_rays_train(Function):
method forward (line 264) | def forward(ctx, sigmas, rgbs, ts, rays, T_thresh=1e-4, binarize=False):
method backward (line 299) | def backward(ctx, grad_weights, grad_weights_sum, grad_depth, grad_ima...
class _march_rays (line 323) | class _march_rays(Function):
method forward (line 326) | def forward(ctx, n_alive, n_step, rays_alive, rays_t, rays_o, rays_d, ...
class _composite_rays (line 374) | class _composite_rays(Function):
method forward (line 377) | def forward(ctx, n_alive, n_step, rays_alive, rays_t, sigmas, rgbs, ts...
FILE: stable-dreamfusion/raymarching/setup.py
function find_cl_path (line 18) | def find_cl_path():
FILE: stable-dreamfusion/raymarching/src/bindings.cpp
function PYBIND11_MODULE (line 5) | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
FILE: stable-dreamfusion/shencoder/backend.py
function find_cl_path (line 17) | def find_cl_path():
FILE: stable-dreamfusion/shencoder/setup.py
function find_cl_path (line 18) | def find_cl_path():
FILE: stable-dreamfusion/shencoder/sphere_harmonics.py
class _sh_encoder (line 14) | class _sh_encoder(Function):
method forward (line 17) | def forward(ctx, inputs, degree, calc_grad_inputs=False):
method backward (line 42) | def backward(ctx, grad):
class SHEncoder (line 61) | class SHEncoder(nn.Module):
method __init__ (line 62) | def __init__(self, input_dim=3, degree=4):
method __repr__ (line 72) | def __repr__(self):
method forward (line 75) | def forward(self, inputs, size=1):
FILE: stable-dreamfusion/shencoder/src/bindings.cpp
function PYBIND11_MODULE (line 5) | PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
FILE: stable-dreamfusion/taichi_modules/hash_encoder.py
function random_initialize (line 15) | def random_initialize(data: ti.types.ndarray()):
function ti_copy (line 21) | def ti_copy(data1: ti.template(), data2: ti.template()):
function ti_copy_array (line 27) | def ti_copy_array(data1: ti.types.ndarray(), data2: ti.types.ndarray()):
function ti_copy_field_array (line 33) | def ti_copy_field_array(data1: ti.template(), data2: ti.types.ndarray()):
function fast_hash (line 39) | def fast_hash(pos_grid_local):
function under_hash (line 49) | def under_hash(pos_grid_local, resolution):
function grid_pos2hash_index (line 59) | def grid_pos2hash_index(indicator, pos_grid_local, resolution, map_size):
function hash_encode_kernel (line 70) | def hash_encode_kernel(
function hash_encode_kernel_half2 (line 120) | def hash_encode_kernel_half2(
class HashEncoderTaichi (line 166) | class HashEncoderTaichi(torch.nn.Module):
method __init__ (line 168) | def __init__(self,
method zero_grad (line 300) | def zero_grad(self):
method forward (line 303) | def forward(self, positions, bound=1):
FILE: stable-dreamfusion/taichi_modules/intersection.py
function simple_ray_aabb_intersec_taichi_forward (line 10) | def simple_ray_aabb_intersec_taichi_forward(
class RayAABBIntersector (line 39) | class RayAABBIntersector(torch.autograd.Function):
method forward (line 60) | def forward(ctx, rays_o, rays_d, center, half_size, max_hits):
FILE: stable-dreamfusion/taichi_modules/ray_march.py
function raymarching_train (line 10) | def raymarching_train(rays_o: ti.types.ndarray(ndim=2),
function raymarching_train_backword (line 129) | def raymarching_train_backword(segments: ti.types.ndarray(ndim=2),
class RayMarcherTaichi (line 145) | class RayMarcherTaichi(torch.nn.Module):
method __init__ (line 147) | def __init__(self, batch_size=8192):
method forward (line 221) | def forward(self, rays_o, rays_d, hits_t, density_bitfield, cascades,
function raymarching_test_kernel (line 230) | def raymarching_test_kernel(
function raymarching_test (line 306) | def raymarching_test(rays_o, rays_d, hits_t, alive_indices, density_bitf...
FILE: stable-dreamfusion/taichi_modules/utils.py
function scalbn (line 18) | def scalbn(x, exponent):
function calc_dt (line 23) | def calc_dt(t, exp_step_factor, grid_size, scale):
function frexp_bit (line 29) | def frexp_bit(x):
function mip_from_pos (line 47) | def mip_from_pos(xyz, cascades):
function mip_from_dt (line 56) | def mip_from_dt(dt, grid_size, cascades):
function __expand_bits (line 64) | def __expand_bits(v):
function __morton3D (line 73) | def __morton3D(xyz):
function __morton3D_invert (line 79) | def __morton3D_invert(x):
function morton3D_invert_kernel (line 89) | def morton3D_invert_kernel(indices: ti.types.ndarray(ndim=1),
function morton3D_invert (line 98) | def morton3D_invert(indices):
function morton3D_kernel (line 109) | def morton3D_kernel(xyzs: ti.types.ndarray(ndim=2),
function morton3D (line 116) | def morton3D(coords1):
function packbits (line 126) | def packbits(density_grid: ti.types.ndarray(ndim=1),
function torch2ti (line 141) | def torch2ti(field: ti.template(), data: ti.types.ndarray()):
function ti2torch (line 147) | def ti2torch(field: ti.template(), data: ti.types.ndarray()):
function ti2torch_grad (line 153) | def ti2torch_grad(field: ti.template(), grad: ti.types.ndarray()):
function torch2ti_grad (line 159) | def torch2ti_grad(field: ti.template(), grad: ti.types.ndarray()):
function torch2ti_vec (line 165) | def torch2ti_vec(field: ti.template(), data: ti.types.ndarray()):
function ti2torch_vec (line 171) | def ti2torch_vec(field: ti.template(), data: ti.types.ndarray()):
function ti2torch_grad_vec (line 178) | def ti2torch_grad_vec(field: ti.template(), grad: ti.types.ndarray()):
function torch2ti_grad_vec (line 185) | def torch2ti_grad_vec(field: ti.template(), grad: ti.types.ndarray()):
function extract_model_state_dict (line 191) | def extract_model_state_dict(ckpt_path,
function load_ckpt (line 210) | def load_ckpt(model, ckpt_path, model_name='model', prefixes_to_ignore=[]):
function depth2img (line 219) | def depth2img(depth):
FILE: stable-dreamfusion/taichi_modules/volume_render_test.py
function composite_test (line 5) | def composite_test(
FILE: stable-dreamfusion/taichi_modules/volume_train.py
function composite_train_fw_array (line 10) | def composite_train_fw_array(
function composite_train_fw (line 52) | def composite_train_fw(sigmas: ti.template(), rgbs: ti.template(),
function check_value (line 102) | def check_value(
class VolumeRendererTaichi (line 112) | class VolumeRendererTaichi(torch.nn.Module):
method __init__ (line 114) | def __init__(self, batch_size=8192, data_type=data_type):
method zero_grad (line 231) | def zero_grad(self):
method forward (line 237) | def forward(self, sigmas, rgbs, deltas, ts, rays_a, T_threshold):
FILE: stable-dreamfusion/tets/generate_tets.py
function generate_tetrahedron_grid_file (line 21) | def generate_tetrahedron_grid_file(res=32, root='..'):
function convert_from_quartet_to_npz (line 31) | def convert_from_quartet_to_npz(quartetfile = 'cube_32_tet.tet', npzfile...
Condensed preview — 144 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (8,347K chars).
[
{
"path": ".gitattributes",
"chars": 66,
"preview": "# Auto detect text files and perform LF normalization\n* text=auto\n"
},
{
"path": "LICENSE",
"chars": 1065,
"preview": "MIT License\n\nCopyright (c) 2023 Perp-Neg\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\no"
},
{
"path": "README.md",
"chars": 1935,
"preview": "\n### [Project Page](https://perp-neg.github.io/) | [Paper](https://arxiv.org/abs/2304.04968) | [Huggingface][huggingface"
},
{
"path": "notebooks/demo.ipynb",
"chars": 7140563,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"colab\": {\n \"base_uri\": \"htt"
},
{
"path": "perpneg_diffusion/__init__.py",
"chars": 91,
"preview": "\"\"\"\nA codebase for performing model inference with a text-conditional diffusion model.\n\"\"\"\n"
},
{
"path": "perpneg_diffusion/perpneg_stable_diffusion/__init__.py",
"chars": 927,
"preview": "\"\"\"\nA codebase for performing model inference with a text-conditional diffusion model.\n\"\"\"\n\nfrom dataclasses import data"
},
{
"path": "perpneg_diffusion/perpneg_stable_diffusion/pipeline_composable_stable_diffusion.py",
"chars": 17324,
"preview": "\"\"\"\n modified based on diffusion library from Huggingface: https://github.com/huggingface/diffusers/blob/main/src/dif"
},
{
"path": "perpneg_diffusion/perpneg_stable_diffusion/pipeline_composable_stable_diffusion_3d_rotation.py",
"chars": 19584,
"preview": "\"\"\"\n modified based on diffusion library from Huggingface: https://github.com/huggingface/diffusers/blob/main/src/dif"
},
{
"path": "perpneg_diffusion/perpneg_stable_diffusion/pipeline_composable_stable_diffusion_rotation.py",
"chars": 19584,
"preview": "\"\"\"\n modified based on diffusion library from Huggingface: https://github.com/huggingface/diffusers/blob/main/src/dif"
},
{
"path": "perpneg_diffusion/perpneg_stable_diffusion/pipeline_perpneg_stable_diffusion.py",
"chars": 17219,
"preview": "\"\"\"\n modified based on diffusion library from Huggingface: https://github.com/huggingface/diffusers/blob/main/src/dif"
},
{
"path": "perpneg_diffusion/perpneg_stable_diffusion/pipeline_perpneg_stable_diffusion_rotation.py",
"chars": 18150,
"preview": "\"\"\"\n modified based on diffusion library from Huggingface: https://github.com/huggingface/diffusers/blob/main/src/dif"
},
{
"path": "perpneg_diffusion/perpneg_stable_diffusion/safety_checker.py",
"chars": 4931,
"preview": "\"\"\"\n file copy from diffusion library from Huggingface: https://github.com/huggingface/diffusers/blob/main/src/diffus"
},
{
"path": "scripts/image_sample_stable_diffusion.py",
"chars": 2653,
"preview": "import torch as th\nimport numpy as np\nimport torchvision.utils as tvu\nimport os\n\nimport argparse\n\nparser = argparse.Argu"
},
{
"path": "setup.py",
"chars": 499,
"preview": "from setuptools import setup\n\nsetup(\n name=\"perpneg-diffusion\",\n packages=[\n \"perpneg_diffusion\",\n \""
},
{
"path": "stable-dreamfusion/.gitignore",
"chars": 497,
"preview": "__pycache__/\nbuild/\n*.egg-info/\n*.so\nvenv_*/\n\ntmp*\n# data/\nldm/data/\ndata2\nscripts2\ntrial*/\n.vs/\n\nTOKEN\n*.ckpt\n\ndensegri"
},
{
"path": "stable-dreamfusion/LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "stable-dreamfusion/activation.py",
"chars": 526,
"preview": "import torch\nfrom torch.autograd import Function\nfrom torch.cuda.amp import custom_bwd, custom_fwd \n\nclass _trunc_exp(Fu"
},
{
"path": "stable-dreamfusion/assets/advanced.md",
"chars": 3342,
"preview": "\n# Code organization & Advanced tips\n\nThis is a simple description of the most important implementation details.\nIf you "
},
{
"path": "stable-dreamfusion/assets/update_logs.md",
"chars": 1824,
"preview": "### 2023.4.19\n* Fix depth supervision, migrate depth estimation model to omnidata.\n* Add normal supervision (also by omn"
},
{
"path": "stable-dreamfusion/config/anya.csv",
"chars": 122,
"preview": "zero123_weight, radius, polar, azimuth, image\n1, 3, 90, 0, data/anya_front_rgba.png\n1, 3, 90, 180, data/anya_back_rgba.p"
},
{
"path": "stable-dreamfusion/config/car.csv",
"chars": 200,
"preview": "zero123_weight, radius, polar, azimuth, image\n4, 3.2, 90, 0, data/car_left_rgba.png\n1, 3, 90, 90, data/car_front_rgba.pn"
},
{
"path": "stable-dreamfusion/config/corgi.csv",
"chars": 105,
"preview": "zero123_weight, radius, polar, azimuth, image\n1, 3.2, 90, 0, data/corgi_puppy_sitting_looking_up_rgba.png"
},
{
"path": "stable-dreamfusion/docker/Dockerfile",
"chars": 1300,
"preview": "FROM nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04\n\n# Remove any third-party apt sources to avoid issues with expiring key"
},
{
"path": "stable-dreamfusion/docker/README.md",
"chars": 2231,
"preview": "### Docker installation\n\n## Build image\nTo build the docker image on your own machine, which may take 15-30 mins:\n```\ndo"
},
{
"path": "stable-dreamfusion/dpt.py",
"chars": 27507,
"preview": "import math\nimport types\n\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nimport timm\n\nclass BaseMod"
},
{
"path": "stable-dreamfusion/encoding.py",
"chars": 3556,
"preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nclass FreqEncoder_torch(nn.Module):\n def __init__"
},
{
"path": "stable-dreamfusion/evaluation/Prompt.py",
"chars": 3294,
"preview": "import textwrap\nfrom transformers import AutoTokenizer, AutoModelForSeq2SeqLM, AutoModelForTokenClassification\nfrom tran"
},
{
"path": "stable-dreamfusion/evaluation/mesh_to_video.py",
"chars": 2683,
"preview": "import os\nimport numpy as np\nimport trimesh\nimport argparse\nfrom pathlib import Path\nfrom tqdm import tqdm\nimport pyvist"
},
{
"path": "stable-dreamfusion/evaluation/r_precision.py",
"chars": 1166,
"preview": "from sentence_transformers import SentenceTransformer, util\nfrom PIL import Image\nimport argparse\nimport sys\n\n\nif __name"
},
{
"path": "stable-dreamfusion/evaluation/readme.md",
"chars": 1714,
"preview": "### Improvement:\n\n- Usage\n\n - r_precision.py <br>\n For prompt seperation <br>\n --text is for the prompt following the"
},
{
"path": "stable-dreamfusion/freqencoder/__init__.py",
"chars": 29,
"preview": "from .freq import FreqEncoder"
},
{
"path": "stable-dreamfusion/freqencoder/backend.py",
"chars": 1475,
"preview": "import os\nfrom torch.utils.cpp_extension import load\n\n_src_path = os.path.dirname(os.path.abspath(__file__))\n\nnvcc_flags"
},
{
"path": "stable-dreamfusion/freqencoder/freq.py",
"chars": 2232,
"preview": "import numpy as np\n\nimport torch\nimport torch.nn as nn\nfrom torch.autograd import Function\nfrom torch.autograd.function "
},
{
"path": "stable-dreamfusion/freqencoder/setup.py",
"chars": 1740,
"preview": "import os\nfrom setuptools import setup\nfrom torch.utils.cpp_extension import BuildExtension, CUDAExtension\n\n_src_path = "
},
{
"path": "stable-dreamfusion/freqencoder/src/bindings.cpp",
"chars": 275,
"preview": "#include <torch/extension.h>\n\n#include \"freqencoder.h\"\n\nPYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {\n m.def(\"freq_encod"
},
{
"path": "stable-dreamfusion/freqencoder/src/freqencoder.cu",
"chars": 3738,
"preview": "#include <stdint.h>\n\n#include <cuda.h>\n#include <cuda_fp16.h>\n#include <cuda_runtime.h>\n\n#include <ATen/cuda/CUDAContext"
},
{
"path": "stable-dreamfusion/freqencoder/src/freqencoder.h",
"chars": 540,
"preview": "# pragma once\n\n#include <stdint.h>\n#include <torch/torch.h>\n\n// _backend.freq_encode_forward(inputs, B, input_dim, degre"
},
{
"path": "stable-dreamfusion/gridencoder/__init__.py",
"chars": 29,
"preview": "from .grid import GridEncoder"
},
{
"path": "stable-dreamfusion/gridencoder/backend.py",
"chars": 1454,
"preview": "import os\nfrom torch.utils.cpp_extension import load\n\n_src_path = os.path.dirname(os.path.abspath(__file__))\n\nnvcc_flags"
},
{
"path": "stable-dreamfusion/gridencoder/grid.py",
"chars": 8804,
"preview": "import math\nimport numpy as np\n\nimport torch\nimport torch.nn as nn\nfrom torch.autograd import Function\nfrom torch.autogr"
},
{
"path": "stable-dreamfusion/gridencoder/setup.py",
"chars": 1719,
"preview": "import os\nfrom setuptools import setup\nfrom torch.utils.cpp_extension import BuildExtension, CUDAExtension\n\n_src_path = "
},
{
"path": "stable-dreamfusion/gridencoder/src/bindings.cpp",
"chars": 444,
"preview": "#include <torch/extension.h>\n\n#include \"gridencoder.h\"\n\nPYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {\n m.def(\"grid_encod"
},
{
"path": "stable-dreamfusion/gridencoder/src/gridencoder.cu",
"chars": 30774,
"preview": "#include <cuda.h>\n#include <cuda_fp16.h>\n#include <cuda_runtime.h>\n\n#include <ATen/cuda/CUDAContext.h>\n#include <torch/t"
},
{
"path": "stable-dreamfusion/gridencoder/src/gridencoder.h",
"chars": 1521,
"preview": "#ifndef _HASH_ENCODE_H\n#define _HASH_ENCODE_H\n\n#include <stdint.h>\n#include <torch/torch.h>\n\n// inputs: [B, D], float, i"
},
{
"path": "stable-dreamfusion/guidance/clip_utils.py",
"chars": 1761,
"preview": "import torch\nimport torch.nn as nn\n\nimport torchvision.transforms as T\nimport torchvision.transforms.functional as TF\n\ni"
},
{
"path": "stable-dreamfusion/guidance/if_utils.py",
"chars": 9895,
"preview": "from transformers import logging\nfrom diffusers import IFPipeline, DDPMScheduler\n\n# suppress partial model loading warni"
},
{
"path": "stable-dreamfusion/guidance/perpneg_utils.py",
"chars": 2058,
"preview": "import torch\n\n# Please refer to the https://perp-neg.github.io/ for details about the paper and algorithm\ndef get_perpen"
},
{
"path": "stable-dreamfusion/guidance/sd_utils.py",
"chars": 15874,
"preview": "from transformers import CLIPTextModel, CLIPTokenizer, logging\nfrom diffusers import AutoencoderKL, UNet2DConditionModel"
},
{
"path": "stable-dreamfusion/guidance/zero123_utils.py",
"chars": 14750,
"preview": "import math\nimport numpy as np\nfrom omegaconf import OmegaConf\nfrom pathlib import Path\n\nimport torch\nimport torch.nn as"
},
{
"path": "stable-dreamfusion/ldm/extras.py",
"chars": 2560,
"preview": "from pathlib import Path\nfrom omegaconf import OmegaConf\nimport torch\nfrom ldm.util import instantiate_from_config\nimpor"
},
{
"path": "stable-dreamfusion/ldm/guidance.py",
"chars": 3322,
"preview": "from typing import List, Tuple\nfrom scipy import interpolate\nimport numpy as np\nimport torch\nimport matplotlib.pyplot as"
},
{
"path": "stable-dreamfusion/ldm/lr_scheduler.py",
"chars": 3882,
"preview": "import numpy as np\n\n\nclass LambdaWarmUpCosineScheduler:\n \"\"\"\n note: use with a base_lr of 1.0\n \"\"\"\n def __in"
},
{
"path": "stable-dreamfusion/ldm/models/autoencoder.py",
"chars": 17619,
"preview": "import torch\nimport pytorch_lightning as pl\nimport torch.nn.functional as F\nfrom contextlib import contextmanager\n\nfrom "
},
{
"path": "stable-dreamfusion/ldm/models/diffusion/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "stable-dreamfusion/ldm/models/diffusion/classifier.py",
"chars": 10276,
"preview": "import os\nimport torch\nimport pytorch_lightning as pl\nfrom omegaconf import OmegaConf\nfrom torch.nn import functional as"
},
{
"path": "stable-dreamfusion/ldm/models/diffusion/ddim.py",
"chars": 16719,
"preview": "\"\"\"SAMPLING ONLY.\"\"\"\n\nimport torch\nimport numpy as np\nfrom tqdm import tqdm\nfrom functools import partial\nfrom einops im"
},
{
"path": "stable-dreamfusion/ldm/models/diffusion/ddpm.py",
"chars": 96160,
"preview": "\"\"\"\nwild mixture of\nhttps://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e316"
},
{
"path": "stable-dreamfusion/ldm/models/diffusion/plms.py",
"chars": 13647,
"preview": "\"\"\"SAMPLING ONLY.\"\"\"\n\nimport torch\nimport numpy as np\nfrom tqdm import tqdm\nfrom functools import partial\n\nfrom ldm.modu"
},
{
"path": "stable-dreamfusion/ldm/models/diffusion/sampling_util.py",
"chars": 1623,
"preview": "import torch\nimport numpy as np\n\n\ndef append_dims(x, target_dims):\n \"\"\"Appends dimensions to the end of a tensor unti"
},
{
"path": "stable-dreamfusion/ldm/modules/attention.py",
"chars": 8945,
"preview": "from inspect import isfunction\nimport math\nimport torch\nimport torch.nn.functional as F\nfrom torch import nn, einsum\nfro"
},
{
"path": "stable-dreamfusion/ldm/modules/diffusionmodules/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "stable-dreamfusion/ldm/modules/diffusionmodules/model.py",
"chars": 33409,
"preview": "# pytorch_diffusion + derived encoder decoder\nimport math\nimport torch\nimport torch.nn as nn\nimport numpy as np\nfrom ein"
},
{
"path": "stable-dreamfusion/ldm/modules/diffusionmodules/openaimodel.py",
"chars": 37219,
"preview": "from abc import abstractmethod\nfrom functools import partial\nimport math\nfrom typing import Iterable\n\nimport numpy as np"
},
{
"path": "stable-dreamfusion/ldm/modules/diffusionmodules/util.py",
"chars": 9561,
"preview": "# adopted from\n# https://github.com/openai/improved-diffusion/blob/main/improved_diffusion/gaussian_diffusion.py\n# and\n#"
},
{
"path": "stable-dreamfusion/ldm/modules/distributions/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "stable-dreamfusion/ldm/modules/distributions/distributions.py",
"chars": 2970,
"preview": "import torch\nimport numpy as np\n\n\nclass AbstractDistribution:\n def sample(self):\n raise NotImplementedError()\n"
},
{
"path": "stable-dreamfusion/ldm/modules/ema.py",
"chars": 2982,
"preview": "import torch\nfrom torch import nn\n\n\nclass LitEma(nn.Module):\n def __init__(self, model, decay=0.9999, use_num_upates="
},
{
"path": "stable-dreamfusion/ldm/modules/encoders/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "stable-dreamfusion/ldm/modules/encoders/modules.py",
"chars": 20838,
"preview": "import torch\nimport torch.nn as nn\nimport numpy as np\nfrom functools import partial\nimport kornia\n\nfrom ldm.modules.x_tr"
},
{
"path": "stable-dreamfusion/ldm/modules/evaluate/adm_evaluator.py",
"chars": 25770,
"preview": "import argparse\nimport io\nimport os\nimport random\nimport warnings\nimport zipfile\nfrom abc import ABC, abstractmethod\nfro"
},
{
"path": "stable-dreamfusion/ldm/modules/evaluate/evaluate_perceptualsim.py",
"chars": 20269,
"preview": "import argparse\nimport glob\nimport os\nfrom tqdm import tqdm\nfrom collections import namedtuple\n\nimport numpy as np\nimpor"
},
{
"path": "stable-dreamfusion/ldm/modules/evaluate/frechet_video_distance.py",
"chars": 5241,
"preview": "# coding=utf-8\n# Copyright 2022 The Google Research Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "stable-dreamfusion/ldm/modules/evaluate/ssim.py",
"chars": 3367,
"preview": "# MIT Licence\n\n# Methods to predict the SSIM, taken from\n# https://github.com/Po-Hsun-Su/pytorch-ssim/blob/master/pytorc"
},
{
"path": "stable-dreamfusion/ldm/modules/evaluate/torch_frechet_video_distance.py",
"chars": 10549,
"preview": "# based on https://github.com/universome/fvd-comparison/blob/master/compare_models.py; huge thanks!\nimport os\nimport num"
},
{
"path": "stable-dreamfusion/ldm/modules/image_degradation/__init__.py",
"chars": 208,
"preview": "from ldm.modules.image_degradation.bsrgan import degradation_bsrgan_variant as degradation_fn_bsr\nfrom ldm.modules.image"
},
{
"path": "stable-dreamfusion/ldm/modules/image_degradation/bsrgan.py",
"chars": 25198,
"preview": "# -*- coding: utf-8 -*-\n\"\"\"\n# --------------------------------------------\n# Super-Resolution\n# ------------------------"
},
{
"path": "stable-dreamfusion/ldm/modules/image_degradation/bsrgan_light.py",
"chars": 22190,
"preview": "# -*- coding: utf-8 -*-\nimport numpy as np\nimport cv2\nimport torch\n\nfrom functools import partial\nimport random\nfrom sci"
},
{
"path": "stable-dreamfusion/ldm/modules/image_degradation/utils_image.py",
"chars": 29022,
"preview": "import os\nimport math\nimport random\nimport numpy as np\nimport torch\nimport cv2\nfrom torchvision.utils import make_grid\nf"
},
{
"path": "stable-dreamfusion/ldm/modules/losses/__init__.py",
"chars": 68,
"preview": "from ldm.modules.losses.contperceptual import LPIPSWithDiscriminator"
},
{
"path": "stable-dreamfusion/ldm/modules/losses/contperceptual.py",
"chars": 5581,
"preview": "import torch\nimport torch.nn as nn\n\nfrom taming.modules.losses.vqperceptual import * # TODO: taming dependency yes/no?\n"
},
{
"path": "stable-dreamfusion/ldm/modules/losses/vqperceptual.py",
"chars": 7941,
"preview": "import torch\nfrom torch import nn\nimport torch.nn.functional as F\nfrom einops import repeat\n\nfrom taming.modules.discrim"
},
{
"path": "stable-dreamfusion/ldm/modules/x_transformer.py",
"chars": 20168,
"preview": "\"\"\"shout-out to https://github.com/lucidrains/x-transformers/tree/main/x_transformers\"\"\"\nimport torch\nfrom torch import "
},
{
"path": "stable-dreamfusion/ldm/thirdp/psp/helpers.py",
"chars": 3604,
"preview": "# https://github.com/eladrich/pixel2style2pixel\n\nfrom collections import namedtuple\nimport torch\nfrom torch.nn import Co"
},
{
"path": "stable-dreamfusion/ldm/thirdp/psp/id_loss.py",
"chars": 847,
"preview": "# https://github.com/eladrich/pixel2style2pixel\nimport torch\nfrom torch import nn\nfrom ldm.thirdp.psp.model_irse import "
},
{
"path": "stable-dreamfusion/ldm/thirdp/psp/model_irse.py",
"chars": 2883,
"preview": "# https://github.com/eladrich/pixel2style2pixel\n\nfrom torch.nn import Linear, Conv2d, BatchNorm1d, BatchNorm2d, PReLU, D"
},
{
"path": "stable-dreamfusion/ldm/util.py",
"chars": 7819,
"preview": "import importlib\n\nimport torchvision\nimport torch\nfrom torch import optim\nimport numpy as np\n\nfrom inspect import isfunc"
},
{
"path": "stable-dreamfusion/main.py",
"chars": 24237,
"preview": "import torch\nimport argparse\nimport pandas as pd\nimport sys\n\nfrom nerf.provider import NeRFDataset\nfrom nerf.utils impor"
},
{
"path": "stable-dreamfusion/meshutils.py",
"chars": 3880,
"preview": "import numpy as np\nimport pymeshlab as pml\n\ndef poisson_mesh_reconstruction(points, normals=None):\n # points/normals:"
},
{
"path": "stable-dreamfusion/nerf/gui.py",
"chars": 20302,
"preview": "import math\nimport torch\nimport numpy as np\nimport dearpygui.dearpygui as dpg\nfrom scipy.spatial.transform import Rotati"
},
{
"path": "stable-dreamfusion/nerf/network.py",
"chars": 8045,
"preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nfrom activation import trunc_exp\nfrom .renderer impo"
},
{
"path": "stable-dreamfusion/nerf/network_grid.py",
"chars": 6008,
"preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nfrom activation import trunc_exp, biased_softplus\nfr"
},
{
"path": "stable-dreamfusion/nerf/network_grid_taichi.py",
"chars": 6024,
"preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nfrom activation import trunc_exp\nfrom .renderer impo"
},
{
"path": "stable-dreamfusion/nerf/network_grid_tcnn.py",
"chars": 5747,
"preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nfrom activation import trunc_exp, biased_softplus\nfr"
},
{
"path": "stable-dreamfusion/nerf/provider.py",
"chars": 12284,
"preview": "import os\nimport cv2\nimport glob\nimport json\nimport tqdm\nimport random\nimport numpy as np\nfrom scipy.spatial.transform i"
},
{
"path": "stable-dreamfusion/nerf/renderer.py",
"chars": 51164,
"preview": "import os\nimport math\nimport cv2\nimport trimesh\nimport numpy as np\n\nimport torch\nimport torch.nn as nn\nimport torch.nn.f"
},
{
"path": "stable-dreamfusion/nerf/utils.py",
"chars": 56535,
"preview": "import os\nimport gc\nimport glob\nimport tqdm\nimport math\nimport imageio\nimport psutil\nfrom pathlib import Path\nimport ran"
},
{
"path": "stable-dreamfusion/optimizer.py",
"chars": 11804,
"preview": "# Copyright 2022 Garena Online Private Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
},
{
"path": "stable-dreamfusion/preprocess_image.py",
"chars": 7439,
"preview": "import os\nimport sys\nimport cv2\nimport argparse\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nimport torch\nimport "
},
{
"path": "stable-dreamfusion/pretrained/zero123/sd-objaverse-finetune-c_concat-256.yaml",
"chars": 3006,
"preview": "model:\n base_learning_rate: 1.0e-04\n target: ldm.models.diffusion.ddpm.LatentDiffusion\n params:\n linear_start: 0.0"
},
{
"path": "stable-dreamfusion/raymarching/__init__.py",
"chars": 26,
"preview": "from .raymarching import *"
},
{
"path": "stable-dreamfusion/raymarching/backend.py",
"chars": 1454,
"preview": "import os\nfrom torch.utils.cpp_extension import load\n\n_src_path = os.path.dirname(os.path.abspath(__file__))\n\nnvcc_flags"
},
{
"path": "stable-dreamfusion/raymarching/raymarching.py",
"chars": 15284,
"preview": "import numpy as np\nimport time\n\nimport torch\nimport torch.nn as nn\nfrom torch.autograd import Function\nfrom torch.cuda.a"
},
{
"path": "stable-dreamfusion/raymarching/setup.py",
"chars": 2155,
"preview": "import os\nfrom setuptools import setup\nfrom torch.utils.cpp_extension import BuildExtension, CUDAExtension\n\n_src_path = "
},
{
"path": "stable-dreamfusion/raymarching/src/bindings.cpp",
"chars": 968,
"preview": "#include <torch/extension.h>\n\n#include \"raymarching.h\"\n\nPYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {\n // utils\n m.de"
},
{
"path": "stable-dreamfusion/raymarching/src/raymarching.cu",
"chars": 31876,
"preview": "#include <cuda.h>\n#include <cuda_fp16.h>\n#include <cuda_runtime.h>\n\n#include <ATen/cuda/CUDAContext.h>\n#include <torch/t"
},
{
"path": "stable-dreamfusion/raymarching/src/raymarching.h",
"chars": 2590,
"preview": "#pragma once\n\n#include <stdint.h>\n#include <torch/torch.h>\n\n\nvoid near_far_from_aabb(const at::Tensor rays_o, const at::"
},
{
"path": "stable-dreamfusion/readme.md",
"chars": 335,
"preview": "# Stable-Dreamfusion + Perp-Neg\n\nA pytorch implementation of the text-to-3D model **Perp-Neg + Dreamfusion**, \n\nplease u"
},
{
"path": "stable-dreamfusion/requirements.txt",
"chars": 685,
"preview": "tqdm\nrich\nninja\nnumpy\npandas\nscipy\nscikit-learn\nmatplotlib\nopencv-python\nimageio\nimageio-ffmpeg\n\ntorch\ntorch-ema\neinops\n"
},
{
"path": "stable-dreamfusion/scripts/install_ext.sh",
"chars": 101,
"preview": "pip install ./raymarching\npip install ./shencoder\npip install ./freqencoder\npip install ./gridencoder"
},
{
"path": "stable-dreamfusion/scripts/res64.args",
"chars": 25,
"preview": "-O --vram_O --w 64 --h 64"
},
{
"path": "stable-dreamfusion/scripts/run.sh",
"chars": 1669,
"preview": "#! /bin/bash\nCUDA_VISIBLE_DEVICES=1 python main.py -O --text \"a DSLR photo of a delicious hamburger\" --workspace trial_h"
},
{
"path": "stable-dreamfusion/scripts/run2.sh",
"chars": 988,
"preview": "#! /bin/bash\n\nCUDA_VISIBLE_DEVICES=5 python main.py -O --text \"a DSLR photo of a shiba inu playing golf wearing tartan g"
},
{
"path": "stable-dreamfusion/scripts/run3.sh",
"chars": 1155,
"preview": "#! /bin/bash\n\nCUDA_VISIBLE_DEVICES=7 python main.py -O --text \"ironman, full body\" --workspace trial_ironman --iters 100"
},
{
"path": "stable-dreamfusion/scripts/run4.sh",
"chars": 1264,
"preview": "#! /bin/bash\n\nCUDA_VISIBLE_DEVICES=5 python main.py -O --text \"a rabbit, animated movie character, high detail 3d model\""
},
{
"path": "stable-dreamfusion/scripts/run5.sh",
"chars": 1076,
"preview": "#! /bin/bash\n\nCUDA_VISIBLE_DEVICES=2 python main.py -O --text \"Perched blue jay bird\" --workspace trial_jay --iters 1000"
},
{
"path": "stable-dreamfusion/scripts/run6.sh",
"chars": 2101,
"preview": "#! /bin/bash\nCUDA_VISIBLE_DEVICES=4 python main.py -O --text \"a baby bunny sitting on top of a stack of pancakes\" --work"
},
{
"path": "stable-dreamfusion/scripts/run_if.sh",
"chars": 2185,
"preview": "#! /bin/bash\nCUDA_VISIBLE_DEVICES=2 python main.py -O --text \"a baby bunny sitting on top of a stack of pancakes\" --work"
},
{
"path": "stable-dreamfusion/scripts/run_if2.sh",
"chars": 1997,
"preview": "#! /bin/bash\nCUDA_VISIBLE_DEVICES=3 python main.py -O --text \"a corgi taking a selfie\" --workspace trial_if_corgi --iter"
},
{
"path": "stable-dreamfusion/scripts/run_if2_perpneg.sh",
"chars": 1783,
"preview": "#! /bin/bash\nCUDA_VISIBLE_DEVICES=3 python main.py -O --text \"a lion bust\" --workspace trial_perpneg_if_lion --iters 500"
},
{
"path": "stable-dreamfusion/scripts/run_image.sh",
"chars": 2408,
"preview": "# zero123 backend (single object, images like 3d model rendering)\n\nCUDA_VISIBLE_DEVICES=6 python main.py -O --image data"
},
{
"path": "stable-dreamfusion/scripts/run_image_anya.sh",
"chars": 3058,
"preview": "# Phase 1 - barely fits in A100 40GB.\n# Conclusion: results in concave-ish face, no neck, excess hair in the back\nCUDA_V"
},
{
"path": "stable-dreamfusion/scripts/run_image_hard_examples.sh",
"chars": 1874,
"preview": "bash scripts/run_image_procedure.sh 0 30 90 anya_front \"A DSLR 3D photo of a cute anime schoolgirl stands proudly with h"
},
{
"path": "stable-dreamfusion/scripts/run_image_procedure.sh",
"chars": 3483,
"preview": "# Perform a 2D-to-3D reconstruction, similar to the Anya case study: https://github.com/ashawkey/stable-dreamfusion/issu"
},
{
"path": "stable-dreamfusion/scripts/run_image_text.sh",
"chars": 1543,
"preview": "# sd backend (realistic images)\n\nCUDA_VISIBLE_DEVICES=4 python main.py -O --image data/teddy_rgba.png --text \"a brown te"
},
{
"path": "stable-dreamfusion/scripts/run_images.sh",
"chars": 935,
"preview": "# zero123 backend (single object, images like 3d model rendering)\n\nCUDA_VISIBLE_DEVICES=6 python main.py -O --image_conf"
},
{
"path": "stable-dreamfusion/shencoder/__init__.py",
"chars": 39,
"preview": "from .sphere_harmonics import SHEncoder"
},
{
"path": "stable-dreamfusion/shencoder/backend.py",
"chars": 1451,
"preview": "import os\nfrom torch.utils.cpp_extension import load\n\n_src_path = os.path.dirname(os.path.abspath(__file__))\n\nnvcc_flags"
},
{
"path": "stable-dreamfusion/shencoder/setup.py",
"chars": 1713,
"preview": "import os\nfrom setuptools import setup\nfrom torch.utils.cpp_extension import BuildExtension, CUDAExtension\n\n_src_path = "
},
{
"path": "stable-dreamfusion/shencoder/sphere_harmonics.py",
"chars": 2697,
"preview": "import numpy as np\n\nimport torch\nimport torch.nn as nn\nfrom torch.autograd import Function\nfrom torch.autograd.function "
},
{
"path": "stable-dreamfusion/shencoder/src/bindings.cpp",
"chars": 261,
"preview": "#include <torch/extension.h>\n\n#include \"shencoder.h\"\n\nPYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {\n m.def(\"sh_encode_fo"
},
{
"path": "stable-dreamfusion/shencoder/src/shencoder.cu",
"chars": 37131,
"preview": "#include <stdint.h>\n\n#include <cuda.h>\n#include <cuda_fp16.h>\n#include <cuda_runtime.h>\n\n#include <ATen/cuda/CUDAContext"
},
{
"path": "stable-dreamfusion/shencoder/src/shencoder.h",
"chars": 430,
"preview": "# pragma once\n\n#include <stdint.h>\n#include <torch/torch.h>\n\n// inputs: [B, D], float, in [-1, 1]\n// outputs: [B, F], fl"
},
{
"path": "stable-dreamfusion/taichi_modules/__init__.py",
"chars": 224,
"preview": "from .ray_march import RayMarcherTaichi, raymarching_test\nfrom .volume_train import VolumeRendererTaichi\nfrom .intersect"
},
{
"path": "stable-dreamfusion/taichi_modules/hash_encoder.py",
"chars": 10961,
"preview": "import numpy as np\nimport taichi as ti\nimport torch\nfrom taichi.math import uvec3\nfrom torch.cuda.amp import custom_bwd,"
},
{
"path": "stable-dreamfusion/taichi_modules/intersection.py",
"chars": 2278,
"preview": "import taichi as ti\nimport torch\nfrom taichi.math import vec3\nfrom torch.cuda.amp import custom_fwd\n\nfrom .utils import "
},
{
"path": "stable-dreamfusion/taichi_modules/ray_march.py",
"chars": 13205,
"preview": "import taichi as ti\nimport torch\nfrom taichi.math import vec3\nfrom torch.cuda.amp import custom_fwd\n\nfrom .utils import "
},
{
"path": "stable-dreamfusion/taichi_modules/utils.py",
"chars": 6369,
"preview": "import taichi as ti\nimport torch\nfrom taichi.math import uvec3\n\ntaichi_block_size = 128\n\ndata_type = ti.f32\ntorch_type ="
},
{
"path": "stable-dreamfusion/taichi_modules/volume_render_test.py",
"chars": 1460,
"preview": "import taichi as ti\n\n\n@ti.kernel\ndef composite_test(\n sigmas: ti.types.ndarray(ndim=2), rgbs: ti.types.ndarray(ndim=3"
},
{
"path": "stable-dreamfusion/taichi_modules/volume_train.py",
"chars": 9419,
"preview": "import taichi as ti\nimport torch\nfrom torch.cuda.amp import custom_bwd, custom_fwd\n\nfrom .utils import (data_type, ti2to"
},
{
"path": "stable-dreamfusion/tets/README.md",
"chars": 263,
"preview": "Place the tet grid files in this folder. \nWe provide a few example grids. See the main README.md for a download link.\n\nY"
},
{
"path": "stable-dreamfusion/tets/generate_tets.py",
"chars": 2327,
"preview": "# Copyright (c) 2020-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. \n#\n# NVIDIA CORPORATION, its affiliates "
}
]
// ... and 3 more files (download for full content)
About this extraction
This page contains the full source code of the Perp-Neg/Perp-Neg-stablediffusion GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 144 files (7.9 MB), approximately 2.1M tokens, and a symbol index with 1151 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.