項目介紹
PPMA(Paddle Model Analysis)是一個基於飛槳實現的一個模型分析小工具,它以極簡主義為特色,高度封裝瞭飛槳代碼以便讓大傢用最少的代碼來完成模型的分析,目前所支持的功能有ImageNet精度驗證、可視化圖片Top5預測類別、測試模型Params、Throughput、類激活圖可視化(CAM)、測試時數據增強(TTA)等,在這裡你可以用最少三行代碼來實現想要的功能。
其中ImageNet精度驗證在計算Top5準確率上用瞭飛槳的API(paddle.metric.Accuracy),減少瞭代碼的編寫。類激活圖可視化CAM遷移瞭pytorch-grad-cam項目,同時參考瞭飛槳InterpretDL庫的幾行代碼(這裡推薦一下IntepretDL,它是基於飛槳的可解釋性算法庫,不僅包含可視化算法,還能從數據集和訓練過程的角度去解釋模型),測試時數據增強TTA遷移瞭ttach項目,用飛槳代碼進行高階封裝。
設計思路
【為什麼設計】
圖像分類作為CV的基礎任務,在ImageNet上訓練的權重能更好遷移到下遊任務,比如目標檢測、語義分割等。所以分析基於ImageNet上訓練的模型有助於我們能更好瞭解掌握模型的優劣,正是基於此,本項目簡潔封裝瞭飛槳基礎代碼,以便用戶能用至少三行代碼來完成對模型的分析。
【怎麼設計】
目前有很多優秀的庫擁有著簡潔易用的體驗,比如fastai、keras、scikit-learn,以及飛槳自傢的PaddleHapi,這些都是對復雜的代碼進行封裝,大大降低瞭用戶上手難度以及用戶學習成本,同時高度的封裝帶來的是靈活性、自定義性的下降,如何去權衡這兩個矛盾是一個需要思考的問題。
在嘗試體驗上述工具後,總結瞭對於一個工具是否簡潔易用需要看以下兩點:
1.命名的藝術
對函數的命名是一個需要推敲磨打的技術活,一方面函數命名盡量簡單直觀,做到用戶自然記憶不需要查函數名,這就要求盡量命名短,單詞意思盡量貼合使用場景。一方面又要避免與用戶變量命名習慣沖突,比如"img"這個命名很常見,大多數用來表示一張圖片,故命名函數時盡可能避開它,這能降低因為命名問題造成的error。
c2cf44ca116ed3ec7b90c258a28491ef
2.API的設計
高度封裝以及靈活性是一對矛盾。比如具有高度封裝的Keras,其靈活性和自定義性沒有Pytorch那麼好。在本項目(模型分析)上,因為我們隻是針對具體任務進行分析,其自定義性需求並不是那麼高,我們可以適當提高封裝性,同時支持更多的默認參數,用戶可以通過修改默認參數來完成特定需求,比如CAM增加自定義標簽(默認是網絡輸出的標簽)查看相應激活圖。
如何使用
AI Studio在線運行本項目:
http://aistudio.baidu.com/aistudio/projectdetail/2143665
1.安裝PPMA
pip install ppma
承接上文: 更新记录: 2023.3.30 “基于马来语的混合语”从“基于亚洲其它语言”中提出单独作为一章(+修改标题),并大幅扩充 ...