實戰!手把手帶你搭建圖像分類 AI 服務

人工智能技術(以下稱 AI)是人類優秀的發現和創造之一,它代表着至少幾十年的未來。在傳統的編程中,工程師將自己的想法和業務變成代碼,計算機會根據代碼設定的邏輯運行。與之不同的是,AI 使計算機有了「屬於自己的思想」,它就像生物一樣,能夠「看」、「聽」、「說」、「動」、「理解」、「分辨」和「思考」。

AI 在圖像識別和文本處理方面的效果尤爲突出,且已經應用到人類的生活中,例如人臉識別、對話、車牌識別、城市智慧大腦項目中的目標檢測和目標分類等。

接下來,我們將瞭解圖像分類的需求、完成任務的前提條件和任務實踐。

圖像分類以及目標檢測的需求

AI 的能力、方向和應用都非常廣泛,這裏我們主要討論的是圖像分類方向。

圖像分類,指的是對圖像中主要目標的識別和歸類。例如在很多張隨機圖片中分辨出哪一張中有直升飛機、哪一張中有狗。或者給定一張圖片,讓計算機分辨圖像中主要目標的類別。

目標檢測,指的是檢測目標在圖片中的位置。例如智慧交通項目中,路面監控攝像頭拍攝畫面中車輛的位置。目標檢測涉及兩種技術:分類和定位。也就是說首先要判定圖片中是否存在指定的目標,然後還需要確定目標在圖片中的位置。

這樣的技術將會應用在人臉識別打卡、視頻監控警報、停車場、高速收費站和城市智慧交通等項目當中。

計算機識圖的步驟

我們可以將計算機的看作是一個小朋友,它在擁有「分辨」的能力之前,必須經歷「看」和「認識」這兩個步驟,在看過很多圖片後,它就會形成自己的「認知」,也就是獲得了「分辨」能力。

簡單來說,AI 工程師必須準備很多張不同的圖片,並且將一大部分圖片中的目標標註出來,然後讓計算機提取每張圖片中的特徵,最後就會形成「認知」。

想一想,你還小的時候,是如何分辨鴨子和鵝的呢?

是不是根據它們的特徵進行判斷的?

學習和編程實現任務需要的條件

瞭解完需求和步驟之後,我們還需要準備一些條件(大家不要慌,今天用不到這麼複雜的條件,會點擊鼠標就可以了):

  • 首先,你必須是一名 IT 工程師。
  • 然後你有一定的數學和統計學習基礎。
  • 你還得了解計算機處理圖像的方式。
  • 如果圖片較多,你需要一臺擁有較高算力 GPU 的計算機,否則計算機的「學習」速度會非常慢。

具備以上條件後,再通過短時間(幾天或一週)的學習,我們就能夠完成圖像分類的任務。

討論個額外的話題,人人都能夠做 AI 工程師嗎?

AI 的門檻是比較高的,首先得具備高等數學、統計學習和編程等基礎,然後要有很強的學習能力。對於 IT 工程師來說:

  • 編程基礎是沒有問題的
  • 學習能力看個人,但花時間、下功夫肯定會有進步
  • 高等數學基礎,得好好補
  • 統計學習基礎,也得好好補
  • 經濟上無壓力

如果你想要成爲一名 AI 工程師,那麼「高學歷」幾乎是必備的。無論是一線互聯網企業或者新崛起的 AI 獨角獸,它們爲 AI 工程師設立的學歷門檻都是「碩士」。除非特別優秀的、才華橫溢的大專或本科生,否則是不可能有機會進入這樣的企業做 AI 工程師的。

AI 在硬件、軟件、數據資料和人才方面都是很費錢的,普通的 IT 工程師也就是學習瞭解一下,遠遠達不到產品商用的要求。

普通的中小企業,極少有資質和經濟能力吸引高學歷且優秀的 AI 工程師,這就導致了資源的聚攏和傾斜。

想要將圖像分類技術商用,在讓計算機經歷「看」、「認識」的步驟並擁有「分辨」能力後,還要將其轉換爲 Web 服務。

嗯,聽起來不是一件簡單的事。

但我只想將人臉識別或者圖像分類的功能集成到我的項目當中,就那麼困難嗎?

我只是一個很小的企業,想要在原來普通的視頻監控系統中增加「家人識別」、「陌生人警報」、「火災警報」和「生物闖入提醒」等功能,沒有上述的條件和經濟投入,就不能實現了嗎?

我好苦惱!

有什麼好辦法嗎?

有的!這就是這篇文章要介紹的新方法——ModelArts。

ModelArts 簡介和條件

ModelArts 是華爲雲推出的產品,它是面向開發者的一站式 AI 開發平臺。

它爲機器學習與深度學習提供海量數據預處理及半自動化標註、大規模分佈式 Training、自動化模型生成,及端-邊-雲模型按需部署能力,幫助用戶快速創建和部署模型,管理全週期 AI 工作流。

它爲用戶提供了以下可選模式:

  • 零編碼經驗、零 AI 經驗的自動學習模式
  • 有 AI 研發經驗的全流程開發模式

同時,它將 AI 開發的整個過程都集成了進來。例如數據標註、模型訓練、參數優化、服務部署、開放接口等,這就是「全週期 AI 工作流」。

重要的是,這些操作都是可視化的!

這些條件對於想要將 AI 技術應用於產品,但無奈條件不佳的個人開發者和企業提供了機會,這很重要!可以說 ModelArts 縮短了 AI 商用的時間,降低了對應的經濟成本、時間成本和人力成本。

更貼心的是,華爲雲 ModelArts 爲用戶準備了很多的教程。即使用戶沒有經驗,但只要按照教程指引進行操作,也能夠實現自己的 AI 需求。

想想就美滋滋,太棒了!

趕緊體驗一下!

圖像分類服務實踐

這次我們以零 AI 基礎和零編碼經驗的自動學習模式演示如何搭建一個圖像分類的 AI 服務。

前期準備和相關設置

首先打開華爲雲官網,將鼠標移動導航欄的「EI 企業智能」菜單上,並在彈出的選項中選擇「AI 開發平臺 ModelArts」。

進入到 ModelArts 主頁後,可以瀏覽一下關於 ModelArts 的介紹。

點擊 Banner 處的「進入控制檯」按鈕,頁面會跳轉到 ModelArts 控制檯。控制檯大體分爲幾個區域:

區域 2 自動學習模式中有圖像分類,將鼠標移動到圖標上,並點擊彈出的「開始體驗」按鈕。如果是華爲雲的新用戶,網頁會提示我們輸入訪問密鑰和私有訪問密鑰。

沒有密鑰的開發者可以點擊頁面給出的鏈接並按照指引獲取密鑰,得到兩種密鑰後將其填入框中,點擊「確定」按鈕即可。

此時正式進入項目創建流程中,點擊「圖像分類」中的「創建項目」按鈕(華爲云爲用戶準備了對應的教程,很貼心)。

在創建項目的頁面中,我們需要填兩三項配置。要注意的是,項目是按需計費的,這次我們只是體驗,也沒有訓練和存儲太多數據,所以費用很低,大家不用擔心。

項目名稱可以根據需求設定一個容易記的,案例中我將其設定爲 ImageCLF-Test-Pro。在訓練數據的存儲選擇處,點擊輸入框中的文件夾圖標,在彈出的選項卡中新建 obs 桶

並在創建的桶中新建文件夾

最後輸入描述,並點擊頁面右下角的「創建項目」按鈕即可。

上傳圖片和標註

項目創建好之後,我們需要準備用於訓練的多張圖片,圖片儘量清晰、種類超過 2 類、每種分類的圖片數量不少於 5 張。

當然,數據越多、形態越豐富、標註越準確,那麼訓練結果就會越好,AI 服務的體驗就會越好。

這裏我準備了一些直升機、坦克和狗的圖片,共 45 張。

將其批量導入後勾選同類型的圖片,一次性爲多張圖添加標籤。

依次將 3 類圖片標註後,左側圖片標註的「未標註」選項卡中的圖就會清空,而「已標註」選項卡中可以看到標註好的圖片。

訓練設置

右側的標籤欄會顯示每種分類和對應的圖片數量,下方的訓練設置可以讓我們設置訓練時長的上限,高級設置中還有推理時間。

這個我們不必理解它的作用,可以按照默認值進行,也可以稍微調整,例如將訓練時長的上限改爲 0.2。

開始訓練

設置好後點擊「開始訓練」按鈕就會進入訓練狀態,耐心等待一段時間(圖片越少訓練時間越短)。

訓練頁左側會顯示訓練狀態,例如初始化、運行中和運行成功/失敗等。訓練完成後,右側會給出運行時長、準確率、評估結果和訓練參數等信息。

服務的自動化部署

我們的目的是搭建一個圖像分類的 AI 服務,所以在訓練結束後點擊左側的「部署」按鈕,此時會進入自動化部署的流程。

稍微等待些許時間(本次約 10 分鐘)後,頁面提示部署完成,同時頁面將會分爲 3 欄。

左側 1 區爲部署狀態和控制。中間 2 區可以在線測試圖片分類,右側 3 區會顯示在線測試的結果(包括準確率),右側 4 區提供了 API 接口,方便我們將其集成到 Web 應用當中。

在線預測,訓練結果測試

我們來測試一下,準備幾張沒有經過標註的圖片,圖片中可以包含狗、直升機和坦克。點擊中間 2 區的「上傳」按鈕並選擇一張圖片,然後點擊「預測」按鈕。

1 秒中不到,右側 3 區就會返回本次預測的結果:

{
"predicted_label": "狗",
"scores": [
[
"狗",
"0.840"
],
[
"直升機",
"0.084"
],
[
"坦克",
"0.076"
]
]
}

這次我們上傳的是包含狗的圖片,返回的預測結果中顯示本次預測的標籤是「狗」,並且列出了可信度較高的幾個類別和對應的可信度(1 爲 100% 肯定),其中最高的是 「0.840-狗」。

這次上傳直升機的圖片試試。

返回的預測結果如下:

{
"predicted_label": "直升機",
"scores": [
[
"直升機",
"0.810"
],
[
"狗",
"0.114"
],
[
"坦克",
"0.075"
]
]
}

再試試坦克

返回的預測結果如下:

{
"predicted_label": "坦克",
"scores": [
[
"坦克",
"0.818"
],
[
"狗",
"0.092"
],
[
"直升機",
"0.090"
]
]
}

從幾次測試的結果可以看出,預測的結果非常準確,而且給出的可信度也比較高。這次準備的圖片並不是很多,形態也不是很豐富,但預測效果卻非常好,不得不說華爲雲 ModelArts 開發團隊爲此做了很多的優化,甚至比我自己(深度學習入門水平)編寫代碼用卷積神經網絡訓練和預測的結果要好。

如果想要將其集成到 Web 應用中,只需要根據頁面給出的「接口調用指南」的指引進行操作即可。

釋放資源

如果不是真正商用,僅僅作爲學習和練習,那麼在操作完成後記得點擊左側 1 區的「停止」按鈕。然後在華爲雲導航欄中的搜索框輸入「OBS」,點擊搜索結果後跳轉到 OBS 主頁,接着再 OBS 主頁點擊「管理控制檯」,進入到 OBS 控制檯中,刪除之前創建的桶即可。這樣就不會導致資源佔用,也不會產生費用了。

小結

體驗了一下 ModelArts,我感覺非常奈斯!

每處都有提示或教程指引,操作過程流暢,沒有出現卡頓、報錯等問題。

批量數據標註太好用了!批量導入、批量標註,自動計數,舒服!

訓練速度很快,應該是用了雲 GPU,這樣就算我的電腦沒有顯卡也能夠快速完成訓練。

以前還在考慮,學習 AI 是否需要準備更強的硬件設備,現在好了,在 ModelArts 上操作,就不用考慮這些條件了。

本次我們體驗的是自動學習,也就是簡潔易用的傻瓜式操作。對於專業的 AI 工程師來說,可以選擇全流程開發模式。批量數據標註、本地代碼編寫、本地調試、雲端訓練、雲端部署等一氣呵成。

棒!

有興趣的開發者可以前往華爲雲 ModelArts 體驗。


備註:文中配圖均出自互聯網,部分圖片通過搜索引擎得來。如有侵權,請立即聯繫我們刪除。

文章作者夜幕韋世東

夜幕團隊成立於 2019 年,團隊包括崔慶才(靜覓)、周子淇(Loco)、陳祥安(CXA)、唐軼飛(大魚|BruceDone)、馮威(妄爲)、蔡晉(悅來客棧的老闆)、戴煌金(鹹魚)、張冶青(MarvinZ)、韋世東(Asyncins|奎因)和文安哲(sml2h3)。

本文分享自微信公衆號 - 面向人生編程(LifeOriented)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

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