:如何用pytorch_inference.py測出每個嵌套維度的準確率(附TTA技巧))
MRL推理與評估實戰(zhàn)如何用pytorch_inference.py測出每個嵌套維度的準確率附TTA技巧【免費下載鏈接】MRLCode repository for the paper - Matryoshka Representation Learning項目地址: https://gitcode.com/gh_mirrors/mrl/MRLMRLMatryoshka Representation Learning套娃表示學習是同名論文的官方開源實現(xiàn)其評估腳本pytorch_inference.py可以一條命令測出同一個 ResNet50 模型在 82048 各嵌套維度下的 Top-1/Top-5 準確率還支持 TTA 測試時增強與 ImageNet 魯棒性基準評測。本文帶你走通從環(huán)境配置到讀懂輸出的 MRL 推理評估完整流程。為什么能測出每個嵌套維度的準確率Matryoshka 的核心思想一個 2048 維特征向量的前綴本身就是一個可用的短表示。官方實現(xiàn)用 MRL_Linear_Layer 在 8、16、32、64、128、256、512、1024、2048 這 9 個維度上同時訓練分類頭因此評估時天然可以逐維度拆解環(huán)境準備三步裝好依賴與數(shù)據(jù)git clone https://gitcode.com/gh_mirrors/mrl/MRL cd MRL pip3 install -r requirements.txt評測數(shù)據(jù)需要序列化為 FFCV 格式write_imagenet.sh 可一鍵完成cd train export IMAGENET_DIR/path/to/imagenet export WRITE_DIR/your/write/dir ./write_imagenet.sh 500 0.50 90一鍵評估命令快速測出各嵌套維度準確率cd inference python pytorch_inference.py --path final_weight.pt --dataset V1 --mrl三種典型模型形態(tài)命令只需微調(diào)參數(shù)# MRL-E 高效版單頭按維度切分 python pytorch_inference.py --path ckpt.pt --dataset V1 --mrl --efficient # 固定維度 FF 基線用 --rep_size 指定維度如 512 python pytorch_inference.py --path ckpt.pt --dataset V1 --rep_size 512 # 官方上傳的舊版 checkpoint命名如 r50_mrl1_e0_ff2048.pt python pytorch_inference.py --path r50_mrl1_e0_ff2048.pt --dataset V1 --mrl --old_ckpt常用參數(shù)速查表參數(shù)作用--path模型 checkpoint.pt路徑--datasetV11K 驗證集/ V2 / A / R / sketch--mrl以 MRL 模型加載一次評估全部 9 個維度--efficientMRL-E 變體--rep_size固定維度基線的維度MRL 模型不需要--tta開啟 TTA 測試時增強--old_ckpt兼容官方舊版 checkpoint--workersdataloader 進程數(shù)默認 12讀懂輸出逐維度 Top-1 / Top-5 與單圖耗時腳本會為每個嵌套維度依次打印三段指標Rep. Size 8 Top-1 accuracy for 8 : xx.xx Top-5 accuracy for 8 : xx.xx Total time: xx.x (average time per image: xx.xx ms)逐維度統(tǒng)計全部由 utils.py 中的evaluate_model_nesting()完成對每個維度做 top-5 排序、累計 Top-1/Top-5 命中數(shù)最后按圖片總數(shù)歸一化。想評估其他維度只需修改腳本頂部的NESTING_LIST常量pytorch_inference.py。TTA技巧水平翻轉(zhuǎn) logits融合準確率再提一截加上--tta參數(shù)即可開啟 TTATest-Time Augmentation。實現(xiàn)非常簡潔原圖與水平翻轉(zhuǎn)圖各推理一次兩組 logits 相加融合# utils.py 中 TTA 的核心邏輯 logits model(img_input) logits model(torch.flip(img_input, dims[3]))torch.flip(..., dims[3])生成鏡像圖兩組 logits 求和后取 softmax2 倍縮放不影響 argmax 排序從而穩(wěn)定帶來小幅準確率提升。?? 注意官方論文報告的分類結(jié)果不含 TTATTA 主要服務(wù)于自適應(yīng)分類的模型級聯(lián)場景可參考 model_analysis/ 目錄。進階一魯棒性基準一鍵切換--dataset支持四個魯棒性測試集命令結(jié)構(gòu)完全一致V2ImageNetV2經(jīng) imagenetv2_pytorch 自動下載無需本地路徑AImageNet-ARImageNet-RsketchImageNet-Sketch后三者需放在ROOT目錄默認../../IMAGENET/。ImageNet-A/R 只有 200 個類腳本通過 imagenet_id.py 中的索引映射自動選取對應(yīng) logits 列無需任何手工處理。進階二保存推理結(jié)果銜接模型分析--save_logits、--save_softmax、--save_gt、--save_predictions四個開關(guān)會把每張圖的 logits、概率、真值標簽與預(yù)測結(jié)果存成 .pth 文件命名自動組合為mrl1_efficient0_datasetV1_ttaFalse_logits.pth形式供 model_analysis/ 下的分析 notebook 直接使用GradCAM可視化各嵌套維度的注意力可見小維度更易混淆同一超類內(nèi)的類別Custom SuperClass基于 WordNet 層級的 30 個超類性能分析Oracle Upper Bound為每張圖片尋找最優(yōu)維度計算理論上限Model Cascades模型級聯(lián)策略擴展同一個腳本做圖像檢索評估加--retrieval參數(shù)同一腳本即可轉(zhuǎn)做特征導(dǎo)出把數(shù)據(jù)庫與查詢集的特征向量 dump 成 .npy 數(shù)組再配合 retrieval/ 目錄下的 notebookfaiss_nn.ipynb、reranking.ipynb完成近鄰檢索與重排序。各嵌套維度下的檢索質(zhì)量對比常見問題 FAQcheckpoint 里帶module.前綴訓練端用 DDP 保存utils.py 的get_ckpt()會自動剝掉前 7 個字符通常無需處理。--rep_size沒生效MRL 模型會忽略該參數(shù)--mrl下默認評估全部 9 個維度。加載官方 checkpoint 報錯舊版頭結(jié)構(gòu)MultiHead/SingleHead必須加--old_ckpt才能正確構(gòu)建。只能在 GPU 上跑腳本內(nèi)部固定調(diào)用model.cuda()需 CUDA 環(huán)境。想改嵌套維度修改 pytorch_inference.py 頂部的NESTING_LIST即可。小結(jié)一條命令pytorch_inference.py --mrl即可輸出 8→2048 共 9 個嵌套維度的 Top-1/Top-5 準確率與單圖耗時加--tta用水平翻轉(zhuǎn)測試時增強輕松再提一點準確率加--save_*系列開關(guān)保存推理結(jié)果銜接模型分析與 GradCAM 可視化魯棒性基準V2/A/R/sketch與圖像檢索評估復(fù)用同一套腳本參數(shù)切換即可【免費下載鏈接】MRLCode repository for the paper - Matryoshka Representation Learning項目地址: https://gitcode.com/gh_mirrors/mrl/MRL創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考