Upload zoom.sh
Browse files
zoom.sh
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
# Example "Zoom" movie generation
|
| 3 |
+
# e.g. ./zoom.sh "A painting of zooming in to a surreal, alien world" Zoom.png 180
|
| 4 |
+
|
| 5 |
+
TEXT="$1"
|
| 6 |
+
FILENAME="$2"
|
| 7 |
+
MAX_EPOCHS=$3
|
| 8 |
+
|
| 9 |
+
LR=0.1
|
| 10 |
+
OPTIMISER=Adam
|
| 11 |
+
MAX_ITERATIONS=25
|
| 12 |
+
SEED=`shuf -i 1-9999999999 -n 1` # Keep the same seed each epoch for more deterministic runs
|
| 13 |
+
|
| 14 |
+
# Extract
|
| 15 |
+
FILENAME_NO_EXT=${FILENAME%.*}
|
| 16 |
+
FILE_EXTENSION=${FILENAME##*.}
|
| 17 |
+
|
| 18 |
+
# Initial run
|
| 19 |
+
python generate.py -p="$TEXT" -opt="$OPTIMISER" -lr=$LR -i=$MAX_ITERATIONS -se=$MAX_ITERATIONS --seed=$SEED -o="$FILENAME"
|
| 20 |
+
cp "$FILENAME" "$FILENAME_NO_EXT"-0000."$FILE_EXTENSION"
|
| 21 |
+
convert "$FILENAME" -distort SRT 1.01,0 -gravity center "$FILENAME" # Zoom
|
| 22 |
+
convert "$FILENAME" -distort SRT 1 -gravity center "$FILENAME" # Rotate
|
| 23 |
+
|
| 24 |
+
# Feedback image loop
|
| 25 |
+
for (( i=1; i<=$MAX_EPOCHS; i++ ))
|
| 26 |
+
do
|
| 27 |
+
padded_count=$(printf "%04d" "$i")
|
| 28 |
+
python generate.py -p="$TEXT" -opt="$OPTIMISER" -lr=$LR -i=$MAX_ITERATIONS -se=$MAX_ITERATIONS --seed=$SEED -ii="$FILENAME" -o="$FILENAME"
|
| 29 |
+
cp "$FILENAME" "$FILENAME_NO_EXT"-"$padded_count"."$FILE_EXTENSION"
|
| 30 |
+
convert "$FILENAME" -distort SRT 1.01,0 -gravity center "$FILENAME" # Zoom
|
| 31 |
+
convert "$FILENAME" -distort SRT 1 -gravity center "$FILENAME" # Rotate
|
| 32 |
+
done
|
| 33 |
+
|
| 34 |
+
# Make video - Nvidia GPU expected
|
| 35 |
+
ffmpeg -y -i "$FILENAME_NO_EXT"-%04d."$FILE_EXTENSION" -b:v 8M -c:v h264_nvenc -pix_fmt yuv420p -strict -2 -filter:v "minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1:fps=60'" video.mp4
|