From 2a210e34305b81ab5770dc11373e28f064784d8d Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 27 Aug 2016 15:41:16 +0200 Subject: neural-style: init at 0.0pre2016.08.15 --- pkgs/tools/graphics/neural-style/default.nix | 57 ++++++++++++++++++++++++ pkgs/tools/graphics/neural-style/neural-style.sh | 25 +++++++++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 84 insertions(+) create mode 100644 pkgs/tools/graphics/neural-style/default.nix create mode 100644 pkgs/tools/graphics/neural-style/neural-style.sh (limited to 'pkgs') diff --git a/pkgs/tools/graphics/neural-style/default.nix b/pkgs/tools/graphics/neural-style/default.nix new file mode 100644 index 000000000000..4efa6aa29768 --- /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 000000000000..07a4d6dedc04 --- /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[@]}" diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4467dc62a17a..e0645d749c67 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2701,6 +2701,8 @@ in netcdffortran = callPackage ../development/libraries/netcdf-fortran { }; + neural-style = callPackage ../tools/graphics/neural-style {}; + nco = callPackage ../development/libraries/nco { }; nc6 = callPackage ../tools/networking/nc6 { }; -- cgit 1.4.1