AI: Rename "scrfs" to "scrfd" in config and download script #5167

Signed-off-by: Michael Mayer <michael@photoprism.app>
This commit is contained in:
Michael Mayer
2025-10-07 22:12:37 +02:00
parent 3693db0946
commit 1eac265978
5 changed files with 37 additions and 19 deletions

View File

@@ -284,7 +284,7 @@ dep-tensorflow:
scripts/download-nasnet.sh scripts/download-nasnet.sh
scripts/download-nsfw.sh scripts/download-nsfw.sh
dep-onnx: dep-onnx:
scripts/download-scrfs.sh scripts/download-scrfd.sh
dep-acceptance: storage/acceptance dep-acceptance: storage/acceptance
storage/acceptance: storage/acceptance:
[ -f "./storage/acceptance/index.db" ] || (cd storage && rm -rf acceptance && wget -c https://dl.photoprism.app/qa/acceptance.tar.gz -O - | tar -xz) [ -f "./storage/acceptance/index.db" ] || (cd storage && rm -rf acceptance && wget -c https://dl.photoprism.app/qa/acceptance.tar.gz -O - | tar -xz)

View File

@@ -240,15 +240,17 @@ func (c *Config) FaceEngineModelPath() string {
return "" return ""
} }
dir := filepath.Join(c.ModelsPath(), "scrfs") dir := filepath.Join(c.ModelsPath(), "scrfd")
primary := filepath.Join(dir, face.DefaultONNXModelFilename) primary := filepath.Join(dir, face.DefaultONNXModelFilename)
if _, err := os.Stat(primary); err == nil { if _, err := os.Stat(primary); err == nil {
return primary return primary
} }
legacy := filepath.Join(dir, "scrfd_500m_bnkps_shape640x640.onnx") alt := filepath.Join(dir, "scrfd_500m_bnkps_shape640x640.onnx")
if _, err := os.Stat(legacy); err == nil {
return legacy if _, err := os.Stat(alt); err == nil {
return alt
} }
return primary return primary

View File

@@ -5,7 +5,6 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"runtime" "runtime"
"strings"
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@@ -142,7 +141,7 @@ func TestConfig_FaceEngine(t *testing.T) {
assert.Equal(t, face.EnginePigo, c.FaceEngine()) assert.Equal(t, face.EnginePigo, c.FaceEngine())
modelDir := filepath.Join(tempModels, "scrfs") modelDir := filepath.Join(tempModels, "scrfd")
require.NoError(t, os.MkdirAll(modelDir, 0o755)) require.NoError(t, os.MkdirAll(modelDir, 0o755))
modelFile := filepath.Join(modelDir, face.DefaultONNXModelFilename) modelFile := filepath.Join(modelDir, face.DefaultONNXModelFilename)
require.NoError(t, os.WriteFile(modelFile, []byte("onnx"), 0o644)) require.NoError(t, os.WriteFile(modelFile, []byte("onnx"), 0o644))
@@ -190,12 +189,14 @@ func TestConfig_FaceEngineThreads(t *testing.T) {
} }
func TestConfig_FaceEngineModelPath(t *testing.T) { func TestConfig_FaceEngineModelPath(t *testing.T) {
c := NewConfig(CliTestContext()) t.Run("DefaultPath", func(t *testing.T) {
path := c.FaceEngineModelPath() c := NewConfig(CliTestContext())
assert.Contains(t, path, "scrfs") tempModels := t.TempDir()
expected := filepath.Join(c.ModelsPath(), "scrfs", face.DefaultONNXModelFilename) c.options.ModelsPath = tempModels
if strings.HasSuffix(path, "scrfd_500m_bnkps_shape640x640.onnx") {
expected = filepath.Join(c.ModelsPath(), "scrfs", "scrfd_500m_bnkps_shape640x640.onnx") path := c.FaceEngineModelPath()
} assert.Contains(t, path, "scrfd")
assert.Equal(t, expected, path) expected := filepath.Join(tempModels, "scrfd", face.DefaultONNXModelFilename)
assert.Equal(t, expected, path)
})
} }

View File

@@ -3,6 +3,7 @@
set -euo pipefail set -euo pipefail
ONNX_VERSION=${ONNX_VERSION:-1.22.0} ONNX_VERSION=${ONNX_VERSION:-1.22.0}
TODAY=$(date -u +%Y%m%d)
TMPDIR=${TMPDIR:-/tmp} TMPDIR=${TMPDIR:-/tmp}
SYSTEM=$(uname -s) SYSTEM=$(uname -s)
ARCH=${PHOTOPRISM_ARCH:-$(uname -m)} ARCH=${PHOTOPRISM_ARCH:-$(uname -m)}
@@ -74,7 +75,8 @@ if [[ -z "${archive}" ]]; then
exit 1 exit 1
fi fi
url="https://github.com/microsoft/onnxruntime/releases/download/v${ONNX_VERSION}/${archive}" primary_url="https://dl.photoprism.app/onnx/runtime/v${ONNX_VERSION}/${archive}?${TODAY}"
fallback_url="https://github.com/microsoft/onnxruntime/releases/download/v${ONNX_VERSION}/${archive}"
package_path="${TMPDIR}/${archive}" package_path="${TMPDIR}/${archive}"
if [[ -f "${package_path}" ]]; then if [[ -f "${package_path}" ]]; then
@@ -88,7 +90,13 @@ fi
if [[ ! -f "${package_path}" ]]; then if [[ ! -f "${package_path}" ]]; then
echo "Downloading ONNX Runtime ${ONNX_VERSION} (${archive})..." echo "Downloading ONNX Runtime ${ONNX_VERSION} (${archive})..."
curl -fsSL --retry 3 --retry-delay 2 -o "${package_path}" "${url}" if ! curl -fsSL --retry 3 --retry-delay 2 -o "${package_path}" "${primary_url}"; then
echo "Primary download failed, trying upstream release..."
if ! curl -fsSL --retry 3 --retry-delay 2 -o "${package_path}" "${fallback_url}"; then
echo "Failed to download ONNX Runtime archive." >&2
exit 1
fi
fi
fi fi
echo "Verifying checksum..." echo "Verifying checksum..."

View File

@@ -10,15 +10,22 @@ PRIMARY_URL="https://dl.photoprism.app/onnx/models/${MODEL_SOURCE}?${TODAY}"
FALLBACK_URL="https://raw.githubusercontent.com/laolaolulu/FaceTrain/master/model/scrfd/${MODEL_SOURCE}" FALLBACK_URL="https://raw.githubusercontent.com/laolaolulu/FaceTrain/master/model/scrfd/${MODEL_SOURCE}"
MODEL_URL=${MODEL_URL:-"${PRIMARY_URL}"} MODEL_URL=${MODEL_URL:-"${PRIMARY_URL}"}
MODELS_PATH="assets/models" MODELS_PATH="assets/models"
MODEL_DIR="$MODELS_PATH/scrfs" MODEL_DIR="$MODELS_PATH/scrfd"
LEGACY_MODEL_DIR="$MODELS_PATH/scrfs"
MODEL_FILE="$MODEL_DIR/${LOCAL_MODEL_NAME}" MODEL_FILE="$MODEL_DIR/${LOCAL_MODEL_NAME}"
MODEL_TMP="/tmp/photoprism/${MODEL_SOURCE}" MODEL_TMP="/tmp/photoprism/${MODEL_SOURCE}"
MODEL_HASH="ae72185653e279aa2056b288662a19ec3519ced5426d2adeffbe058a86369a24 ${MODEL_TMP}" MODEL_HASH="ae72185653e279aa2056b288662a19ec3519ced5426d2adeffbe058a86369a24 ${MODEL_TMP}"
MODEL_VERSION="$MODEL_DIR/version.txt" MODEL_VERSION="$MODEL_DIR/version.txt"
MODEL_BACKUP="storage/backup/scrfs-${TODAY}" MODEL_BACKUP="storage/backup/scrfd-${TODAY}"
mkdir -p /tmp/photoprism mkdir -p /tmp/photoprism
mkdir -p storage/backup mkdir -p storage/backup
if [[ -d "${LEGACY_MODEL_DIR}" && ! -d "${MODEL_DIR}" ]]; then
echo "Migrating legacy SCRFD directory from ${LEGACY_MODEL_DIR} to ${MODEL_DIR}."
mv "${LEGACY_MODEL_DIR}" "${MODEL_DIR}"
fi
mkdir -p "${MODEL_DIR}" mkdir -p "${MODEL_DIR}"
hash_file() { hash_file() {