極簡主義!幾行代碼助力你快速分析模型的神器來啦

項目介紹

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

发表回复

相关推荐

99句最美宋詞,邂逅99種心動

宋詞既書風花雪月,亦歌壯志豪情。它是浮在線裝書頁上的一彎殘月,即使你掩合書卷,也會在你心裡灑下一片溫柔的淒冷......今...

· 57秒前

6個步驟教你益生菌怎麼選,不用到處求推薦,自己辨別不踩雷!

不知道哪款益生菌好?不用到處求推薦,自己學會挑選才是不踩雷的關鍵。本文從菌種、菌株、添加量、加工工藝、過敏原信息等方...

· 2分钟前

什么是水泥纤维板?

01. 什么是水泥纤维板 水泥纤维板(fibercement board 缩写为FC板)是指以水泥为基本材料和胶黏剂以矿物纤维水泥和其它纤维 ...

· 3分钟前

什麼是同伴關系?

逐漸開始有想擺脫父母的限制昨天晚上有個孩子發信息給我說:“老師,我現在特別難受,特別傷心,為什麼班裡的同學都不喜歡我?...

· 4分钟前

【微语传记4.2】全球克里奥尔语/混合语盘点(下):基于法语、葡语、荷兰语、马来语和其它语言的混合语

承接上文: 更新记录: 2023.3.30 “基于马来语的混合语”从“基于亚洲其它语言”中提出单独作为一章(+修改标题),并大幅扩充 ...

· 8分钟前