feat: 初始化星元智灵人脸识别回收箱项目
This commit is contained in:
Executable
+51
@@ -0,0 +1,51 @@
|
||||
#!/bin/sh
|
||||
# 将 Git 中的小于 50MB 分片恢复为 SeetaFace6 识别模型。
|
||||
set -eu
|
||||
|
||||
PROJECT_DIR=$(CDPATH= cd -- "$(dirname "$0")/.." && pwd)
|
||||
MODEL_FILE="$PROJECT_DIR/app/src/main/assets/face_models/face_recognizer.csta"
|
||||
PART_DIR="$PROJECT_DIR/model-parts"
|
||||
PART_PATTERN="$PART_DIR/face_recognizer.csta.part-"
|
||||
EXPECTED_SHA256="3cefce29d2ceb6fd95153d67c11f24ce08746e1877478bacaa5ae5d333a0a670"
|
||||
|
||||
sha256_file() {
|
||||
if command -v sha256sum >/dev/null 2>&1; then
|
||||
sha256sum "$1" | awk '{print $1}'
|
||||
elif command -v shasum >/dev/null 2>&1; then
|
||||
shasum -a 256 "$1" | awk '{print $1}'
|
||||
else
|
||||
echo "错误:系统缺少 sha256sum 或 shasum,无法校验模型。" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ -f "$MODEL_FILE" ]; then
|
||||
CURRENT_SHA256=$(sha256_file "$MODEL_FILE")
|
||||
if [ "$CURRENT_SHA256" = "$EXPECTED_SHA256" ]; then
|
||||
echo "人脸识别模型已存在且校验通过。"
|
||||
exit 0
|
||||
fi
|
||||
echo "检测到损坏或版本不匹配的人脸识别模型,将从分片重新恢复。"
|
||||
fi
|
||||
|
||||
if ! ls "${PART_PATTERN}"* >/dev/null 2>&1; then
|
||||
echo "错误:未找到人脸识别模型分片:${PART_PATTERN}*" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$(dirname "$MODEL_FILE")"
|
||||
TEMP_FILE=$(mktemp "${MODEL_FILE}.tmp.XXXXXX")
|
||||
trap 'rm -f "$TEMP_FILE"' EXIT HUP INT TERM
|
||||
|
||||
cat "${PART_PATTERN}"* > "$TEMP_FILE"
|
||||
ACTUAL_SHA256=$(sha256_file "$TEMP_FILE")
|
||||
if [ "$ACTUAL_SHA256" != "$EXPECTED_SHA256" ]; then
|
||||
echo "错误:模型分片合并后的 SHA-256 校验失败。" >&2
|
||||
echo "期望:$EXPECTED_SHA256" >&2
|
||||
echo "实际:$ACTUAL_SHA256" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mv "$TEMP_FILE" "$MODEL_FILE"
|
||||
trap - EXIT HUP INT TERM
|
||||
echo "人脸识别模型恢复完成:$MODEL_FILE"
|
||||
Reference in New Issue
Block a user