手把手教你使用ModelArts的自動學習識別毒蘑菇分類

choubou發表於2021-09-11
摘要:本文介紹了ModelArts如何透過自動學習進行毒蘑菇的識別。

想當年,白雪公主吃了毒蘑菇,換來了白馬王子的一吻。如果白雪公主沒有吃毒蘑菇,還會遇到白馬王子嗎?張小白覺得不見得——說不定她會遇到張小白。張小白給她AI MindSpore Lite推理了一下,她就不會中毒,也就會鍾情於張小白的AI的神奇,也就不會移情給白馬王子了。

為了早日給白雪公主安利一下毒蘑菇的知識點,張小白今天就寫下了這篇透過ModelArts自動學習進行毒蘑菇分類的文字,希望白雪公主能夠看到,並關注點個贊什麼的。

ModelArts的自動學習功能也就幾步:

(1)準備毒蘑菇資料集

(2)建立自動學習專案,進行資料標註

(3)對資料集進行模型訓練

(4)將訓練好的模型部署上線

(5)測試已部署上線的服務,進行蘑菇圖片的推理。

先來建立資料集:首先把毒蘑菇的資料集準備好,點選以下連結下載zip包:

檔案有951M,耐心下載。下載完畢後將其解壓,

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

開啟mushrooms/train資料夾,下面存放了毒蘑菇圖片的9個分類。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

將這些圖片(帶目錄)上傳到自己的OBS桶中。

張小白上傳的OBS路徑為是obs://mindspore-21day-tutorials/resnet-50-2/mushrooms/train/

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

然後,新建一個dataset-dumogu資料集:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

由於OBS裡面是按照目錄分類的,可以先匯入第一個目錄,如上圖所示。

輸入:/mindspore-21day-tutorials/resnet-50-2/mushrooms/train/Agaricus/

輸出:/mindspore-21day-tutorials/resnet-50-2/output-mindspore/

建立後,可以先將目前匯入的圖片全部標註為Agaricus。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

標註完這一類之後,可以在這個資料集上面點選”匯入“

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

填入第二個分類的OBS位置:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

點選確定。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

系統會進行該目錄資料集的匯入任務。

匯入完畢,可以當看到 已標註的個數和整個資料集的數量:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

本次匯入的圖片(資料集)會是未標註狀態:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

此時可將點選圖片下方每頁顯示的最大數量跳到最大(目前是60),然後再選擇”選擇當前頁“.

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

並在標籤名中輸入這類未標註的圖片的標籤,如Suillus,點選確認。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

可看到未標註的數量在減少,而已標註為Suillus的圖片數量在增加:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

如此反覆標註 未標註的圖片,直到未標註的圖片全部標註完畢,然後再進行其他目錄(其他類別)的資料集的匯入和標註。如此反覆,直到標註完全結束。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

(這確實是一個體力活,人稱”資料標註工程師“。)

好了,我們的資料集就準備好了。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

在標註完之後,ModelArts會在 前面設定的輸出目錄下生成以下目錄:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

這之下又有5個目錄:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

其中annotation目錄是標註檔案目錄,裡面內容為:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

V002.manifest。

開啟後,具體內容如下:

{"annotation":[{"name":"Cortinarius","type":"modelarts/image_classification","creation-time":"2020-11-11 11:07:34","annotated-by":"human/zhanghui_china/zhanghui_china"}],"usage":"train","source":"s3://mindspore-21day-tutorials/resnet-50-2/mushrooms/train/Agaricus/import_1605064037231/219_m7t5mnXvmsw.jpg","id":"0008324d2a2933fa17ef490e8413edc1","sample-type":0}

其中將圖片和類別的關係標註在JSON中。

第二步,我們來建立一個自動學習的任務。

開啟自動學習選單。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

點選建立專案,輸入名稱: exeML-dumogu,選擇”已有資料集“並選中剛才建立的dataset-dumogu資料集。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

然後開啟建好的專案exeML-dumogu,點選右邊紅色的開始訓練:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

系統彈出以下選單,輸入訓練驗證比例未0.8,0.2,確定後開始模型訓練。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

確認配置後提交,

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

系統就開始進行模型訓練:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

訓練完畢後,會提示精確率,準確率,召回率等值,關鍵看準確率吧——94%,還可以。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

點選上圖的部署按鈕們開始進行部署。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

下一步:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

點選提交後,

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

耐心等待,也可以在”部署上線“-”線上服務“選單看到部署的進度。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

部署完畢後,出現以下畫面:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

可以點選”上傳“,上傳一些待預測的圖片。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

比如上圖,55%的機率是Agaricus...

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

我們上傳一個真的Agaricus

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

得分1.0. 完全準確。

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

手把手教你使用ModelArts的自動學習識別毒蘑菇分類手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

 

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

以上都是從資料集裡面直接拿的圖片,得分不是1.00就是0.99,飛常準。

張小白再從網上找一些毒蘑菇的圖片:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

手把手教你使用ModelArts的自動學習識別毒蘑菇分類手把手教你使用ModelArts的自動學習識別毒蘑菇分類手把手教你使用ModelArts的自動學習識別毒蘑菇分類

 

手把手教你使用ModelArts的自動學習識別毒蘑菇分類手把手教你使用ModelArts的自動學習識別毒蘑菇分類

這就有高有低了。

再找幾張可以吃的,如金針菇和香菇:

手把手教你使用ModelArts的自動學習識別毒蘑菇分類手把手教你使用ModelArts的自動學習識別毒蘑菇分類

好,我們回過頭來看看這9個分類的具體含義:

label_list = ["Agaricus雙孢蘑菇,傘菌目,蘑菇科,蘑菇屬,廣泛分佈於北半球溫帶,無毒",
              "Amanita毒蠅傘,傘菌目,鵝膏菌科,鵝膏菌屬,主要分佈於我國黑龍江、吉林、四川、西藏、雲南等地,有毒",
              "Boletus麗柄牛肝菌,傘菌目,牛肝菌科,牛肝菌屬,分佈於雲南、陝西、甘肅、西藏等地,有毒",
              "Cortinarius擲絲膜菌,傘菌目,絲膜菌科,絲膜菌屬,分佈於湖南等地(夏秋季在山毛等闊葉林地上生長)",
              "Entoloma霍氏粉褶菌,傘菌目,粉褶菌科,粉褶菌屬,主要分佈於紐西蘭北島和南島西部,有毒",
              "Hygrocybe淺黃褐溼傘,傘菌目,蠟傘科,溼傘屬,分佈於香港(見於松仔園),有毒",
              "Lactarius松乳菇,紅菇目,紅菇科,乳菇屬,廣泛分佈於亞熱帶松林地,無毒",
              "Russula褪色紅菇,傘菌目,紅菇科,紅菇屬,分佈於河北、吉林、四川、江蘇、西藏等地,無毒",
              "Suillus乳牛肝菌,牛肝菌目,乳牛肝菌科,乳牛肝菌屬,分佈於吉林、遼寧、山西、安徽、江西、浙江、湖南、四川、貴州等地,無毒",
              ]

自己找的幾個毒蘑菇圖片,分別被識別為:

Russula,無毒
Amanita,有毒
Lactarius,無毒
Amanita,有毒
Hygrocybe,有毒
Amanita,有毒
Lactarius,無毒
---------白雪公主的中毒率為 3/7.

而張小白找的那2張食用菇的圖片,分別被識別為:

Lactarius,無毒
Lactarius,無毒
---------白雪公主吃到美食的機率是 100%。

看來,7個小矮人還是有必要出現的,至少可以幫白雪公主試7次毒。

至於在實戰營得到的一個關鍵知識,也需要在這裡強調下:ResNet卷積神經網路,肯定會給一張並沒有分類的圖片搞個分類的,即便它不屬於任何分類,也會強分一下,只不過得分會稍微低一點,比如0.5,0.6,0.7之類的。這個並不是這個網路的無能,而是在深度學習這塊,現在就只能到這裡了。

所以,張小白認為,如果在得分特別低的情況下,我們就暫且在應用上不將其歸類就是了。(或者寫上得分,讓別人看到,反正真的不是也是個機率問題,也不能怪ResNet。說了這些,張小白感覺這個好像天氣預報的機率指數啊。)

好了,關於ModelArts自動學習完成毒蘑菇圖片識別的介紹暫時講到這裡吧。其實本文只是學習MindSpore的一個副產品。張小白的本意是想檢查下,這個資料集進行訓練,是否真的如MindSpore訓練結束後那樣不是很令人滿意,結果倒是較為滿意的。這樣子反而讓張小白無可奈何了。看來還是要細究下ResNet在MindSpore的應用裡面,到底出了啥問題。

本文分享自華為雲社群《張小白教你如何使用ModelArts的自動學習對毒蘑菇進行分類》,原文作者:張輝。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4548/viewspace-2796342/,如需轉載,請註明出處,否則將追究法律責任。

相關文章