天天看點

【華為雲 ModelArts-Lab AI實戰營】第二期

本期實戰為圖像分類第二期,我們使用資料智能标注、模型訓練和模型部署端到端模拟真實AI開發場景,建構一個圖像分類應用。

1. 配置ModelArts通路秘鑰

登入ModelArts管理控制台,在“全局配置”界面添加通路秘鑰,如下圖(如已添加密鑰,可跳過此步):

【華為雲 ModelArts-Lab AI實戰營】第二期

特别注意的點:區域選擇 北京一,我這邊已添加,因為在做第一期的時候有添加好,第一期的實踐位址:

https://github.com/huaweicloud/ModelArts-Lab/issues/49

2. 資料智能标注

在監督學習中,AI開發者首先需要給訓練資料打标簽。如果資料量比較大,給資料打标簽的工作量會很大。ModelArts的智能标注功能可以隻标注少量的資料,然後智能标注剩餘的資料,進而減少開發者的工作量。此小節中,我們示範ModelArts智能标注功能。

步驟 1    點選此處   (https://modelarts-labs.obs.cn-north-1.myhuaweicloud.com/end2end/image_recognition/dog_and_cat_200.tar.gz),下載下傳小樣本的貓狗識别資料集,然後解壓壓縮包至本地。

此資料集包含貓和狗的圖檔各100張,名稱為dog_and_cat_200,即經過7ZIP的兩次提取,獲得檔案夾,打開裡面會有200張圖檔

【華為雲 ModelArts-Lab AI實戰營】第二期

步驟 2    使用OBS Browser上傳檔案夾dog_and_cat_200至OBS路徑

/ai-course-001/dog_and_cat_recognition/

下(其中,ai-course-001是OBS桶名,在建立OBS桶的時候可以自己定義桶名,dog_and_cat_recognition是OBS桶下的一個檔案夾)。如果OBS桶和路徑不存在,需要自己建立。注意:OBS桶名全局唯一,如果建立桶時桶名沖突,需要選擇其他桶名。

OBS是對象儲存服務的英文縮寫,是華為雲上的資料存儲服務。

OBS Browser是OBS用戶端的英文名稱,用來上傳本地檔案至OBS。

OBS Browser的下載下傳連結:https://support.huaweicloud.com/clientogw-obs/zh-cn_topic_0045829056.html

以下是我本機操作時的檔案夾建立過程:檔案夾為dog_and_cat_recognition,ai-course-test為我第一次實驗時已建立好的

【華為雲 ModelArts-Lab AI實戰營】第二期

步驟 3    在ModelArts資料标注中建立資料集

在ModelArts中左側找到“資料标注”,先做OBS服務授權,如下圖所示:

【華為雲 ModelArts-Lab AI實戰營】第二期

然後點選“建立資料集”,建立資料集頁面填寫方式如下:注意紅框部分,按要求填寫,其中輸出位置的長度有限制,适當截取

【華為雲 ModelArts-Lab AI實戰營】第二期

資料集名稱:dataset-dog-and-cat

資料集輸入位置:dog_and_cat_200檔案夾所在的OBS路徑

資料集輸出位置:标注後資料的輸出OBS路徑。如果不存在,需要自己建立,我目前的是dog_and_cat_200_label,與dog_and_cat_200在同一個檔案夾中

标注場景:物體

标注類型:圖像分類

添加标簽集:"dog"和"cat"

填寫完畢所有的字段後,點選建立。

上述截圖中,太着急,dog拼錯了,可以點選修改,到修改畫面:

【華為雲 ModelArts-Lab AI實戰營】第二期

步驟 4    手工标注部分資料

點選進入剛剛建立的資料集,手工标注部分資料。我們建議标注貓和狗各20到30張圖檔,剩餘的圖檔采用智能标注。手工标注的方式參考資料集頁面右上角的“标注樣例說明”。

手工标注完的界面如下:  此處都各自标注 30張圖檔,如圖,我們看到已标注60張,未标注140張

【華為雲 ModelArts-Lab AI實戰營】第二期

步驟 5    剩餘的資料使用智能标注

點選“智能标注“頁簽,然後點選”啟動智能标注“按鈕。在彈出的對話框中,模型來源選擇“自動選擇”。然後點選送出。(智能标注作業運作過程預計3到5分鐘左右,ModelArts使用高峰期可能會有時間延遲)

【華為雲 ModelArts-Lab AI實戰營】第二期
【華為雲 ModelArts-Lab AI實戰營】第二期

步驟 6    處理智能标注結果

智能标注作業完成後,我們需要人工仔細确認每張圖檔的智能标注的結果。

首先,對标注正确的圖檔進行接納。

對智能标注結果進行分類,依次處理每個類别。點選類别下拉框,選擇其中一類,比如cat,如下圖所示:

【華為雲 ModelArts-Lab AI實戰營】第二期

人工确認每張圖檔,如果是cat,就選擇圖檔(可以多選),然後點選按鈕“将選中的圖檔确認為已标注”,接納标注結果。注意,不是cat的圖檔,不要選,後面會處理。如下圖:

【華為雲 ModelArts-Lab AI實戰營】第二期

cat類别的圖檔确認完之後,按照相同的方式處理dog類别。

對于錯誤的标注結果,我們在下一步中處理。

從結果來看,發現cat的識别還算正常,但是dog的識别上出現錯誤标注,如下圖:

【華為雲 ModelArts-Lab AI實戰營】第二期

步驟 7    處理智能标注錯誤的結果

最後,對于智能标注錯誤的結果,可以在“未标注”頁簽統一檢視到。

對于這些智能标注錯誤的圖檔,我們點選“啟動智能标注”按鈕,使用智能标注再次給這些圖檔标注。原理是:由于訓練資料量增加,标注的精度會大大增加。

等待第二次的智能标注作業運作完成。

步驟 8    再次處理智能标注

依據之前處理智能标注結果的流程,處理第二次的智能标注作業。

疊代上述過程,直到完成所有圖檔的标注。

【華為雲 ModelArts-Lab AI實戰營】第二期

小結

在本小節中,我們學習了如何使用ModelArts智能标注減少我們的标注工作量。當資料量比較小時,減少工作量的效果不是很明顯,但是當資料量較大、标注任務較複雜(比如目标檢測、執行個體分割等任務)的時候,智能标注将會幫助開發者顯著減少工作量。你可以使用自己的大樣本資料集體驗ModelArts的智能标注功能。

在接下來的模型訓練階段,由于本小節标注得到的資料量較少,我們不會采用該小節标注得到的資料集,而是采用已經标注好的資料集來訓練模型。

3. 模型訓練

接下來,我們基于 貓狗識别notebook案例 中開發的算法,編寫一個訓練腳本,然後使用ModelArts訓練作業訓練一個模型。

本案例使用的神經網絡模型是VGG16,VGG16模型是一個經典,而且簡單有效的神經網絡模型,可以有效地學習圖像的一些簡單的特征。VGG模型的解析見此連結 。

具體的送出訓練作業的步驟如下:

下載下傳 ModelArts-Lab 項目:https://github.com/huaweicloud/ModelArts-Lab.git

步驟 1     在本地的ModelArts-Lab代碼庫

train_inference/image_recognition/codes/

路徑下找到模型訓練腳本dog_and_cat_train.py ,将訓練腳本上傳至OBS路徑

/ai-course-001/dog_and_cat_recognition/codes/

下(codes檔案夾如果不存在,需建立,該檔案夾名稱可以自定義)。

訓練腳本的名稱可以自定義。如下圖所示:

【華為雲 ModelArts-Lab AI實戰營】第二期

步驟 2     下載下傳訓練資料集  (https://modelarts-labs.obs.cn-north-1.myhuaweicloud.com/end2end/image_recognition/dog_and_cat_25000.tar.gz)至本地,無需解壓 (在訓練腳本中會做解壓操作)。然後上傳訓練資料集壓縮包至OBS路徑

/ai-course-001/dog_and_cat_recognition/data/

下(data檔案夾如果不存在,需建立,該檔案夾名稱可以自定義)。

該訓練資料集壓縮包共五百多MB,包含貓和狗圖檔各12500張,資料集檔案名稱是 dog_and_cat_25000.tar.gz 。

步驟 3     在ModelArts“訓練作業”界面,單擊“建立”按鈕,進入建立訓練作業頁面。按照如下指導填寫字段:

【華為雲 ModelArts-Lab AI實戰營】第二期
【華為雲 ModelArts-Lab AI實戰營】第二期

名稱:

dog_and_cat_recognition

資料來源:選擇資料存儲位置

資料存儲位置:訓練資料集的路徑,選擇OBS路徑

/ai-course-test/dog_and_cat_recognition/data/

算法來源:常用架構

AI引擎:TensorFlow,TF-1.13.1-python3.6

代碼目錄:訓練腳本所在的目錄,選擇OBS路徑

/ai-course-test/dog_and_cat_recognition/codes/

啟動檔案:訓練腳本,選擇OBS路徑

/ai-course-test/dog_and_cat_recognition/codes/dog_and_cat_train.py

運作參數:添加max_epochs=20。運作參數中設定的變量會傳入到訓練腳本中,經過解析,可以使用。此字段用于設定算法中的超參。

訓練輸出位置:選擇OBS路徑

/ai-course-test/dog_and_cat_recognition/output/

(output檔案夾如果不存在,該檔案夾名稱可以自定義,需建立)。訓練輸出位置用來儲存訓練輸得到的模型和TensorBoard日志。

資源池:機器的規格,選擇“計算型GPU(P100)執行個體”,表示這台機器包含一張GPU卡。此處是P100,不是4P100

計算節點個數:選擇1,表示我們運作一個單機訓練任務。(注:本訓練腳本不支援分布式訓練)

所有字段填寫好之後,确認參數無誤,點選下一步,然後點選立即建立,開始訓練。訓練時長預計5到8分鐘左右,ModelArts使用高峰期可能會有時間延遲。

步驟 4     檢視作業運作結果。在訓練作業頁面,點選作業名稱,進入作業詳情界面。可以檢視到訓練作業的詳情,如下圖所示:

【華為雲 ModelArts-Lab AI實戰營】第二期

其中,配置資訊展示的是建立訓練作業時填寫的參數和配置資訊;

日志展示的是訓練腳本運作過程中輸出的日志,如果作業運作失敗,可以通過日志資訊定位問題;

資源占用情況展示CPU、GPU和記憶體的使用率;

評估結果展示訓練得到的模型的精度,本訓練腳本隻計算了準确率。可以在以下位置檢視模型精度:

【華為雲 ModelArts-Lab AI實戰營】第二期

本次訓練得到的模型的精度是0.8368。

步驟 5     建立TensorBoard檢視訓練過程,檢視loss, accuracy等參數的變化資訊。在訓練詳情頁面,點選“建立TensorBoard”按鈕,會跳轉到建立TensorBoard頁面:

【華為雲 ModelArts-Lab AI實戰營】第二期

名稱:tensor-dog-and-cat

日志路徑:TensorBoard日志的OBS存儲路徑,會自動讀取,請保持不變。

點選“下一步”,确認參數,然後點選“立即建立”。最後點選“傳回TensorBoard”,等待TensorBoard建立完成。

當狀态處于“運作中”時, 點選TensorBoard名稱,進入TensorBoard,可以看到TensorBoard界面,如下所示:

【華為雲 ModelArts-Lab AI實戰營】第二期

TensorBoard可以直覺地顯示訓練過程中loss、accuracy等評估名額的變化曲線,為開發者優化模型精度提供依據。

4. 部署模型

模型訓練完成後,可以在ModeArts上将模型部署為線上預測服務。

步驟 1     在本地的ModelArts-Lab代碼庫

train_inference/image_recognition/codes/

路徑下中找到推理腳本customize_service.py 和模型部署配置檔案config.json ,然後将這兩個檔案上傳到訓練輸出位置

/ai-course-001/dog_and_cat_recognition/output/

下的model目錄下(其中,model目錄是訓練作業儲存模型的目錄。如果使用多版本訓練,注意訓練輸出位置中包含版本号)。

customize_service.py推理腳本中有兩個方法。

_preprocess

 是預處理方法,在推理請求前調用,用于将API接口使用者原始請求資料轉換為模型期望輸入資料。

_postprocess 

是後處理方法,在推理請求完成後調用,用于将模型輸出轉換為API接口輸出。

config.json 是模型部署配置資訊,定義了AI引擎的類别,推理腳本需要的Python依賴等。

【華為雲 ModelArts-Lab AI實戰營】第二期

ModelArts平台約定:推理腳本的名稱必須為customize_service.py,模型部署配置檔案的名稱必須為config.json。

步驟 2    導入模型。點選“模型管理”界面,然後點選“導入”按鈕,如下圖:

【華為雲 ModelArts-Lab AI實戰營】第二期

進入導入模型界面,按照下圖指導,填寫參數:

【華為雲 ModelArts-Lab AI實戰營】第二期

名稱:model-dog-and-cat

版本:0.0.1

中繼資料來源:從訓練中選擇

選擇訓練作業:選擇之前建立的貓狗識别訓練作業

版本:選擇相應的版本

其他參數會自動加載

點選立即建立按鈕,等待模型導入完成。

步驟 3     将模型部署成線上服務。

在模型管理頁面, 找到之前導入的模型,點選“部署”下拉框中的“線上服務”,如下圖:

【華為雲 ModelArts-Lab AI實戰營】第二期

進入部署頁面,按照下圖指導,填寫相關參數:

【華為雲 ModelArts-Lab AI實戰營】第二期

名稱:service-dog-and-cat

資源池:公共資源池

選擇模型及配置:會自動加載,保持預設

點選“下一步”按鈕,然後點選“立即建立”按鈕,最後點選“檢視服務詳情”。等待線上服務部署成功(狀态變成“運作中”),大概需要預計3到8分鐘左右,ModelArts使用高峰期可能會有時間延遲。

【華為雲 ModelArts-Lab AI實戰營】第二期

5. 發起預測請求

當線上服務部署成功後,我們可以使用測試圖檔進行預測。

将本案例提供的幾張測試圖檔 (https://github.com/huaweicloud/ModelArts-Lab/blob/master/train_inference/image_recognition/data)下載下傳至本地,或者從網絡上下載下傳若幹張包含貓或者狗的圖檔作為測試圖檔。

在“部署上線”->"線上服務"中,找到自己剛剛部署的線上服務,點選進入,然後點選“預測”頁簽。點選“上傳”按鈕,選擇準備好的貓或者狗圖檔,并上傳,然後點選“預測”按鈕,預測結果會出現在右側輸出框中,如下圖所示:

【華為雲 ModelArts-Lab AI實戰營】第二期
【華為雲 ModelArts-Lab AI實戰營】第二期
【華為雲 ModelArts-Lab AI實戰營】第二期
【華為雲 ModelArts-Lab AI實戰營】第二期

如果上傳的圖檔中不包含貓或者狗,可能會出現錯誤的結果。

注意:實驗完成後,為了防止繼續扣費,需要把線上服務停止掉,線上服務停止後可以重新啟動。點選“停止”按鈕即可:

繼續閱讀