fix calculation logic, fix api endpoint
This commit is contained in:
@@ -66,7 +66,7 @@ class Settings(BaseSettings):
|
||||
fish_measure_root: Path = fish_repo_root() / "FishMeasure"
|
||||
fish_action_root: Path = fish_repo_root() / "FishAction"
|
||||
|
||||
#: FishMeasure 推理输出(与 SQLite、媒体缓存同属 fish_api/.data,启动脚本会清空)
|
||||
#: FishMeasure 推理输出(与 SQLite、媒体缓存同属 fish_api/.data;启动脚本默认保留,设置 CLEAR_MEASURE_OUTPUT=1 可清空)
|
||||
measure_output_root: Path = fish_repo_root() / "fish_api" / ".data" / "measure_output"
|
||||
#: 体重推算过程等调试文本写入目录(默认 fish_api/.data/logs/measure)。**MEASURE_DEBUG_LOG_DIR**
|
||||
measure_debug_log_dir: Path = Field(
|
||||
@@ -78,7 +78,7 @@ class Settings(BaseSettings):
|
||||
default=True,
|
||||
validation_alias=AliasChoices("MEASURE_DEBUG_LOG_WRITE", "measure_debug_log_write"),
|
||||
)
|
||||
#: FishAction 侧预留目录(与 measure 对称;当前推理多为临时文件,仍随启动清空)
|
||||
#: FishAction 侧预留目录(与 measure 对称;启动脚本默认保留,设置 CLEAR_ACTION_OUTPUT=1 可清空)
|
||||
action_output_root: Path = Field(default_factory=_default_action_output_root)
|
||||
|
||||
python_fish_measure: str = ""
|
||||
@@ -160,6 +160,78 @@ class Settings(BaseSettings):
|
||||
),
|
||||
)
|
||||
|
||||
# ── 体重聚合规则(传给 predict_weigth_from_svo2.py → test_dgcnn_weight_estimator.py) ──
|
||||
|
||||
#: DGCNN top-K 帧数,传给 ``--weight-top-k``。**MEASURE_WEIGHT_TOP_K**
|
||||
measure_weight_top_k: int = Field(
|
||||
default=5,
|
||||
ge=1,
|
||||
validation_alias=AliasChoices("MEASURE_WEIGHT_TOP_K", "measure_weight_top_k"),
|
||||
)
|
||||
#: 按长度选 top-K,传给 ``--weight-top-by-length``。**MEASURE_WEIGHT_TOP_BY_LENGTH**
|
||||
measure_weight_top_by_length: bool = Field(
|
||||
default=True,
|
||||
validation_alias=AliasChoices(
|
||||
"MEASURE_WEIGHT_TOP_BY_LENGTH", "measure_weight_top_by_length"
|
||||
),
|
||||
)
|
||||
#: top-K 按长度选时,若 K 个平均长度 > 此值则切为按重量选,传给 ``--weight-length-switch-mm``。**MEASURE_WEIGHT_LENGTH_SWITCH_MM**
|
||||
measure_weight_length_switch_mm: float = Field(
|
||||
default=319.0,
|
||||
validation_alias=AliasChoices(
|
||||
"MEASURE_WEIGHT_LENGTH_SWITCH_MM", "measure_weight_length_switch_mm"
|
||||
),
|
||||
)
|
||||
#: 几何过滤:length > 此值的帧排除,传给 ``--weight-max-length-mm``(0 关闭)。**MEASURE_WEIGHT_MAX_LENGTH_MM**
|
||||
measure_weight_max_length_mm: float = Field(
|
||||
default=400.0,
|
||||
validation_alias=AliasChoices(
|
||||
"MEASURE_WEIGHT_MAX_LENGTH_MM", "measure_weight_max_length_mm"
|
||||
),
|
||||
)
|
||||
#: 几何过滤:PCA 长/宽 < 此值的帧排除,传给 ``--weight-min-length-width-ratio``(0 关闭)。**MEASURE_WEIGHT_MIN_LENGTH_WIDTH_RATIO**
|
||||
measure_weight_min_length_width_ratio: float = Field(
|
||||
default=1.5,
|
||||
validation_alias=AliasChoices(
|
||||
"MEASURE_WEIGHT_MIN_LENGTH_WIDTH_RATIO", "measure_weight_min_length_width_ratio"
|
||||
),
|
||||
)
|
||||
#: 全池均值模式,传给 ``--weight-average-all-after-filter``。**MEASURE_WEIGHT_AVERAGE_ALL_AFTER_FILTER**
|
||||
measure_weight_average_all_after_filter: bool = Field(
|
||||
default=False,
|
||||
validation_alias=AliasChoices(
|
||||
"MEASURE_WEIGHT_AVERAGE_ALL_AFTER_FILTER", "measure_weight_average_all_after_filter"
|
||||
),
|
||||
)
|
||||
#: 全池均值 > 此值时改用 max(规则 A),传给 ``--weight-average-all-fallback-max-if-mean-over-g``(0 关闭)。**MEASURE_WEIGHT_AVG_ALL_FALLBACK_MAX_G**
|
||||
measure_weight_avg_all_fallback_max_g: float = Field(
|
||||
default=400.0,
|
||||
validation_alias=AliasChoices(
|
||||
"MEASURE_WEIGHT_AVG_ALL_FALLBACK_MAX_G", "measure_weight_avg_all_fallback_max_g"
|
||||
),
|
||||
)
|
||||
#: 全池 candidates 均值 > 此值时改用 max(规则 B, 440g 保护),传给 ``--weight-mean-pool-fallback-max-if-over-g``(0 关闭)。**MEASURE_WEIGHT_MEAN_POOL_FALLBACK_MAX_G**
|
||||
measure_weight_mean_pool_fallback_max_g: float = Field(
|
||||
default=440.0,
|
||||
validation_alias=AliasChoices(
|
||||
"MEASURE_WEIGHT_MEAN_POOL_FALLBACK_MAX_G", "measure_weight_mean_pool_fallback_max_g"
|
||||
),
|
||||
)
|
||||
#: 异常值剔除开关,传给 ``--weight-remove-outliers``。**MEASURE_WEIGHT_REMOVE_OUTLIERS**
|
||||
measure_weight_remove_outliers: bool = Field(
|
||||
default=False,
|
||||
validation_alias=AliasChoices(
|
||||
"MEASURE_WEIGHT_REMOVE_OUTLIERS", "measure_weight_remove_outliers"
|
||||
),
|
||||
)
|
||||
#: 异常值剔除方法(iqr / zscore),传给 ``--weight-outlier-method``。**MEASURE_WEIGHT_OUTLIER_METHOD**
|
||||
measure_weight_outlier_method: str = Field(
|
||||
default="iqr",
|
||||
validation_alias=AliasChoices(
|
||||
"MEASURE_WEIGHT_OUTLIER_METHOD", "measure_weight_outlier_method"
|
||||
),
|
||||
)
|
||||
|
||||
#: 非空时由 fish_api 在后台持续扫描该目录中的新 MP4 并跑 FishAction(与 ingest 共用 SQLite 最新结果)
|
||||
action_watch_dir: Optional[Path] = None
|
||||
action_watch_poll_interval: float = Field(default=2.0, ge=0.1)
|
||||
|
||||
Reference in New Issue
Block a user