忘記密碼
隨著深度學習的興起,機器學習算法通過大量的訓練數據,在各個領域取得了非常好的性能,但在數據十分稀缺或難以收集時,模型往往無法達到令人滿意的性能。為了解決這一問題,少樣本學習(Few Shot Learning)通過利用先驗知識,使得機器學習算法能夠在少量的樣本上進行學習。
近年來,少樣本學習逐漸成為學術界和產業界的研究熱點,同時它已經從最基礎的圖像分類任務開始向不同任務擴展。但遺憾的是,一直沒有通用的算法庫來服務各類少樣本任務算法的研究。
現在,為了填補這一空白,OpenMMLab 隆重推出了 MMFewShot !
MMFewShot 對當下流行的基于深度學習的少樣本分類與檢測算法,提供了統一的訓練、推理、評估的算法框架。其具有簡潔的用戶接口與高效、強大的基準模型,部分實現精度超出官方版本。此外,MMFewShot 延續了 OpenMMLab 系列的模塊化風格,繼承了高度靈活的 config 功能少樣本算法庫。
MMFewShot代碼庫已經全面開源。GitHub鏈接:https://github.com/open-mmlab/mmfewshot
【首個支持分類與檢測的開源少樣本算法庫】
少樣本學習由于問題設定的需要,往往會通過隨機采樣少量數據,來對模型的泛化性進行評估。并且許多算法需要通過多個階段,或繁瑣的操作來對數據進行交互。這兩點為代碼復現、借鑒、公平對比都帶來了很大的困難。
MMFewShot 則包含了如下特點:
8 種少樣本分類算法,包括了 Baseline++、MatchingNet、ProtoNet、RelationNet 等;
6種少樣本檢測算法,包括了 TFA、FSCE、MetaRCNN、AttentionRPN 等;
支持多種數據采樣邏輯;
對于少樣本分類任務,支持 DistributedDataParallel 進行多卡訓練以及 Meta Test;
對于少樣本檢測任務,給出了不同算法在同一設定下統一的評價指標。
【強大的基準模型】
在 MMFewShot 中,我們復現的部分少樣本分類和檢測算法,超過官方公布精度。同時我們還對早期的一些少樣本檢測算法配置進行調整,使得模型遠超當時的實現結果。例如,TFA 模型在 VOC Split1 數據集上的 1 shot 到 10 shot 的評價結果,均高于論文公布結果(*)。
再如,我們復現并調整了 Meta RCNN 的訓練策略,從而使得在統一評價的設定下遠超當時論文公布的結果(*)。
【模塊化設計和豐富靈活的配置文件】
同 OpenMMLab 其他算法庫一樣,我們使用統一框架和模塊化設計實現了各個算法。一方面可以盡量實現代碼復用,另一方面,方便開發者基于此框架實現新的算法。
以下是 MMFewShot 的大致框架:
MMFewShot 由 4 個部分組成:Datasets、Models、Core 和 APIs。
Datasets 用于數據集加載和預處理,其中包含訓練所需的數據集,數據增廣的 pipelines 以及負責數據采樣的 dataset wrapper 和 dataloader wrapper;
Models 是最重要的部分,算法模型在這里實現;
在 APIs 中,我們為模型訓練、測試和推理提供一鍵啟動的接口;
Core 中實現了用于模型的評估工具和定制的 hooks。
在配置文件方面,得益于 OpenMMLab 強大且高度靈活的 cfg 模式和注冊器機制, MMFewShot 在不改動代碼只編輯配置文件的情況下,便可實施消融實驗。
計算機視覺領域中常規的分類、檢測等任務的算法和框架已日臻成熟,在這些任務上進行少樣本學習,目前還有許多亟待解決的問題,希望 MMFewShot 能夠成為該研究領域的基礎設施,降低該領域的研究門檻。