summary refs log tree commit diff
path: root/pkgs/tools/graphics
diff options
context:
space:
mode:
authorMichael Raskin <7c6f434c@mail.ru>2016-08-27 15:41:16 +0200
committerMichael Raskin <7c6f434c@mail.ru>2016-08-27 15:41:58 +0200
commit2a210e34305b81ab5770dc11373e28f064784d8d (patch)
treefd6035e7bc9246acc3e9b6551494c473cdc92002 /pkgs/tools/graphics
parentf3a86cf5997365fdd91a7365fe37047a26eca1c9 (diff)
downloadnixpkgs-2a210e34305b81ab5770dc11373e28f064784d8d.tar
nixpkgs-2a210e34305b81ab5770dc11373e28f064784d8d.tar.gz
nixpkgs-2a210e34305b81ab5770dc11373e28f064784d8d.tar.bz2
nixpkgs-2a210e34305b81ab5770dc11373e28f064784d8d.tar.lz
nixpkgs-2a210e34305b81ab5770dc11373e28f064784d8d.tar.xz
nixpkgs-2a210e34305b81ab5770dc11373e28f064784d8d.tar.zst
nixpkgs-2a210e34305b81ab5770dc11373e28f064784d8d.zip
neural-style: init at 0.0pre2016.08.15
Diffstat (limited to 'pkgs/tools/graphics')
-rw-r--r--pkgs/tools/graphics/neural-style/default.nix57
-rw-r--r--pkgs/tools/graphics/neural-style/neural-style.sh25
2 files changed, 82 insertions, 0 deletions
diff --git a/pkgs/tools/graphics/neural-style/default.nix b/pkgs/tools/graphics/neural-style/default.nix
new file mode 100644
index 00000000000..4efa6aa2976
--- /dev/null
+++ b/pkgs/tools/graphics/neural-style/default.nix
@@ -0,0 +1,57 @@
+{stdenv, fetchFromGitHub, torch, loadcaffe, fetchurl, bash}:
+stdenv.mkDerivation rec {
+  name = "neural-style-${version}";
+  version = "0.0pre2016.08.15";
+  buildInputs = [torch loadcaffe];
+  src = fetchFromGitHub {
+    owner = "jcjohnson";
+    repo = "neural-style";
+    rev = "ec5ba3a690d3090428d3b92b0c5d686a311bf432";
+    sha256 = "14qzbs9f95izvd0vbbirhymdw9pq2nw0jvhrh7vnyzr99xllwp02";
+  };
+  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"/{bin,lib/lua/neural-style/models,share/doc/neural-style,share/neural-style}
+    for file in $models; do
+      cp "$file" "$out/lib/lua/neural-style/models/$(basename "$file" | sed -e 's/[^-]*-//')"
+    done;
+    cp README* INSTALL* LICEN?E* "$out"/share/doc/neural-style/
+    cp neural_style.lua "$out"/lib/lua/neural-style
+
+    substituteAll "${./neural-style.sh}" "$out/bin/neural-style"
+    chmod a+x "$out/bin/neural-style"
+    cp "$out/bin/neural-style" .
+    cp "$out/lib/lua/neural-style/models/"* models/
+
+    echo "Testing..."
+
+    "$out/bin/neural-style" -style_image examples/inputs/golden_gate.jpg \
+      -content_image examples/inputs/golden_gate.jpg -output_image $PWD/test.png \
+      -gpu -1 -save_iter 1 -print_iter 1 -num_iterations 1 || true
+
+    cp -f "$out/lib/lua/neural-style/models/"* models/
+
+    test -e test.png || exit 1
+  '';
+  inherit torch bash loadcaffe;
+  meta = {
+    inherit version;
+    description = ''A torch implementation of the paper A Neural Algorithm of Artistic Style'';
+    license = stdenv.lib.licenses.mit ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/tools/graphics/neural-style/neural-style.sh b/pkgs/tools/graphics/neural-style/neural-style.sh
new file mode 100644
index 00000000000..07a4d6dedc0
--- /dev/null
+++ b/pkgs/tools/graphics/neural-style/neural-style.sh
@@ -0,0 +1,25 @@
+#! @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" != "${arg#-}"; then
+                flag=1
+        else
+                flag=
+        fi
+        args[c]="$arg";
+        c=$((c+1));
+done
+
+cd "@out@/lib/lua/neural-style"
+
+export LUA_PATH="$LUA_PATH${LUA_PATH:+;}@loadcaffe@/lua/?/init.lua;@loadcaffe@/lua/?.lua"
+export LUA_CPATH="$LUA_CPATH${LUA_CPATH:+;}@loadcaffe@/lib/?.so"
+
+@torch@/bin/th neural_style.lua "${args[@]}"