d289168dd0
先回答"这些模型到底有没有人用",用全仓库引用扫描判定,不靠猜: 在用 yolo/detect_best_0.onnx + .engine ← paths.yolo_weights 在用 hole_insert/detect_best_1.onnx ← hole_detect.weights / workpiece_weights 零引用 detect_hc90(pt/onnx/engine) ← 只剩注释里的历史说明 零引用 detect_yolo26_gongjian.pt 零引用 detect_best(onnx/engine) ← 仅代码兜底候选,而那个候选是 .pt,不存在 所以 detect_hc90 不需要修复,是不用的东西:连同另两个一起移出仓库。 注意**二进制权重被 gitignore**,删掉就找不回来了,因此是移出到 ~/ros2-models-unused-20260923/ 而非 rm。搬回 models/ 即可被 list 重新发现。 顺手挖出并修掉三处悬空引用(和之前 site.yaml 里那个 best.pt 同一类问题): - hole_detector.weights_from_site:兜底路径写死 models/hole_insert/best.pt(不存在) - hole_detector._default_model_path:三个候选路径**全都不存在**,函数却 `return candidates[0]`,于是永远返回不存在的 best.pt;报错路径看着很合理, 极易被误判成"文件被误删"。现改为以 site.yaml 为准,再退到规范模型。 - config/hole_insert.yaml 顶部注释同样写的是 best.pt 新增 test_hole_detector.py(8 项)锁住这个回归。测试刻意**不断言文件存在** ——二进制不进 git,新克隆的仓库里 models/ 是空的——只断言解析结果指向规范模型名。 体检从 4 处问题降到 0:bash scripts/weights.sh doctor --check-engines → "没有发现问题" 测试 233 项通过;18 个包构建通过。 Co-authored-by: Cursor <cursoragent@cursor.com>
48 lines
1.5 KiB
Bash
Executable File
48 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 【旧命令,已改为转发壳】YOLO 权重 → TensorRT engine。
|
|
#
|
|
# 请改用新命令(多了改名、归位、标签固化、staging 等功能):
|
|
#
|
|
# bash ~/ros2/scripts/weights.sh convert <文件> --name <模型名>
|
|
# bash ~/ros2/scripts/weights.sh list
|
|
# bash ~/ros2/scripts/weights.sh labels <模型名>
|
|
#
|
|
# 本脚本保留只为兼容旧文档/旧习惯,行为等价于:
|
|
# weights.sh convert <weights> --name <同名主干> --to engine [--imgsz N]
|
|
#
|
|
# 原用法(仍然可用):
|
|
# bash ~/ros2/scripts/export_yolo_trt.sh
|
|
# bash ~/ros2/scripts/export_yolo_trt.sh /path/to/xxx.onnx 640
|
|
|
|
set -eo pipefail
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
# shellcheck disable=SC1091
|
|
source "${ROOT}/scripts/lib/load_site_config.sh" >/dev/null 2>&1 || true
|
|
|
|
WEIGHTS="${1:-${SITE_YOLO_WEIGHTS:-${ROOT}/models/yolo/detect_best_0.onnx}}"
|
|
IMGSZ="${2:-${SITE_YOLO_IMGSZ:-640}}"
|
|
|
|
if [[ ! -f "${WEIGHTS}" ]]; then
|
|
echo "ERROR: weights not found: ${WEIGHTS}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# 取文件名主干做模型名:xxx.onnx → xxx
|
|
BASE="$(basename "${WEIGHTS}")"
|
|
NAME="${BASE%.*}"
|
|
DIR="$(dirname "${WEIGHTS}")"
|
|
# 分组 = 权重所在目录名(相对 models/ 的那一层)
|
|
GROUP="$(basename "${DIR}")"
|
|
|
|
echo "提示: export_yolo_trt.sh 已改为转发壳,建议直接用:"
|
|
echo " bash ~/ros2/scripts/weights.sh convert ${WEIGHTS} --name ${NAME}"
|
|
echo
|
|
|
|
exec bash "${ROOT}/scripts/weights.sh" convert "${WEIGHTS}" \
|
|
--name "${NAME}" \
|
|
--group "${GROUP}" \
|
|
--to engine \
|
|
--imgsz "${IMGSZ}" \
|
|
--force
|