核心哲学:先报告事实,再讲方法,最后讲差距——以工程评审视角看进展
PASS(Panoramic Annular Semantic Segmentation)要求把井筒/钻孔全向相机采集的 raw annular 环形图(6000×4000)展开成矩形全景图(2048×692),作为语义分割网络的训练域。
仓库本身不包含raw → panorama 展开代码;本轮工作补齐了这一前置步骤,用 image-pair driven pseudo-calibration(伪标定)在无真实相机标定 JSON 的前提下完成了 POC。
详细交接文档:../PASS/HANDOVER.md(简体中文 single source of truth)。
左:raw 环形图(采集域,6000×4000);右:展开后的矩形全景(训练域,2048×692)。共 6 张样本,覆盖 3 个采集序列(1027 / 1210 / 7100)。
1027 含 334 张(公园/林荫道),1210 含 700 张(街道/交叉路口),7100 含 16 张(同一场景连拍)。每序列抽 2 张以保证覆盖:
0(首张) + 5(中间段)1(首张) + 8(中段)1(首张) + 6(中段)用一个共享的环形 remap 模型近似 published 矩形全景的展开方式:
· 中心 (center_x, center_y)、内外半径 (inner_radius, outer_radius)
· 径向非线性指数 radial_gamma
· 方位角偏移 angle_offset_deg、横纵翻转 flip_x, flip_y
用 scipy.optimize.minimize(method="Powell") 在 6 对 raw/published 匹配样本上做归一化互相关(NCC)最大化。
scripts/pass_pseudo_calibration_lib.py:remap_from_parameters)设全景图坐标 (X, Y) ∈ [0, W) × [0, H)
x_norm = X / W ∈ [0, 1)
y_norm = Y / H ∈ [0, 1)
θ = angle_offset_rad + (2π) · (flip_x ? 1 - x_norm : x_norm)
ρ_norm = (flip_y ? 1 - y_norm : y_norm) ^ radial_gamma
ρ = inner_radius + (outer_radius - inner_radius) · ρ_norm
源坐标 (u, v) = (center_x + ρ·cosθ, center_y + ρ·sinθ)
然后 cv.remap 双线性插值采样。
| 指标 | 数值 | 说明 |
|---|---|---|
| 训练 NCC(6 对) | 0.8804 | 拟合阶段同源样本 |
| 评估 NCC(6 对) | 0.9038 | 同源独立切分 |
| 1027 evaluation | 0.8815 | per-sequence |
| 1210 evaluation | 0.8814 | per-sequence |
| 7100 evaluation | 0.9485 | per-sequence(场景最稳定) |
| 24 对覆盖样本复核 | ≈ 0.7018 | demo 产物 vs published 直接配对 |
--fit-pairs-per-sequence 12 提升但耗时显著增长。Annotation/<U>/*.png);若需要,标签必须用最近邻,不能用双线性。Groundtruth/label.txt 是 6 类(Road/Car/Crosswalk/Curb/Person/Sidewalk),预训练模型 erfpspnet.pth 是 28 类,混用需 class id 重映射。dataset/gtFine/pass/ 不存在;eval_color*.py --subset pass 只能做无 GT 推理。建议 ln -s 到 Annotation/。unfolders-OCamCalib/cpp-omni_cam-master/src/ocam.cpp(6,631 B)已经能完成类似展开,
桥接视频流的差距主要是:
scripts/pass_pseudo_calibration_lib.py::remap_from_parameters 翻译为 C++ cv::remap。PASS-Datasets/IV2019_1384x3432.mp4(74.6 MB)做实时帧源。trained_models/erfpspnet.pth 的 ONNX/C++ 推理输出实时彩色分割。scripts/fit_pass_pseudo_calibration.py 拟合scripts/unfold_pass_with_pseudo_calibration.py 应用scripts/pass_pseudo_calibration_lib.py 共享模型scripts/run_pass_pseudo_calibration_demo.sh wrapperpseudo_calibration/pass_annular_pseudo_calibration_v1.jsondataset/leftImg8bit/pass_pseudo_calibrated_demo/{1027U,1210U,7100U}/*.png 30 张HANDOVER.md 唯一权威交接文档(简体中文)