【华为云 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)下載至本地,或者從網絡上下載若干張包含貓或者狗的圖片作為測試圖片。
在“部署上線”->"在線服務"中,找到自己剛剛部署的在線服務,點擊進入,然后點擊“預測”頁簽。點擊“上傳”按鈕,選擇準備好的貓或者狗圖片,并上傳,然后點擊“預測”按鈕,預測結果會出現在右側輸出框中,如下圖所示:
如果上傳的圖片中不包含貓或者狗,可能會出現錯誤的結果。
注意:實驗完成后,為了防止繼續扣費,需要把在線服務停止掉,在線服務停止后可以重新啟動。點擊“停止”按鈕即可:
總結
以上是生活随笔為你收集整理的【华为云 ModelArts-Lab AI实战营】第二期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: N900超频和刷9G-home一气呵成
- 下一篇: Android版‘音乐一点通’音乐播放器