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