From ccbf8d732e23c419447127c2774eab1a99aef507 Mon Sep 17 00:00:00 2001 From: Michael Mayer Date: Fri, 16 Jul 2021 12:16:56 +0200 Subject: [PATCH] People: Download and install Facenet from dl.photoprism.org #22 #1406 Move TF model to download server to reduce git repo size, especially in case the model needs updates. --- .dockerignore | 1 + .gitignore | 1 + Makefile | 3 ++- scripts/download-facenet.sh | 46 +++++++++++++++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100755 scripts/download-facenet.sh diff --git a/.dockerignore b/.dockerignore index 587006c82..0a73cc739 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,6 +2,7 @@ /frontend/node_modules/* /node_modules /assets/static/build/* +/assets/facenet /assets/nasnet /assets/nsfw /storage diff --git a/.gitignore b/.gitignore index c68bb630c..d7a8172ea 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ /frontend/tests/*.html /frontend/tests/*.log /frontend/tests/screenshots +/assets/facenet /assets/nasnet /assets/nsfw /assets/static/build/ diff --git a/Makefile b/Makefile index 1dce8dac9..f25fd27ed 100644 --- a/Makefile +++ b/Makefile @@ -70,7 +70,7 @@ install-assets: mkdir -p ~/.photoprism/assets mkdir -p ~/Pictures/Originals mkdir -p ~/Pictures/Import - cp -r assets/locales assets/nasnet assets/nsfw assets/profiles assets/static assets/templates ~/.photoprism/assets + cp -r assets/locales assets/facenet assets/nasnet assets/nsfw assets/profiles assets/static assets/templates ~/.photoprism/assets find ~/.photoprism/assets -name '.*' -type f -delete clean-local-assets: rm -rf ~/.photoprism/assets/* @@ -89,6 +89,7 @@ dep-upgrade: dep-upgrade-js: (cd frontend && npm --depth 3 update --legacy-peer-deps) dep-tensorflow: + scripts/download-facenet.sh scripts/download-nasnet.sh scripts/download-nsfw.sh zip-nasnet: diff --git a/scripts/download-facenet.sh b/scripts/download-facenet.sh new file mode 100755 index 000000000..9040af8c2 --- /dev/null +++ b/scripts/download-facenet.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +TODAY=`date -u +%Y%m%d` + +MODEL_NAME="Facenet" +MODEL_URL="https://dl.photoprism.org/tensorflow/facenet.zip?$TODAY" +MODEL_PATH="assets/facenet" +MODEL_ZIP="/tmp/photoprism/facenet.zip" +MODEL_HASH="0492eb1d67789108b7eefb274e26633504b059be $MODEL_ZIP" +MODEL_VERSION="$MODEL_PATH/version.txt" +MODEL_BACKUP="storage/backup/facenet-$TODAY" + +echo "Installing $MODEL_NAME model for TensorFlow..." + +# Create directories +mkdir -p /tmp/photoprism +mkdir -p storage/backup + +# Check for update +if [[ -f ${MODEL_ZIP} ]] && [[ `sha1sum ${MODEL_ZIP}` == ${MODEL_HASH} ]]; then + if [[ -f ${MODEL_VERSION} ]]; then + echo "Already up to date." + exit + fi +else + # Download model + echo "Downloading latest model from $MODEL_URL..." + wget ${MODEL_URL} -O ${MODEL_ZIP} + + TMP_HASH=`sha1sum ${MODEL_ZIP}` + + echo ${TMP_HASH} +fi + +# Create backup +if [[ -e ${MODEL_PATH} ]]; then + echo "Creating backup of existing directory: $MODEL_BACKUP" + rm -rf ${MODEL_BACKUP} + mv ${MODEL_PATH} ${MODEL_BACKUP} +fi + +# Unzip model +unzip ${MODEL_ZIP} -d assets +echo "$MODEL_NAME $TODAY $MODEL_HASH" > ${MODEL_VERSION} + +echo "Latest $MODEL_NAME installed."