行筆記:評價體系——親手給論文鏡頭做一次光學分析)
E1 執(zhí)行筆記評價體系——親手給論文鏡頭做一次光學分析論文Curriculum learning for ab initio deep learned refractive optics (Nature Communications, 2024)作者楊辛格 (Xinge Yang)、付強 (Qiang Fu)、Wolfgang HeidrichKAUST vccimaging代碼AI4Optics/AutoLensDeepLens 的活躍維護分支實驗日期2026-10-07 |環(huán)境AutoDL 實例PyTorch 2.1.2 cu121性質理解優(yōu)先復現(xiàn)路線 · 實驗 1/4摘要E1 用 AutoLens 加載論文配套手機鏡頭 cellphone.json復現(xiàn)光學評價體系RMS 光斑全視場 6.4μm、半視場 5.6μm、邊緣 4.1μm兩次運行結果一致。全程無卡模式 CPU 跑通成本不足 1 元。目錄摘要一、E1 回答的問題光學設計到底在優(yōu)化什么二、環(huán)境與資產(chǎn)三、執(zhí)行過程三個坑與修法3.1 坑一JSON 格式不同步KeyError: ‘r_sensor’3.2 坑二缺測試圖FileNotFoundError: NBS_1963_1k.png3.3 坑三無卡模式內存不足Killed四、結果論文鏡頭的成績單五、成本賬六、經(jīng)驗沉淀七、下一步E2 課程動力學附錄 A執(zhí)行命令清單附錄 B資產(chǎn)路徑速查附錄 C自查清單一、E1 回答的問題光學設計到底在優(yōu)化什么理解型復現(xiàn)的第一個實驗不訓練任何東西只做評價。理由論文的全部優(yōu)化目標損失函數(shù)都建立在評價體系之上——先弄清什么是好鏡頭才能看懂后續(xù) E2 課程設計在逼近什么。具體要回答三件事評價指標RMS spot radius 怎么算、在哪些視場點評、量級多少API 鏈路GeoLens 如何加載 JSON、做點列圖分析、渲染仿真圖像基準數(shù)字論文產(chǎn)出的鏡頭cellphone.json推測即論文 Fig.1 的 80.8° 手機鏡頭處于什么水平一個判斷依據(jù)該 JSON 中r_last: 3.83 mm恰等于傳感器尺寸 5.4164 mm 的半對角線5.4164×√2/2說明傳感器對角半徑 3.83 mm——與論文規(guī)格吻合這顆鏡頭就是論文設計產(chǎn)物分析它等于直接檢驗論文最終結果。二、環(huán)境與資產(chǎn)項值說明實例AutoDL 容器dd9f46bdad無卡模式完成全部 E1 工作Python/PyTorch3.10 / 2.1.2cu121base 環(huán)境直接可用零額外安裝代碼~/AutoLens/git clone克隆自 AI4Optics/AutoLens鏡頭文件datasets/lens_zoo/cellphone.json6 片式手機鏡頭需打補丁見下Zenodo 4.5 GB 官方包NAFNet checkpoint EDoF 測試圖當天多次嘗試下載失敗93 KB/s 503 限流已確認 E1–E3 不依賴它僅 E4 需要——果斷擱置不影響主線。這是理解優(yōu)先路線的關鍵優(yōu)勢最重的資產(chǎn)排在最便宜的驗證之后。三、執(zhí)行過程三個坑與修法3.1 坑一JSON 格式不同步KeyError: ‘r_sensor’AutoLens 倉庫自帶 bugcellphone.json是舊格式sensor_size字段而讀取代碼deeplens/geolens_pkg/io.py期望新字段r_sensor。庫和數(shù)據(jù)沒同步屬上游問題。修法一次性補丁importjson pdatasets/lens_zoo/cellphone.jsondjson.load(open(p))d[r_sensor]d[sensor_size][0]/2# 邊長 → 半邊長json.dump(d,open(p,w),indent4)3.2 坑二缺測試圖FileNotFoundError: NBS_1963_1k.png渲染環(huán)節(jié)引用datasets/charts/NBS_1963_1k.png1953 年美國空軍標準分辨率測試卡倉庫只有datasets/resolution_chart1.png。修法復制頂上效果等價。mkdir-p~/AutoLens/datasets/chartscp~/AutoLens/datasets/resolution_chart1.png ~/AutoLens/datasets/charts/NBS_1963_1k.png3.3 坑三無卡模式內存不足Killedphotorealistic 渲染環(huán)節(jié)PSF 卷積 全分辨率仿真OOM 被殺。且 conda 裝字體包同樣 OOM——無卡模式兩條鐵律別用 conda解依賴必 OOM要用就 pip重內存任務直接留給有卡模式。處置渲染屬于錦上添花數(shù)值結果已到手E1 到此收檔渲染與 E2 合并到有卡時段做。另有無害警告兩類use_ai2legacy format 提示舊 JSON 系數(shù)格式自動兼容不影響、Nimbus Sans 字體缺失matplotlib 自動回退不出字體的圖照常出。四、結果論文鏡頭的成績單python 0_hello_deeplens.pyCPU核心輸出兩次運行視場RMS radiusGeo radius復現(xiàn)一致性FoV 0.0軸上6.39–6.43 μm15.07–15.09 μm? ±0.05 μmFoV 0.5半視場5.55–5.59 μm16.01–16.10 μm?FoV 1.0邊緣4.06–4.07 μm10.65–10.77 μm?解讀量級對齊論文論文 Table 1 中 80.8° 大視場手機鏡頭 Avg RMS 約 15.74 μm本鏡頭三視場 4–6.5 μm明顯更好符合其較窄視場的定位也與論文視場越大像差越難控制的主線一致邊緣視場 RMS 反而最小4.1 5.6 6.4——說明該設計把校正余量花在了邊緣畸變主導區(qū)域這是優(yōu)化目標加權重加權的結果恰好呼應論文重加權掩碼機制把已學好的視場權重置零逼優(yōu)化器啃邊角Geo radius ≈ 2.4×RMS幾何半徑最遠光線與均方根半徑之比反映光斑分布形狀——能量集中但拖尾典型像差殘余特征兩次運行逐視場復現(xiàn)到 ±0.05 μm追跡過程的隨機性光線采樣種子極小評價體系是確定性的——這也是消融實驗E3可信的前提。產(chǎn)出文件~/AutoLens/lens.png鏡頭剖面圖本篇筆記配圖。注assets/imgs/下的lens_design.png、ultra_target.png為倉庫自帶演示圖非本次產(chǎn)出。五、成本賬項花費無卡模式約 1 h克隆、補丁、兩次全量分析≈ ¥0.1失敗嘗試Zenodo 下載已刪殘留、conda OOM≈ ¥0純時間成本E1 合計 ¥1預算 E1 為 0實際貼齊對照完整復現(xiàn)口徑這一步在原 P 系列規(guī)劃里對應 P0/P1 的驗證環(huán)節(jié)成本結構與理解優(yōu)先預算一致。六、經(jīng)驗沉淀AutoLens 上游 bug 自查清單JSON 缺r_sensor→ 補字段缺NBS_1963_1k.png→ 復制 resolution_chart1.png。兩個坑修完即穩(wěn)定無卡模式定位裝環(huán)境、改配置、跑評價分析本實驗全部——CPU 光線追跡量小完全夠用渲染和訓練才需要有卡conda vs pip無卡模式 conda 解元數(shù)據(jù)會被 OOM 殺Killed用 piparia2 預分配陷阱ls顯示的 4.5 GB 是預分配大小實際進度看.aria2控制文件刪殘留要 zip 和.aria2一起刪Zenodo 大文件策略source /etc/network_turboaria2c -x 816 并發(fā)易觸發(fā) 503或本地下載 AutoDL 網(wǎng)盤中轉4.5 GB 包推遲到 E4 前再取。七、下一步E2 課程動力學前置實例切換有卡模式3090 性價比優(yōu)于 4090約 ¥1.3/h本批主機 GPU 占滿時可用克隆實例遷移數(shù)據(jù)盤保留命令tmux new -s e2后跑python 1_autolens.pycurriculum 2000 iter refine 3000 iter預計 40 min–2 h¥1.5–3觀察重點每次 FoV/F# 規(guī)格切換前后 100 iter 的損失曲線與鏡頭剖面變化——對應論文 Fig.1 的結構演化產(chǎn)出預期逐階段剖面快照 →ffmpeg -framerate 2 -pattern_type glob -i step_*.png lens_evolution.gif拼演化動圖作為公眾號筆記素材驗收RMS 是否收斂到 cellphone.json 量級4–6 μm。附錄 A執(zhí)行命令清單# 環(huán)境驗證python-cimport torch; print(torch.__version__, torch.cuda.is_available())# 克隆GitHub 慢時先 source /etc/network_turbogitclone https://github.com/AI4Optics/AutoLens.git# 補丁一r_sensor 字段見 3.1 節(jié) Python 片段# 補丁二測試圖mkdir-pdatasets/chartscpdatasets/resolution_chart1.png datasets/charts/NBS_1963_1k.png# 運行python 0_hello_deeplens.py# 結果定位find~-name*.png-newermt2026-10-07-execls-lh{}\;附錄 B資產(chǎn)路徑速查資產(chǎn)路徑狀態(tài)E1 剖面圖~/AutoLens/lens.png? 已產(chǎn)出補丁后鏡頭~/AutoLens/datasets/lens_zoo/cellphone.json?論文 PDF本地H:\zj\Curriculum Learning\Curriculum Learning .pdf參考Zenodo 4.5 GB 包zenodo.org/records/8358592? 推遲至 E4附錄 C自查清單能說出 RMS spot radius 的含義與論文中的角色評價用非損失函數(shù)——損失是圖像域 MSE親手加載論文設計產(chǎn)物并復現(xiàn)其評價指標結果可復現(xiàn)兩次運行一致記錄了全部坑與修法渲染仿真圖待有卡模式與 E2 合并