summary refs log tree commit diff
path: root/pkgs/tools/graphics/fast-neural-doodle
diff options
context:
space:
mode:
authorMichael Raskin <7c6f434c@mail.ru>2016-08-31 19:45:20 +0200
committerMichael Raskin <7c6f434c@mail.ru>2016-08-31 19:45:28 +0200
commit1280b110cb628d338f97d9cdcb8b1bbef6bc0a49 (patch)
treed0f02e7f1611d51ecf551a8356dae2080b2225a2 /pkgs/tools/graphics/fast-neural-doodle
parent2f5630a89fe22765ca5f24d14f46aa1bf874d112 (diff)
downloadnixlib-1280b110cb628d338f97d9cdcb8b1bbef6bc0a49.tar
nixlib-1280b110cb628d338f97d9cdcb8b1bbef6bc0a49.tar.gz
nixlib-1280b110cb628d338f97d9cdcb8b1bbef6bc0a49.tar.bz2
nixlib-1280b110cb628d338f97d9cdcb8b1bbef6bc0a49.tar.lz
nixlib-1280b110cb628d338f97d9cdcb8b1bbef6bc0a49.tar.xz
nixlib-1280b110cb628d338f97d9cdcb8b1bbef6bc0a49.tar.zst
nixlib-1280b110cb628d338f97d9cdcb8b1bbef6bc0a49.zip
fast-neural-doodle: init at 0.0pre2016-07-01
Diffstat (limited to 'pkgs/tools/graphics/fast-neural-doodle')
-rw-r--r--pkgs/tools/graphics/fast-neural-doodle/default.nix62
-rw-r--r--pkgs/tools/graphics/fast-neural-doodle/fast-neural-doodle.sh28
-rw-r--r--pkgs/tools/graphics/fast-neural-doodle/get-hdf5-mask.sh5
3 files changed, 95 insertions, 0 deletions
diff --git a/pkgs/tools/graphics/fast-neural-doodle/default.nix b/pkgs/tools/graphics/fast-neural-doodle/default.nix
new file mode 100644
index 000000000000..4346b2f95cf1
--- /dev/null
+++ b/pkgs/tools/graphics/fast-neural-doodle/default.nix
@@ -0,0 +1,62 @@
+{stdenv, fetchFromGitHub, fetchurl, torch, torch-hdf5, loadcaffe, bash
+  , python, numpy, scipy, h5py, scikitlearn, pillow
+  }:
+stdenv.mkDerivation rec {
+  name = "fast-neural-doodle-${version}";
+  version = "0.0pre2016-07-01";
+  buildInputs = [
+    torch torch-hdf5 python numpy h5py scikitlearn scipy pillow
+  ];
+
+  inherit torch loadcaffe bash python;
+  torch_hdf5 = torch-hdf5;
+  python_libPrefix = python.libPrefix;
+
+  src = fetchFromGitHub {
+    owner = "DmitryUlyanov";
+    repo = "fast-neural-doodle";
+    rev = "00c35a4440d1d58b029d7bdf9bc56743b1a1835f";
+    sha256 = "0xhmhxhjm59pfjm2q27g2xfb35hg0vlqkk3sb3llx2qqq2c7jk8m";
+  };
+  models = [
+    (fetchurl {
+      url = "https://gist.githubusercontent.com/ksimonyan/3785162f95cd2d5fee77/raw/bb2b4fe0a9bb0669211cf3d0bc949dfdda173e9e/VGG_ILSVRC_19_layers_deploy.prototxt";
+      sha256 = "09cpz7pyvc8sypg2q5j2i8yqwj1sjdbnmd6skl293p9pv13dmjg7";
+    })
+    (fetchurl {
+      url = "https://bethgelab.org/media/uploads/deeptextures/vgg_normalised.caffemodel";
+      sha256 = "11qckdvlck7wwl3pan0nawgxm8l2ccddi272i5l8rs9qzm7b23rf";
+    })
+    (fetchurl {
+      url = "http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_19_layers.caffemodel";
+      sha256 = "0m399x7pl4lnhy435ycsyz8xpzapqmx9n1sz698y2vhcqhkwdd1i";
+    })
+  ];
+  installPhase = ''
+    mkdir -p "$out"/{doc/fast-neural-doodle,lib/lua/fast_neural_doodle,lib/${python.libPrefix}/fast_neural_doodle,bin}
+    cp -r data src fast_neural_doodle.lua "$out/lib/lua/fast_neural_doodle/"
+    for file in $models; do
+      ln -s "$file" "$out/lib/lua/fast_neural_doodle/data/pretrained/$(basename "$file" | sed -e 's/[^-]*-//')"
+    done;
+    cp get_mask_hdf5.py "$out/lib/${python.libPrefix}/fast_neural_doodle"
+    cp *.md LICENSE "$out/doc/fast-neural-doodle"
+
+    export pythonpath="$PYTHONPATH"
+
+    substituteAll "${./get-hdf5-mask.sh}" "$out/bin/get-hdf5-mask"
+    substituteAll "${./fast-neural-doodle.sh}" "$out/bin/fast-neural-doodle"
+
+    chmod a+x "$out/bin"/*
+
+    "$out/bin/get-hdf5-mask" --n_colors=4 --style_image data/Renoir/style.png --style_mask data/Renoir/style_mask.png --target_mask data/Renoir/target_mask.png --out_hdf5 masks.hdf5
+
+    "$out/bin/fast-neural-doodle" -gpu -1 -masks_hdf5 masks.hdf5 -num_iterations 1
+  '';
+  meta = {
+    inherit version;
+    description = ''Faster neural doodle'';
+    license = stdenv.lib.licenses.mit;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/tools/graphics/fast-neural-doodle/fast-neural-doodle.sh b/pkgs/tools/graphics/fast-neural-doodle/fast-neural-doodle.sh
new file mode 100644
index 000000000000..a089d5a95061
--- /dev/null
+++ b/pkgs/tools/graphics/fast-neural-doodle/fast-neural-doodle.sh
@@ -0,0 +1,28 @@
+#! @bash@/bin/bash
+
+declare -a args
+c=1
+flag=
+
+for arg in "$@"; do
+        if test "$arg" = "${arg#-}" && test "$arg" = "${arg#/}" && test -n "$flag"; then
+                arg="$PWD/$arg"
+                flag=
+        elif (test "$arg" != "${arg%_image}" || test "$arg" == "-masks_hdf5") && test "$arg" != "${arg#-}"; then
+                flag=1
+        else
+                flag=
+        fi
+        args[c]="$arg";
+        c=$((c+1));
+done
+
+cd "@out@/lib/lua/fast_neural_doodle"
+
+export LUA_PATH="$LUA_PATH${LUA_PATH:+;}@loadcaffe@/lua/?/init.lua;@loadcaffe@/lua/?.lua"
+export LUA_PATH="$LUA_PATH${LUA_PATH:+;}@torch_hdf5@/lua/?/init.lua;@torch_hdf5@/lua/?.lua"
+export LUA_CPATH="$LUA_CPATH${LUA_CPATH:+;}@loadcaffe@/lib/?.so"
+
+set -x
+
+@torch@/bin/th fast_neural_doodle.lua "${args[@]}"
diff --git a/pkgs/tools/graphics/fast-neural-doodle/get-hdf5-mask.sh b/pkgs/tools/graphics/fast-neural-doodle/get-hdf5-mask.sh
new file mode 100644
index 000000000000..cfff76d141fb
--- /dev/null
+++ b/pkgs/tools/graphics/fast-neural-doodle/get-hdf5-mask.sh
@@ -0,0 +1,5 @@
+#! @bash@/bin/bash
+
+export PYTHONPATH="@pythonpath@"
+
+@python@/bin/python "@out@/lib/@python_libPrefix@/fast_neural_doodle/get_mask_hdf5.py" "$@"