[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#59607] [PATCH 7/8] gnu: Add python-gfpgan.
From: |
Liliana Marie Prikler |
Subject: |
[bug#59607] [PATCH 7/8] gnu: Add python-gfpgan. |
Date: |
Sat, 26 Nov 2022 11:46:23 +0100 |
* gnu/packages/patches/python-gfpgan-unfuse-leaky-relu.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it here.
* gnu/packages/machine-learning.scm (python-gfpgan): New variable.
---
gnu/local.mk | 1 +
gnu/packages/machine-learning.scm | 71 +++++++++++++++++++
.../python-gfpgan-unfuse-leaky-relu.patch | 57 +++++++++++++++
3 files changed, 129 insertions(+)
create mode 100644 gnu/packages/patches/python-gfpgan-unfuse-leaky-relu.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 8dd1abe07a..9312bec6d4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1729,6 +1729,7 @@ dist_patch_DATA =
\
%D%/packages/patches/python-execnet-read-only-fix.patch \
%D%/packages/patches/python-fixtures-remove-monkeypatch-test.patch \
%D%/packages/patches/python-flask-restful-werkzeug-compat.patch \
+ %D%/packages/patches/python-gfpgan-unfuse-leaky-relu.patch \
%D%/packages/patches/python-ipython-documentation-chars.patch \
%D%/packages/patches/python-ipython-documentation-repro.patch \
%D%/packages/patches/python-keras-integration-test.patch \
diff --git a/gnu/packages/machine-learning.scm
b/gnu/packages/machine-learning.scm
index 6116834578..73263962f5 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -859,6 +859,77 @@ (define-public python-facexlib
license:asl2.0
license:expat))))
+(define-public python-gfpgan
+ (package
+ (name "python-gfpgan")
+ (version "1.3.8")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/TencentARC/GFPGAN")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (patches (search-patches
+ "python-gfpgan-unfuse-leaky-relu.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ #~(begin (substitute* (find-files "." "\\.py$")
+ (("\\.cuda\\(\\)") "")
+ (("torch\\.cuda\\.is_available\\(\\)") "False")
+ (("'cuda' if False else ") "")
+ (("'cuda'") "'cpu'"))))
+ (sha256
+ (base32
+ "1s2wn3r4h1if35yvacaihk2r9fswdh16nxgh229g07p2562pgcky"))))
+ (build-system python-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-api
+ (lambda _
+ (substitute* (find-files "." "\\.py$")
+ (("from basicsr\\.losses\\.losses import .*")
+ "import basicsr.losses\n")
+ (("GANLoss")
+ "basicsr.losses.gan_loss.GANLoss")
+ (("(L1|Perceptual)Loss" loss)
+ (string-append "basicsr.losses.basic_loss." loss)))))
+ (add-after 'unpack 'fix-requirements
+ (lambda _
+ (substitute* "requirements.txt"
+ (("opencv-python") "") ; installed without egg-info
+ (("tb-nightly") ""))))
+ (add-before 'check 'delete-failing-tests
+ (lambda _
+ ;; XXX: Possibly genuine errors
+ (delete-file "tests/test_ffhq_degradation_dataset.py")
+ (delete-file "tests/test_gfpgan_model.py")
+ ;; Test requires pretrained model.
+ (delete-file "tests/test_utils.py")))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest" "-vv")))))))
+ (propagated-inputs (list opencv
+ python-basicsr
+ python-facexlib
+ python-lmdb
+ python-numpy
+ python-pyyaml
+ python-scipy
+ python-pytorch
+ python-torchvision
+ python-tqdm
+ python-yapf))
+ (native-inputs (list python-cython python-pytest))
+ (home-page "https://github.com/TencentARC/GFPGAN")
+ (synopsis "Restore images of faces")
+ (description "GFPGAN uses generative adversarial networks to remove
+degradations, such as blur, noise, or compression artifacts, from facial
+images.")
+ (license license:asl2.0)))
+
(define-public ncnn
(package
(name "ncnn")
diff --git a/gnu/packages/patches/python-gfpgan-unfuse-leaky-relu.patch
b/gnu/packages/patches/python-gfpgan-unfuse-leaky-relu.patch
new file mode 100644
index 0000000000..cd09312676
--- /dev/null
+++ b/gnu/packages/patches/python-gfpgan-unfuse-leaky-relu.patch
@@ -0,0 +1,57 @@
+diff --git a/gfpgan/archs/gfpganv1_arch.py b/gfpgan/archs/gfpganv1_arch.py
+index eaf3162..34ae5a2 100644
+--- a/gfpgan/archs/gfpganv1_arch.py
++++ b/gfpgan/archs/gfpganv1_arch.py
+@@ -3,7 +3,6 @@ import random
+ import torch
+ from basicsr.archs.stylegan2_arch import (ConvLayer, EqualConv2d,
EqualLinear, ResBlock, ScaledLeakyReLU,
+ StyleGAN2Generator)
+-from basicsr.ops.fused_act import FusedLeakyReLU
+ from basicsr.utils.registry import ARCH_REGISTRY
+ from torch import nn
+ from torch.nn import functional as F
+@@ -170,10 +169,7 @@ class ConvUpLayer(nn.Module):
+
+ # activation
+ if activate:
+- if bias:
+- self.activation = FusedLeakyReLU(out_channels)
+- else:
+- self.activation = ScaledLeakyReLU(0.2)
++ self.activation = ScaledLeakyReLU(0.2)
+ else:
+ self.activation = None
+
+diff --git a/gfpgan/archs/stylegan2_bilinear_arch.py
b/gfpgan/archs/stylegan2_bilinear_arch.py
+index 1342ee3..5cffb44 100644
+--- a/gfpgan/archs/stylegan2_bilinear_arch.py
++++ b/gfpgan/archs/stylegan2_bilinear_arch.py
+@@ -1,7 +1,6 @@
+ import math
+ import random
+ import torch
+-from basicsr.ops.fused_act import FusedLeakyReLU, fused_leaky_relu
+ from basicsr.utils.registry import ARCH_REGISTRY
+ from torch import nn
+ from torch.nn import functional as F
+@@ -190,7 +189,7 @@ class StyleConv(nn.Module):
+ sample_mode=sample_mode,
+ interpolation_mode=interpolation_mode)
+ self.weight = nn.Parameter(torch.zeros(1)) # for noise injection
+- self.activate = FusedLeakyReLU(out_channels)
++ self.activate = ScaledLeakyReLU()
+
+ def forward(self, x, style, noise=None):
+ # modulate
+@@ -568,10 +567,7 @@ class ConvLayer(nn.Sequential):
+ and not activate))
+ # activation
+ if activate:
+- if bias:
+- layers.append(FusedLeakyReLU(out_channels))
+- else:
+- layers.append(ScaledLeakyReLU(0.2))
++ layers.append(ScaledLeakyReLU(0.2))
+
+ super(ConvLayer, self).__init__(*layers)
+
--
2.38.1
- [bug#59607] [PATCH 0/8] Upscale your anime pictures, now with 99% less malware, Liliana Marie Prikler, 2022/11/26
- [bug#59607] [PATCH 1/8] gnu: Add ncnn., Liliana Marie Prikler, 2022/11/26
- [bug#59607] [PATCH 7/8] gnu: Add python-gfpgan.,
Liliana Marie Prikler <=
- [bug#59607] [PATCH 8/8] gnu: Add python-real-esrgan., Liliana Marie Prikler, 2022/11/26
- [bug#59607] [PATCH 5/8] gnu: Add python-filterpy., Liliana Marie Prikler, 2022/11/26
- [bug#59607] [PATCH 4/8] gnu: Add python-basicsr., Liliana Marie Prikler, 2022/11/26
- [bug#59607] [PATCH 6/8] gnu: Add python-facexlib., Liliana Marie Prikler, 2022/11/26
- [bug#59607] [PATCH 2/8] gnu: Add real-esrgan-ncnn., Liliana Marie Prikler, 2022/11/26
- [bug#59607] [PATCH 3/8] gnu: Add python-addict., Liliana Marie Prikler, 2022/11/26