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

本期實戰爲圖像分類第二期,我們使用數據智能標註、模型訓練和模型部署端到端模擬真實AI開發場景,構建一個圖像分類應用。

1. 配置ModelArts訪問祕鑰

登錄ModelArts管理控制檯,在“全局配置”界面添加訪問祕鑰,如下圖(如已添加密鑰,可跳過此步):

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

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張圖片

步驟 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爲我第一次實驗時已創建好的

步驟 3    在ModelArts數據標註中創建數據集

在ModelArts中左側找到“數據標註”,先做OBS服務授權,如下圖所示:

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

數據集名稱:dataset-dog-and-cat

數據集輸入位置:dog_and_cat_200文件夾所在的OBS路徑

數據集輸出位置:標註後數據的輸出OBS路徑。如果不存在,需要自己創建,我當前的是dog_and_cat_200_label,與dog_and_cat_200在同一個文件夾中

標註場景:物體

標註類型:圖像分類

添加標籤集:"dog"和"cat"

填寫完畢所有的字段後,點擊創建。

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

步驟 4    手工標註部分數據

點擊進入剛剛創建的數據集,手工標註部分數據。我們建議標註貓和狗各20到30張圖片,剩餘的圖片採用智能標註。手工標註的方式參考數據集頁面右上角的“標註樣例說明”。

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

步驟 5    剩餘的數據使用智能標註

點擊“智能標註“頁籤,然後點擊”啓動智能標註“按鈕。在彈出的對話框中,模型來源選擇“自動選擇”。然後點擊提交。(智能標註作業運行過程預計3到5分鐘左右,ModelArts使用高峯期可能會有時間延遲)

步驟 6    處理智能標註結果

智能標註作業完成後,我們需要人工仔細確認每張圖片的智能標註的結果

首先,對標註正確的圖片進行接納。

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

人工確認每張圖片,如果是cat,就選擇圖片(可以多選),然後點擊按鈕“將選中的圖片確認爲已標註”,接納標註結果。注意,不是cat的圖片,不要選,後面會處理。如下圖:

cat類別的圖片確認完之後,按照相同的方式處理dog類別。

對於錯誤的標註結果,我們在下一步中處理。

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

步驟 7    處理智能標註錯誤的結果

最後,對於智能標註錯誤的結果,可以在“未標註”頁籤統一查看到。

對於這些智能標註錯誤的圖片,我們點擊“啓動智能標註”按鈕,使用智能標註再次給這些圖片標註。原理是:由於訓練數據量增加,標註的精度會大大增加。

等待第二次的智能標註作業運行完成。

步驟 8    再次處理智能標註

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

迭代上述過程,直到完成所有圖片的標註。

小結

在本小節中,我們學習瞭如何使用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文件夾如果不存在,需創建,該文件夾名稱可以自定義)。

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

步驟 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“訓練作業”界面,單擊“創建”按鈕,進入創建訓練作業頁面。按照如下指導填寫字段:

名稱: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     查看作業運行結果。在訓練作業頁面,點擊作業名稱,進入作業詳情界面。可以查看到訓練作業的詳情,如下圖所示:

 

其中,配置信息展示的是創建訓練作業時填寫的參數和配置信息;

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

資源佔用情況展示CPU、GPU和內存的利用率;

評估結果展示訓練得到的模型的精度,本訓練腳本只計算了準確率。可以在以下位置查看模型精度

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

步驟 5     創建TensorBoard查看訓練過程,查看loss, accuracy等參數的變化信息。在訓練詳情頁面,點擊“創建TensorBoard”按鈕,會跳轉到創建TensorBoard頁面:

名稱:tensor-dog-and-cat

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

點擊“下一步”,確認參數,然後點擊“立即創建”。最後點擊“返回TensorBoard”,等待TensorBoard創建完成。

當狀態處於“運行中”時, 點擊TensorBoard名稱,進入TensorBoard,可以看到TensorBoard界面,如下所示:

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平臺約定:推理腳本的名稱必須爲customize_service.py,模型部署配置文件的名稱必須爲config.json。

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

 

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

 

名稱:model-dog-and-cat

版本:0.0.1

元數據來源:從訓練中選擇

選擇訓練作業:選擇之前創建的貓狗識別訓練作業

版本:選擇相應的版本

其他參數會自動加載

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

步驟 3     將模型部署成在線服務。

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

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

名稱:service-dog-and-cat

資源池:公共資源池

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

點擊“下一步”按鈕,然後點擊“立即創建”按鈕,最後點擊“查看服務詳情”。等待在線服務部署成功(狀態變成“運行中”),大概需要預計3到8分鐘左右,ModelArts使用高峯期可能會有時間延遲。

5. 發起預測請求

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

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章