Barbershop: GAN-based Image Compositing using Segmentation Masks (SIGGRAPH Asia 2021)

Overview

Barbershop: GAN-based Image Compositing using Segmentation Masks

teaser

Barbershop: GAN-based Image Compositing using Segmentation Masks
Peihao Zhu, Rameen Abdal, John Femiani, Peter Wonka

arXiv | BibTeX | Project Page | Video

Abstract Seamlessly blending features from multiple images is extremely challenging because of complex relationships in lighting, geometry, and partial occlusion which cause coupling between different parts of the image. Even though recent work on GANs enables synthesis of realistic hair or faces, it remains difficult to combine them into a single, coherent, and plausible image rather than a disjointed set of image patches. We present a novel solution to image blending, particularly for the problem of hairstyle transfer, based on GAN-inversion. We propose a novel latent space for image blending which is better at preserving detail and encoding spatial information, and propose a new GAN-embedding algorithm which is able to slightly modify images to conform to a common segmentation mask. Our novel representation enables the transfer of the visual properties from multiple reference images including specific details such as moles and wrinkles, and because we do image blending in a latent-space we are able to synthesize images that are coherent. Our approach avoids blending artifacts present in other approaches and finds a globally consistent image. Our results demonstrate a significant improvement over the current state of the art in a user study, with users preferring our blending solution over 95 percent of the time.

Description

Official Implementation of Barbershop.

Updates

2/6/2021 Add project page.

BibTeX

@misc{zhu2021barbershop,
      title={Barbershop: GAN-based Image Compositing using Segmentation Masks},
      author={Peihao Zhu and Rameen Abdal and John Femiani and Peter Wonka},
      year={2021},
      eprint={2106.01505},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}
Comments
  • lots of errors

    lots of errors

    ❯ python main.py --im_path1 90.png --im_path2 15.png --im_path3 117.png --sign realistic --smooth 5
    Loading StyleGAN2 from checkpoint: pretrained_models/ffhq.pt
    Setting up Perceptual loss...
    Traceback (most recent call last):
      File "main.py", line 117, in <module>
        main(args)
      File "main.py", line 18, in main
        ii2s = Embedding(args)
      File "/home/fg/dev/python/Barbershop/models/Embedding.py", line 25, in __init__
        self.setup_embedding_loss_builder()
      File "/home/fg/dev/python/Barbershop/models/Embedding.py", line 94, in setup_embedding_loss_builder
        self.loss_builder = EmbeddingLossBuilder(self.opts)
      File "/home/fg/dev/python/Barbershop/losses/embedding_loss.py", line 18, in __init__
        self.percept = lpips.PerceptualLoss(model="net-lin", net="vgg", use_gpu=use_gpu)
      File "/home/fg/dev/python/Barbershop/losses/lpips/__init__.py", line 22, in __init__
        self.model.initialize(model=model, net=net, use_gpu=use_gpu, colorspace=colorspace, spatial=self.spatial, gpu_ids=gpu_ids)
      File "/home/fg/dev/python/Barbershop/losses/lpips/dist_model.py", line 63, in initialize
        use_dropout=True, spatial=spatial, version=version, lpips=True)
      File "/home/fg/dev/python/Barbershop/losses/lpips/networks_basic.py", line 50, in __init__
        self.net = net_type(pretrained=not self.pnet_rand, requires_grad=self.pnet_tune)
      File "/home/fg/dev/python/Barbershop/losses/lpips/pretrained_networks.py", line 100, in __init__
        vgg_pretrained_features = tv.vgg16(pretrained=pretrained).features
      File "/home/fg/anaconda3/envs/plswork/lib/python3.7/site-packages/torchvision/models/vgg.py", line 150, in vgg16
        return _vgg('vgg16', 'D', False, pretrained, progress, **kwargs)
      File "/home/fg/anaconda3/envs/plswork/lib/python3.7/site-packages/torchvision/models/vgg.py", line 93, in _vgg
        progress=progress)
      File "/home/fg/anaconda3/envs/plswork/lib/python3.7/site-packages/torch/hub.py", line 559, in load_state_dict_from_url
        return torch.load(cached_file, map_location=map_location)
      File "/home/fg/anaconda3/envs/plswork/lib/python3.7/site-packages/torch/serialization.py", line 595, in load
        return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
      File "/home/fg/anaconda3/envs/plswork/lib/python3.7/site-packages/torch/serialization.py", line 781, in _legacy_load
        deserialized_objects[key]._set_from_file(f, offset, f_should_read_directly)
    RuntimeError: unexpected EOF, expected 477241 more bytes. The file might be corrupted.
    
    
    opened by ngmisl 6
  • CondaEnvException: Pip failed

    CondaEnvException: Pip failed

    When I tried to make a new environment from yml file, I got this error. I think there is typo for the version of 'clip'. Which one of 'clip' version should I choose?

    Steps to Reproduce

    $ conda env create -f environment/environment.yml
    Collecting package metadata (repodata.json): done
    Solving environment: done
    Preparing transaction: done
    Verifying transaction: done
    Executing transaction: - By downloading and using the CUDA Toolkit conda packages, you accept the terms and conditions of the CUDA End User License Agreement (EULA): https://docs.nvidia.com/cuda/eula/index.html
    
    done
    Installing pip dependencies: \ Ran pip subprocess with arguments:
    ['/home/danielr/anaconda3/envs/Barbershop/bin/python', '-m', 'pip', 'install', '-U', '-r', '/home/danielr/Barbershop/environment/condaenv.b44p9c0i.requirements.txt']
    Pip subprocess output:
    Collecting beautifulsoup4==4.10.0
      Using cached beautifulsoup4-4.10.0-py3-none-any.whl (97 kB)
    Collecting cachetools==4.2.4
      Using cached cachetools-4.2.4-py3-none-any.whl (10 kB)
    Collecting charset-normalizer==2.0.7
      Using cached charset_normalizer-2.0.7-py3-none-any.whl (38 kB)
    Collecting click==8.0.3
      Using cached click-8.0.3-py3-none-any.whl (97 kB)
    
    Pip subprocess error:
    ERROR: Could not find a version that satisfies the requirement clip==1.0 (from versions: 0.0.1, 0.1.0, 0.2.0)
    ERROR: No matching distribution found for clip==1.0
    
    failed
    
    CondaEnvException: Pip failed
    

    Expected Behavior

    It should create a new environment with the specifications given in the yml file.

    Environment Information

    `conda info`
    $ conda info
    
         active environment : base
        active env location : /home/danielr/anaconda3
                shell level : 1
           user config file : /home/danielr/.condarc
     populated config files : 
              conda version : 4.11.0
        conda-build version : 3.21.5
             python version : 3.9.7.final.0
           virtual packages : __cuda=11.5=0
                              __linux=5.11.0=0
                              __glibc=2.31=0
                              __unix=0=0
                              __archspec=1=x86_64
           base environment : /home/danielr/anaconda3  (writable)
          conda av data dir : /home/danielr/anaconda3/etc/conda
      conda av metadata url : None
               channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                              https://repo.anaconda.com/pkgs/main/noarch
                              https://repo.anaconda.com/pkgs/r/linux-64
                              https://repo.anaconda.com/pkgs/r/noarch
              package cache : /home/danielr/anaconda3/pkgs
                              /home/danielr/.conda/pkgs
           envs directories : /home/danielr/anaconda3/envs
                              /home/danielr/.conda/envs
                   platform : linux-64
                 user-agent : conda/4.11.0 requests/2.26.0 CPython/3.9.7 Linux/5.11.0-43-generic ubuntu/20.04.3 glibc/2.31
                    UID:GID : 1000:1000
                 netrc file : None
               offline mode : False
    
    `conda config --show-sources`
    $ conda config --show-sources
    # no output
    
    `conda list --show-channel-urls`
    $ conda list --show-channel-urls
    # packages in environment at /home/danielr/anaconda3:
    #
    # Name                    Version                   Build  Channel
    _ipyw_jlab_nb_ext_conf    0.1.0            py39h06a4308_0    defaults
    _libgcc_mutex             0.1                        main    defaults
    _openmp_mutex             4.5                       1_gnu    defaults
    alabaster                 0.7.12             pyhd3eb1b0_0    defaults
    anaconda                  2021.11                  py39_0    defaults
    anaconda-client           1.9.0            py39h06a4308_0    defaults
    anaconda-navigator        2.1.1                    py39_0    defaults
    anaconda-project          0.10.1             pyhd3eb1b0_0    defaults
    anyio                     2.2.0            py39h06a4308_1    defaults
    appdirs                   1.4.4              pyhd3eb1b0_0    defaults
    argh                      0.26.2           py39h06a4308_0    defaults
    argon2-cffi               20.1.0           py39h27cfd23_1    defaults
    arrow                     0.13.1           py39h06a4308_0    defaults
    asn1crypto                1.4.0                      py_0    defaults
    astroid                   2.6.6            py39h06a4308_0    defaults
    astropy                   4.3.1            py39h09021b7_0    defaults
    async_generator           1.10               pyhd3eb1b0_0    defaults
    atomicwrites              1.4.0                      py_0    defaults
    attrs                     21.2.0             pyhd3eb1b0_0    defaults
    autopep8                  1.5.7              pyhd3eb1b0_0    defaults
    babel                     2.9.1              pyhd3eb1b0_0    defaults
    backcall                  0.2.0              pyhd3eb1b0_0    defaults
    backports                 1.0                pyhd3eb1b0_2    defaults
    backports.functools_lru_cache 1.6.4              pyhd3eb1b0_0    defaults
    backports.shutil_get_terminal_size 1.0.0              pyhd3eb1b0_3    defaults
    backports.tempfile        1.0                pyhd3eb1b0_1    defaults
    backports.weakref         1.0.post1                  py_1    defaults
    beautifulsoup4            4.10.0             pyh06a4308_0    defaults
    binaryornot               0.4.4              pyhd3eb1b0_1    defaults
    bitarray                  2.3.0            py39h7f8727e_1    defaults
    bkcharts                  0.2              py39h06a4308_0    defaults
    black                     19.10b0                    py_0    defaults
    blas                      1.0                         mkl    defaults
    bleach                    4.0.0              pyhd3eb1b0_0    defaults
    blosc                     1.21.0               h8c45485_0    defaults
    bokeh                     2.4.1            py39h06a4308_0    defaults
    boto                      2.49.0           py39h06a4308_0    defaults
    bottleneck                1.3.2            py39hdd57654_1    defaults
    brotli                    1.0.9                he6710b0_2    defaults
    brotlipy                  0.7.0           py39h27cfd23_1003    defaults
    brunsli                   0.1                  h2531618_0    defaults
    bzip2                     1.0.8                h7b6447c_0    defaults
    c-ares                    1.17.1               h27cfd23_0    defaults
    ca-certificates           2021.10.26           h06a4308_2    defaults
    cached-property           1.5.2                      py_0    defaults
    cairo                     1.16.0               hf32fb01_1    defaults
    certifi                   2021.10.8        py39h06a4308_0    defaults
    cffi                      1.14.6           py39h400218f_0    defaults
    cfitsio                   3.470                hf0d0db6_6    defaults
    chardet                   4.0.0           py39h06a4308_1003    defaults
    charls                    2.2.0                h2531618_0    defaults
    charset-normalizer        2.0.4              pyhd3eb1b0_0    defaults
    click                     8.0.3              pyhd3eb1b0_0    defaults
    cloudpickle               2.0.0              pyhd3eb1b0_0    defaults
    clyent                    1.2.2            py39h06a4308_1    defaults
    colorama                  0.4.4              pyhd3eb1b0_0    defaults
    conda                     4.11.0           py39h06a4308_0    defaults
    conda-build               3.21.5           py39h06a4308_0    defaults
    conda-content-trust       0.1.1              pyhd3eb1b0_0    defaults
    conda-env                 2.6.0                         1    defaults
    conda-pack                0.6.0              pyhd3eb1b0_0    defaults
    conda-package-handling    1.7.3            py39h27cfd23_1    defaults
    conda-repo-cli            1.0.4              pyhd3eb1b0_0    defaults
    conda-token               0.3.0              pyhd3eb1b0_0    defaults
    conda-verify              3.4.2                      py_1    defaults
    contextlib2               0.6.0.post1        pyhd3eb1b0_0    defaults
    cookiecutter              1.7.2              pyhd3eb1b0_0    defaults
    cryptography              3.4.8            py39hd23ed53_0    defaults
    curl                      7.78.0               h1ccaba5_0    defaults
    cycler                    0.10.0           py39h06a4308_0    defaults
    cython                    0.29.24          py39hdbfa776_0    defaults
    cytoolz                   0.11.0           py39h27cfd23_0    defaults
    daal4py                   2021.3.0         py39hae6d005_0    defaults
    dal                       2021.3.0           h06a4308_557    defaults
    dask                      2021.10.0          pyhd3eb1b0_0    defaults
    dask-core                 2021.10.0          pyhd3eb1b0_0    defaults
    dataclasses               0.8                pyh6d0b6a4_7    defaults
    dbus                      1.13.18              hb2f20db_0    defaults
    debugpy                   1.4.1            py39h295c915_0    defaults
    decorator                 5.1.0              pyhd3eb1b0_0    defaults
    defusedxml                0.7.1              pyhd3eb1b0_0    defaults
    diff-match-patch          20200713           pyhd3eb1b0_0    defaults
    distributed               2021.10.0        py39h06a4308_0    defaults
    docutils                  0.17.1           py39h06a4308_1    defaults
    entrypoints               0.3              py39h06a4308_0    defaults
    et_xmlfile                1.1.0            py39h06a4308_0    defaults
    expat                     2.4.1                h2531618_2    defaults
    fastcache                 1.1.0            py39he8ac12f_0    defaults
    filelock                  3.3.1              pyhd3eb1b0_1    defaults
    flake8                    3.9.2              pyhd3eb1b0_0    defaults
    flask                     1.1.2              pyhd3eb1b0_0    defaults
    fontconfig                2.13.1               h6c09931_0    defaults
    fonttools                 4.25.0             pyhd3eb1b0_0    defaults
    freetype                  2.10.4               h5ab3b9f_0    defaults
    fribidi                   1.0.10               h7b6447c_0    defaults
    fsspec                    2021.8.1           pyhd3eb1b0_0    defaults
    future                    0.18.2           py39h06a4308_1    defaults
    get_terminal_size         1.0.0                haa9412d_0    defaults
    gevent                    21.8.0           py39h7f8727e_1    defaults
    giflib                    5.2.1                h7b6447c_0    defaults
    glib                      2.69.1               h5202010_0    defaults
    glob2                     0.7                pyhd3eb1b0_0    defaults
    gmp                       6.2.1                h2531618_2    defaults
    gmpy2                     2.0.8            py39h8083e48_3    defaults
    graphite2                 1.3.14               h23475e2_0    defaults
    greenlet                  1.1.1            py39h295c915_0    defaults
    gst-plugins-base          1.14.0               h8213a91_2    defaults
    gstreamer                 1.14.0               h28cd5cc_2    defaults
    h5py                      3.3.0            py39h930cdd6_0    defaults
    harfbuzz                  2.8.1                h6f93f22_0    defaults
    hdf5                      1.10.6               hb1b8bf9_0    defaults
    heapdict                  1.0.1              pyhd3eb1b0_0    defaults
    html5lib                  1.1                pyhd3eb1b0_0    defaults
    icu                       58.2                 he6710b0_3    defaults
    idna                      3.2                pyhd3eb1b0_0    defaults
    imagecodecs               2021.8.26        py39h4cda21f_0    defaults
    imageio                   2.9.0              pyhd3eb1b0_0    defaults
    imagesize                 1.2.0              pyhd3eb1b0_0    defaults
    importlib-metadata        4.8.1            py39h06a4308_0    defaults
    importlib_metadata        4.8.1                hd3eb1b0_0    defaults
    inflection                0.5.1            py39h06a4308_0    defaults
    iniconfig                 1.1.1              pyhd3eb1b0_0    defaults
    intel-openmp              2021.4.0          h06a4308_3561    defaults
    intervaltree              3.1.0              pyhd3eb1b0_0    defaults
    ipykernel                 6.4.1            py39h06a4308_1    defaults
    ipython                   7.29.0           py39hb070fc8_0    defaults
    ipython_genutils          0.2.0              pyhd3eb1b0_1    defaults
    ipywidgets                7.6.5              pyhd3eb1b0_1    defaults
    isort                     5.9.3              pyhd3eb1b0_0    defaults
    itsdangerous              2.0.1              pyhd3eb1b0_0    defaults
    jbig                      2.1                  hdba287a_0    defaults
    jdcal                     1.4.1              pyhd3eb1b0_0    defaults
    jedi                      0.18.0           py39h06a4308_1    defaults
    jeepney                   0.7.1              pyhd3eb1b0_0    defaults
    jinja2                    2.11.3             pyhd3eb1b0_0    defaults
    jinja2-time               0.2.0              pyhd3eb1b0_2    defaults
    joblib                    1.1.0              pyhd3eb1b0_0    defaults
    jpeg                      9d                   h7f8727e_0    defaults
    json5                     0.9.6              pyhd3eb1b0_0    defaults
    jsonschema                3.2.0              pyhd3eb1b0_2    defaults
    jupyter                   1.0.0            py39h06a4308_7    defaults
    jupyter_client            6.1.12             pyhd3eb1b0_0    defaults
    jupyter_console           6.4.0              pyhd3eb1b0_0    defaults
    jupyter_core              4.8.1            py39h06a4308_0    defaults
    jupyter_server            1.4.1            py39h06a4308_0    defaults
    jupyterlab                3.2.1              pyhd3eb1b0_1    defaults
    jupyterlab_pygments       0.1.2                      py_0    defaults
    jupyterlab_server         2.8.2              pyhd3eb1b0_0    defaults
    jupyterlab_widgets        1.0.0              pyhd3eb1b0_1    defaults
    jxrlib                    1.1                  h7b6447c_2    defaults
    keyring                   23.1.0           py39h06a4308_0    defaults
    kiwisolver                1.3.1            py39h2531618_0    defaults
    krb5                      1.19.2               hac12032_0    defaults
    lazy-object-proxy         1.6.0            py39h27cfd23_0    defaults
    lcms2                     2.12                 h3be6417_0    defaults
    ld_impl_linux-64          2.35.1               h7274673_9    defaults
    lerc                      3.0                  h295c915_0    defaults
    libaec                    1.0.4                he6710b0_1    defaults
    libarchive                3.4.2                h62408e4_0    defaults
    libcurl                   7.78.0               h0b77cf5_0    defaults
    libdeflate                1.8                  h7f8727e_5    defaults
    libedit                   3.1.20210910         h7f8727e_0    defaults
    libev                     4.33                 h7f8727e_1    defaults
    libffi                    3.3                  he6710b0_2    defaults
    libgcc-ng                 9.3.0               h5101ec6_17    defaults
    libgfortran-ng            7.5.0               ha8ba4b0_17    defaults
    libgfortran4              7.5.0               ha8ba4b0_17    defaults
    libgomp                   9.3.0               h5101ec6_17    defaults
    liblief                   0.10.1               h2531618_1    defaults
    libllvm11                 11.1.0               h3826bc1_0    defaults
    libnghttp2                1.41.0               hf8bcb03_2    defaults
    libpng                    1.6.37               hbc83047_0    defaults
    libsodium                 1.0.18               h7b6447c_0    defaults
    libspatialindex           1.9.3                h2531618_0    defaults
    libssh2                   1.9.0                h1ba5d50_1    defaults
    libstdcxx-ng              9.3.0               hd4cf53a_17    defaults
    libtiff                   4.2.0                h85742a9_0    defaults
    libtool                   2.4.6             h7b6447c_1005    defaults
    libuuid                   1.0.3                h7f8727e_2    defaults
    libuv                     1.40.0               h7b6447c_0    defaults
    libwebp                   1.2.0                h89dd481_0    defaults
    libwebp-base              1.2.0                h27cfd23_0    defaults
    libxcb                    1.14                 h7b6447c_0    defaults
    libxml2                   2.9.12               h03d6c58_0    defaults
    libxslt                   1.1.34               hc22bd24_0    defaults
    libzopfli                 1.0.3                he6710b0_0    defaults
    llvmlite                  0.37.0           py39h295c915_1    defaults
    locket                    0.2.1            py39h06a4308_1    defaults
    lxml                      4.6.3            py39h9120a33_0    defaults
    lz4-c                     1.9.3                h295c915_1    defaults
    lzo                       2.10                 h7b6447c_2    defaults
    markupsafe                1.1.1            py39h27cfd23_0    defaults
    matplotlib                3.4.3            py39h06a4308_0    defaults
    matplotlib-base           3.4.3            py39hbbc1b5f_0    defaults
    matplotlib-inline         0.1.2              pyhd3eb1b0_2    defaults
    mccabe                    0.6.1            py39h06a4308_1    defaults
    mistune                   0.8.4           py39h27cfd23_1000    defaults
    mkl                       2021.4.0           h06a4308_640    defaults
    mkl-service               2.4.0            py39h7f8727e_0    defaults
    mkl_fft                   1.3.1            py39hd3c417c_0    defaults
    mkl_random                1.2.2            py39h51133e4_0    defaults
    mock                      4.0.3              pyhd3eb1b0_0    defaults
    more-itertools            8.10.0             pyhd3eb1b0_0    defaults
    mpc                       1.1.0                h10f8cd9_1    defaults
    mpfr                      4.0.2                hb69a4c5_1    defaults
    mpi                       1.0                       mpich    defaults
    mpich                     3.3.2                hc856adb_0    defaults
    mpmath                    1.2.1            py39h06a4308_0    defaults
    msgpack-python            1.0.2            py39hff7bd54_1    defaults
    multipledispatch          0.6.0            py39h06a4308_0    defaults
    munkres                   1.1.4                      py_0    defaults
    mypy_extensions           0.4.3            py39h06a4308_0    defaults
    navigator-updater         0.2.1            py39h06a4308_0    defaults
    nbclassic                 0.2.6              pyhd3eb1b0_0    defaults
    nbclient                  0.5.3              pyhd3eb1b0_0    defaults
    nbconvert                 6.1.0            py39h06a4308_0    defaults
    nbformat                  5.1.3              pyhd3eb1b0_0    defaults
    ncurses                   6.3                  heee7806_1    defaults
    nest-asyncio              1.5.1              pyhd3eb1b0_0    defaults
    networkx                  2.6.3              pyhd3eb1b0_0    defaults
    nltk                      3.6.5              pyhd3eb1b0_0    defaults
    nose                      1.3.7           pyhd3eb1b0_1006    defaults
    notebook                  6.4.5            py39h06a4308_0    defaults
    numba                     0.54.1           py39h51133e4_0    defaults
    numexpr                   2.7.3            py39h22e1b3c_1    defaults
    numpy                     1.20.3           py39hf144106_0    defaults
    numpy-base                1.20.3           py39h74d4b33_0    defaults
    numpydoc                  1.1.0              pyhd3eb1b0_1    defaults
    olefile                   0.46               pyhd3eb1b0_0    defaults
    openjpeg                  2.4.0                h3ad879b_0    defaults
    openpyxl                  3.0.9              pyhd3eb1b0_0    defaults
    openssl                   1.1.1l               h7f8727e_0    defaults
    packaging                 21.0               pyhd3eb1b0_0    defaults
    pandas                    1.3.4            py39h8c16a72_0    defaults
    pandocfilters             1.4.3            py39h06a4308_1    defaults
    pango                     1.45.3               hd140c19_0    defaults
    parso                     0.8.2              pyhd3eb1b0_0    defaults
    partd                     1.2.0              pyhd3eb1b0_0    defaults
    patchelf                  0.13                 h295c915_0    defaults
    path                      16.0.0           py39h06a4308_0    defaults
    path.py                   12.5.0               hd3eb1b0_0    defaults
    pathlib2                  2.3.6            py39h06a4308_2    defaults
    pathspec                  0.7.0                      py_0    defaults
    patsy                     0.5.2            py39h06a4308_0    defaults
    pcre                      8.45                 h295c915_0    defaults
    pep8                      1.7.1            py39h06a4308_0    defaults
    pexpect                   4.8.0              pyhd3eb1b0_3    defaults
    pickleshare               0.7.5           pyhd3eb1b0_1003    defaults
    pillow                    8.4.0            py39h5aabda8_0    defaults
    pip                       21.2.4           py39h06a4308_0    defaults
    pixman                    0.40.0               h7f8727e_1    defaults
    pkginfo                   1.7.1            py39h06a4308_0    defaults
    pluggy                    0.13.1           py39h06a4308_0    defaults
    ply                       3.11             py39h06a4308_0    defaults
    poyo                      0.5.0              pyhd3eb1b0_0    defaults
    prometheus_client         0.11.0             pyhd3eb1b0_0    defaults
    prompt-toolkit            3.0.20             pyhd3eb1b0_0    defaults
    prompt_toolkit            3.0.20               hd3eb1b0_0    defaults
    psutil                    5.8.0            py39h27cfd23_1    defaults
    ptyprocess                0.7.0              pyhd3eb1b0_2    defaults
    py                        1.10.0             pyhd3eb1b0_0    defaults
    py-lief                   0.10.1           py39h2531618_1    defaults
    pycodestyle               2.7.0              pyhd3eb1b0_0    defaults
    pycosat                   0.6.3            py39h27cfd23_0    defaults
    pycparser                 2.20                       py_2    defaults
    pycurl                    7.44.1           py39h8f2d780_1    defaults
    pydocstyle                6.1.1              pyhd3eb1b0_0    defaults
    pyerfa                    2.0.0            py39h27cfd23_0    defaults
    pyflakes                  2.3.1              pyhd3eb1b0_0    defaults
    pygments                  2.10.0             pyhd3eb1b0_0    defaults
    pyjwt                     2.1.0            py39h06a4308_0    defaults
    pylint                    2.9.6            py39h06a4308_1    defaults
    pyls-spyder               0.4.0              pyhd3eb1b0_0    defaults
    pyodbc                    4.0.31           py39h295c915_0    defaults
    pyopenssl                 21.0.0             pyhd3eb1b0_1    defaults
    pyparsing                 3.0.4              pyhd3eb1b0_0    defaults
    pyqt                      5.9.2            py39h2531618_6    defaults
    pyrsistent                0.18.0           py39heee7806_0    defaults
    pysocks                   1.7.1            py39h06a4308_0    defaults
    pytables                  3.6.1            py39h77479fe_1    defaults
    pytest                    6.2.4            py39h06a4308_2    defaults
    python                    3.9.7                h12debd9_1    defaults
    python-dateutil           2.8.2              pyhd3eb1b0_0    defaults
    python-libarchive-c       2.9                pyhd3eb1b0_1    defaults
    python-lsp-black          1.0.0              pyhd3eb1b0_0    defaults
    python-lsp-jsonrpc        1.0.0              pyhd3eb1b0_0    defaults
    python-lsp-server         1.2.4              pyhd3eb1b0_0    defaults
    python-slugify            5.0.2              pyhd3eb1b0_0    defaults
    pytz                      2021.3             pyhd3eb1b0_0    defaults
    pywavelets                1.1.1            py39h6323ea4_4    defaults
    pyxdg                     0.27               pyhd3eb1b0_0    defaults
    pyyaml                    6.0              py39h7f8727e_1    defaults
    pyzmq                     22.2.1           py39h295c915_1    defaults
    qdarkstyle                3.0.2              pyhd3eb1b0_0    defaults
    qstylizer                 0.1.10             pyhd3eb1b0_0    defaults
    qt                        5.9.7                h5867ecd_1    defaults
    qtawesome                 1.0.2              pyhd3eb1b0_0    defaults
    qtconsole                 5.1.1              pyhd3eb1b0_0    defaults
    qtpy                      1.10.0             pyhd3eb1b0_0    defaults
    readline                  8.1                  h27cfd23_0    defaults
    regex                     2021.8.3         py39h7f8727e_0    defaults
    requests                  2.26.0             pyhd3eb1b0_0    defaults
    ripgrep                   12.1.1                        0    defaults
    rope                      0.19.0             pyhd3eb1b0_0    defaults
    rtree                     0.9.7            py39h06a4308_1    defaults
    ruamel_yaml               0.15.100         py39h27cfd23_0    defaults
    scikit-image              0.18.3           py39h51133e4_0    defaults
    scikit-learn              0.24.2           py39ha9443f7_0    defaults
    scikit-learn-intelex      2021.3.0         py39h06a4308_0    defaults
    scipy                     1.7.1            py39h292c36d_2    defaults
    seaborn                   0.11.2             pyhd3eb1b0_0    defaults
    secretstorage             3.3.1            py39h06a4308_0    defaults
    send2trash                1.8.0              pyhd3eb1b0_1    defaults
    setuptools                58.0.4           py39h06a4308_0    defaults
    simplegeneric             0.8.1            py39h06a4308_2    defaults
    singledispatch            3.7.0           pyhd3eb1b0_1001    defaults
    sip                       4.19.13          py39h2531618_0    defaults
    six                       1.16.0             pyhd3eb1b0_0    defaults
    snappy                    1.1.8                he6710b0_0    defaults
    sniffio                   1.2.0            py39h06a4308_1    defaults
    snowballstemmer           2.1.0              pyhd3eb1b0_0    defaults
    sortedcollections         2.1.0              pyhd3eb1b0_0    defaults
    sortedcontainers          2.4.0              pyhd3eb1b0_0    defaults
    soupsieve                 2.2.1              pyhd3eb1b0_0    defaults
    sphinx                    4.2.0              pyhd3eb1b0_1    defaults
    sphinxcontrib             1.0              py39h06a4308_1    defaults
    sphinxcontrib-applehelp   1.0.2              pyhd3eb1b0_0    defaults
    sphinxcontrib-devhelp     1.0.2              pyhd3eb1b0_0    defaults
    sphinxcontrib-htmlhelp    2.0.0              pyhd3eb1b0_0    defaults
    sphinxcontrib-jsmath      1.0.1              pyhd3eb1b0_0    defaults
    sphinxcontrib-qthelp      1.0.3              pyhd3eb1b0_0    defaults
    sphinxcontrib-serializinghtml 1.1.5              pyhd3eb1b0_0    defaults
    sphinxcontrib-websupport  1.2.4                      py_0    defaults
    spyder                    5.1.5            py39h06a4308_1    defaults
    spyder-kernels            2.1.3            py39h06a4308_0    defaults
    sqlalchemy                1.4.22           py39h7f8727e_0    defaults
    sqlite                    3.36.0               hc218d9a_0    defaults
    statsmodels               0.12.2           py39h27cfd23_0    defaults
    sympy                     1.9              py39h06a4308_0    defaults
    tbb                       2021.4.0             hd09550d_0    defaults
    tbb4py                    2021.4.0         py39hd09550d_0    defaults
    tblib                     1.7.0              pyhd3eb1b0_0    defaults
    terminado                 0.9.4            py39h06a4308_0    defaults
    testpath                  0.5.0              pyhd3eb1b0_0    defaults
    text-unidecode            1.3                pyhd3eb1b0_0    defaults
    textdistance              4.2.1              pyhd3eb1b0_0    defaults
    threadpoolctl             2.2.0              pyh0d69192_0    defaults
    three-merge               0.1.1              pyhd3eb1b0_0    defaults
    tifffile                  2021.7.2           pyhd3eb1b0_2    defaults
    tinycss                   0.4             pyhd3eb1b0_1002    defaults
    tk                        8.6.11               h1ccaba5_0    defaults
    toml                      0.10.2             pyhd3eb1b0_0    defaults
    toolz                     0.11.1             pyhd3eb1b0_0    defaults
    tornado                   6.1              py39h27cfd23_0    defaults
    tqdm                      4.62.3             pyhd3eb1b0_1    defaults
    traitlets                 5.1.0              pyhd3eb1b0_0    defaults
    typed-ast                 1.4.3            py39h7f8727e_1    defaults
    typing_extensions         3.10.0.2           pyh06a4308_0    defaults
    tzdata                    2021e                hda174b7_0    defaults
    ujson                     4.0.2            py39h2531618_0    defaults
    unicodecsv                0.14.1           py39h06a4308_0    defaults
    unidecode                 1.2.0              pyhd3eb1b0_0    defaults
    unixodbc                  2.3.9                h7b6447c_0    defaults
    urllib3                   1.26.7             pyhd3eb1b0_0    defaults
    watchdog                  2.1.3            py39h06a4308_0    defaults
    wcwidth                   0.2.5              pyhd3eb1b0_0    defaults
    webencodings              0.5.1            py39h06a4308_1    defaults
    werkzeug                  2.0.2              pyhd3eb1b0_0    defaults
    wheel                     0.37.0             pyhd3eb1b0_1    defaults
    whichcraft                0.6.1              pyhd3eb1b0_0    defaults
    widgetsnbextension        3.5.1            py39h06a4308_0    defaults
    wrapt                     1.12.1           py39he8ac12f_1    defaults
    wurlitzer                 2.1.1            py39h06a4308_0    defaults
    xlrd                      2.0.1              pyhd3eb1b0_0    defaults
    xlsxwriter                3.0.1              pyhd3eb1b0_0    defaults
    xlwt                      1.3.0            py39h06a4308_0    defaults
    xmltodict                 0.12.0             pyhd3eb1b0_0    defaults
    xz                        5.2.5                h7b6447c_0    defaults
    yaml                      0.2.5                h7b6447c_0    defaults
    yapf                      0.31.0             pyhd3eb1b0_0    defaults
    zeromq                    4.3.4                h2531618_0    defaults
    zfp                       0.5.5                h2531618_6    defaults
    zict                      2.0.0              pyhd3eb1b0_0    defaults
    zipp                      3.6.0              pyhd3eb1b0_0    defaults
    zlib                      1.2.11               h7b6447c_3    defaults
    zope                      1.0              py39h06a4308_1    defaults
    zope.event                4.5.0            py39h06a4308_0    defaults
    zope.interface            5.4.0            py39h7f8727e_0    defaults
    zstd                      1.4.9                haebb681_0    defaults
    
    opened by Daniel-Ri 2
  • OSError: /apply/anaconda3/envs/Barber_shop/lib/python3.7/site-packages/torch/lib/../../../../libcublas.so.11: undefined symbol: free_gemm_select, version libcublasLt.so.11

    OSError: /apply/anaconda3/envs/Barber_shop/lib/python3.7/site-packages/torch/lib/../../../../libcublas.so.11: undefined symbol: free_gemm_select, version libcublasLt.so.11

    python main.py --im_path1 1.png --im_path2 2.png --im_path3 3.png --sign realistic --smooth 7 Traceback (most recent call last): File "main.py", line 3, in import torch File "/apply/anaconda3/envs/Barber_shop/lib/python3.7/site-packages/torch/init.py", line 189, in _load_global_deps() File "/apply/anaconda3/envs/Barber_shop/lib/python3.7/site-packages/torch/init.py", line 142, in _load_global_deps ctypes.CDLL(lib_path, mode=ctypes.RTLD_GLOBAL) File "/apply/anaconda3/envs/Barber_shop/lib/python3.7/ctypes/init.py", line 364, in init self._handle = _dlopen(self._name, mode) OSError: /apply/anaconda3/envs/Barber_shop/lib/python3.7/site-packages/torch/lib/../../../../libcublas.so.11: undefined symbol: free_gemm_select, version libcublasLt.so.11

    opened by 805094591 1
  • Can't detect face in aligne_face.py

    Can't detect face in aligne_face.py

    I'm trying to use Barbershop with a custom image. The image shot is HQ, jpg format and it's very similar to the one provided by default in the /unprocessed folder (90.jpg).
    The problem is that the detector is not able to find the face in it, i checked in:

    def get_landmark(filepath,predictor):
        """get landmark with dlib
        :return: np.array shape=(68, 2)"""
        
        detector = dlib.get_frontal_face_detector()
        img = dlib.load_rgb_image(filepath)
        print("img",img)
        dets = detector(img, 1)
        print("dets",dets)  
    
    img [[[176 177 182]
      [176 177 182]
      [177 178 183]
      ...
      [ 67  69  68]
      [100 102 101]
      [125 127 126]]
    
     [[177 178 183]
      [177 178 183]
      [177 178 183]
      ...
      [ 62  64  63]
      [104 106 105]
      [126 128 127]]
    
     [[178 179 184]
      [178 179 184]
      [178 179 184]
      ...
      [ 77  79  78]
      [114 116 115]
      [116 118 117]]
    
     ...
    
     [[168 168 166]
      [168 168 166]
      [169 169 167]
      ...
      [170 121  88]
      [170 121  88]
      [170 121  88]]
    
     [[168 168 166]
      [168 168 166]
      [169 169 167]
      ...
      [172 123  90]
      [172 123  90]
      [172 123  90]]
    
     [[168 168 166]
      [168 168 166]
      [169 169 167]
      ...
      [173 124  91]
      [173 124  91]
      [171 122  89]]]
    dets rectangles[]  
    

    As you can see rectangles is empty, i tried to set dets = detector(img, 1) and dets = detector(img, 0) with no avail, how can i try to make it work with a custom picture?
    Thanks in advance

    opened by Mpal7 1
  • How can I manually edit masks?

    How can I manually edit masks?

    In some complex situations,this model may not work so well.I noticed that there is an approach introduced in the paper about "MANUALLY EDITING MASKS".But I haven't found more details about how to achieve it. For instance,how to enter the arguments or edit the masks.

    opened by Kndy666 0
  • Minimal Requirements for inference.

    Minimal Requirements for inference.

    Hi, I thought it would be useful to install the required packages except of the additional ones.

    requirements.txt

    dlib
    gdown
    scikit-image
    IPython
    opencv-python
    

    Commands to setup project

    git clone https://github.com/ZPdesu/Barbershop.git
    cd Barbershop
    
    conda create -n barbershop python=3.10 -y
    conda activate barbershop
    
    # For CPU
    pip install torch torchvision torchaudio
    
    # For CUDA v11.6 (for v10.2 and v11.3 don't use '-c conda-forge')
    conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge
    
    pip install -r requirements.txt
    
    opened by muhammad-ahmed-ghani 2
  • How to get output results?

    How to get output results?

    I have cloned the repository and installed all the dependencies. I have two images, img_1, and img_2. I want to swap img_1 hairs with img_2 hairs, how can I do it? I run the first main.py command, but couldn't find the results. If somebody can point out what I am missing? @ZPdesu

    opened by RAJA-PARIKSHAT 1
  • Little question about cal_loss

    Little question about cal_loss

    Hi, Thank you for this amazing works. I have a little question about this funtion at this line

    def cal_loss(self, im_dict, latent_in, latent_F=None, F_init=None):

    In both "invert_images_in_FS" & "invert_images_in_w", it seems that you didn't pass "latent_F" & "F_init" in cal_loss to do the computation below:

       if latent_F is not None and F_init is not None:
          l_F = self.net.cal_l_F(latent_F, F_init)
           loss_dic['l_F'] = l_F
           loss += l_F
    

    I wonder that should we still calaulate l_F loss in somewhere? or I misunderstanding somethings?

    BR, Ziv

    opened by zivzone 0
  • Model does not correctly model changes to facial hair.

    Model does not correctly model changes to facial hair.

    I tested an image of myself, cleanshaven, and supplied it with the image of another man with a large beard and facing approximately the same direction. However, while the AI did correctly interpolate the hair atop my head, it did not supply me with the other man's beard.

    opened by lifebound 0
Owner
Peihao Zhu
CS PhD at KAUST
Peihao Zhu
The implemetation of Dynamic Nerual Garments proposed in Siggraph Asia 2021

DynamicNeuralGarments Introduction This repository contains the implemetation of Dynamic Nerual Garments proposed in Siggraph Asia 2021. ./GarmentMoti

null 42 Dec 27, 2022
Face Identity Disentanglement via Latent Space Mapping [SIGGRAPH ASIA 2020]

Face Identity Disentanglement via Latent Space Mapping Description Official Implementation of the paper Face Identity Disentanglement via Latent Space

null 150 Dec 7, 2022
A code repository associated with the paper A Benchmark for Rough Sketch Cleanup by Chuan Yan, David Vanderhaeghe, and Yotam Gingold from SIGGRAPH Asia 2020.

A Benchmark for Rough Sketch Cleanup This is the code repository associated with the paper A Benchmark for Rough Sketch Cleanup by Chuan Yan, David Va

null 33 Dec 18, 2022
Implementation for "Manga Filling Style Conversion with Screentone Variational Autoencoder" (SIGGRAPH ASIA 2020 issue)

Manga Filling with ScreenVAE SIGGRAPH ASIA 2020 | Project Website | BibTex This repository is for ScreenVAE introduced in the following paper "Manga F

null 30 Dec 24, 2022
FuseDream: Training-Free Text-to-Image Generationwith Improved CLIP+GAN Space OptimizationFuseDream: Training-Free Text-to-Image Generationwith Improved CLIP+GAN Space Optimization

FuseDream This repo contains code for our paper (paper link): FuseDream: Training-Free Text-to-Image Generation with Improved CLIP+GAN Space Optimizat

XCL 191 Dec 31, 2022
Temporally Coherent GAN SIGGRAPH project.

TecoGAN This repository contains source code and materials for the TecoGAN project, i.e. code for a TEmporally COherent GAN for video super-resolution

Duc Linh Nguyen 2 Jan 18, 2022
ObjectDrawer-ToolBox: a graphical image annotation tool to generate ground plane masks for a 3D object reconstruction system

ObjectDrawer-ToolBox is a graphical image annotation tool to generate ground plane masks for a 3D object reconstruction system, Object Drawer.

null 77 Jan 5, 2023
DR-GAN: Automatic Radial Distortion Rectification Using Conditional GAN in Real-Time

DR-GAN: Automatic Radial Distortion Rectification Using Conditional GAN in Real-Time Introduction This is official implementation for DR-GAN (IEEE TCS

Kang Liao 18 Dec 23, 2022
Tools to create pixel-wise object masks, bounding box labels (2D and 3D) and 3D object model (PLY triangle mesh) for object sequences filmed with an RGB-D camera.

Tools to create pixel-wise object masks, bounding box labels (2D and 3D) and 3D object model (PLY triangle mesh) for object sequences filmed with an RGB-D camera. This project prepares training and testing data for various deep learning projects such as 6D object pose estimation projects singleshotpose, as well as object detection and instance segmentation projects.

null 305 Dec 16, 2022
PyTorch implementations for our SIGGRAPH 2021 paper: Editable Free-viewpoint Video Using a Layered Neural Representation.

st-nerf We provide PyTorch implementations for our paper: Editable Free-viewpoint Video Using a Layered Neural Representation SIGGRAPH 2021 Jiakai Zha

Diplodocus 258 Jan 2, 2023
Multiple paper open-source codes of the Microsoft Research Asia DKI group

?? Paper Code Collection (MSRA DKI Group) This repo hosts multiple open-source codes of the Microsoft Research Asia DKI Group. You could find the corr

Microsoft 249 Jan 8, 2023
General Virtual Sketching Framework for Vector Line Art (SIGGRAPH 2021)

General Virtual Sketching Framework for Vector Line Art - SIGGRAPH 2021 Paper | Project Page Outline Dependencies Testing with Trained Weights Trainin

Haoran MO 118 Dec 27, 2022
Implementation for "Seamless Manga Inpainting with Semantics Awareness" (SIGGRAPH 2021 issue)

Seamless Manga Inpainting with Semantics Awareness [SIGGRAPH 2021](To appear) | Project Website | BibTex Introduction: Manga inpainting fills up the d

null 101 Jan 1, 2023
Supplementary code for SIGGRAPH 2021 paper: Discovering Diverse Athletic Jumping Strategies

SIGGRAPH 2021: Discovering Diverse Athletic Jumping Strategies project page paper demo video Prerequisites Important Notes We suspect there are bugs i

null 54 Dec 6, 2022
Official implementation of "StyleCariGAN: Caricature Generation via StyleGAN Feature Map Modulation" (SIGGRAPH 2021)

StyleCariGAN in PyTorch Official implementation of StyleCariGAN:Caricature Generation via StyleGAN Feature Map Modulation in PyTorch Requirements PyTo

PeterZhouSZ 49 Oct 31, 2022
Code for HodgeNet: Learning Spectral Geometry on Triangle Meshes, in SIGGRAPH 2021.

HodgeNet | Webpage | Paper | Video HodgeNet: Learning Spectral Geometry on Triangle Meshes Dmitriy Smirnov, Justin Solomon SIGGRAPH 2021 Set-up To ins

Dima Smirnov 61 Nov 27, 2022
Tracing Versus Freehand for Evaluating Computer-Generated Drawings (SIGGRAPH 2021)

Tracing Versus Freehand for Evaluating Computer-Generated Drawings (SIGGRAPH 2021) Zeyu Wang, Sherry Qiu, Nicole Feng, Holly Rushmeier, Leonard McMill

Zach Zeyu Wang 23 Dec 9, 2022
Code for the SIGGRAPH 2021 paper "Consistent Depth of Moving Objects in Video".

Consistent Depth of Moving Objects in Video This repository contains training code for the SIGGRAPH 2021 paper "Consistent Depth of Moving Objects in

Google 203 Jan 5, 2023
ManipNet: Neural Manipulation Synthesis with a Hand-Object Spatial Representation - SIGGRAPH 2021

ManipNet: Neural Manipulation Synthesis with a Hand-Object Spatial Representation - SIGGRAPH 2021 Dataset Code Demos Authors: He Zhang, Yuting Ye, Tak

HE ZHANG 194 Dec 6, 2022