在 Azure Machine Learning 中處理影像資料 (以辨識人臉為例)

本文將使用 Azure Machine Learning Studio,一次匯入數張影像檔,再經由一個預先訓練過的模型,偵測這些影像中是否含有人臉。

步驟一:開通 Azure 「機器學習」帳號

1. 不需要信用卡就可以免費開始使用 Azure Machine Learning (https://studio.azureml.net/):擁有 10GB Azure Storage 的 Datasets 空間、最多建制 100 modules 以及一小時的 Machine Learning experiments 時間。

image

2. 如果你是成立不到五年的新創公司,可以免費申請 BizSpark 方案,享有每個月 NT$4,700 額度的 Azure credit。開通時亦無需輸入信用卡,所以沒有付費的風險。

3. 如果你是 MSDN 訂閱用戶,本來就有 Azure 免費額度,只要開通即可。

4. 當然你也可以直接申請免費試用一個月,取得 NT$6,300 元的 Azure 信用額度。

(如果你是學校老師或學生,有更多 Azure 免費資源)

步驟二:選擇合適的照片上傳至 Azure Blob 儲存體

影像、音樂、影片等檔案通常較大,Azure Blob 儲存體提供了便宜彈性的儲存空間,可作為 Azure Machine Learning 連結使用。

首先我選擇了以下 4 張照片:

image

然後將它們上傳至 Azure Blob (可見此文有詳細的上傳步驟):

image

步驟三:匯入影像、偵測人臉

接下來我們要使用一個預先訓練過、用來偵測人臉的分類模組,並將影像檔作為資料源,逐一分析各影像裡是否含有人臉。當然未來你也可以利用 “Import Images” 模組所匯進來的影像,訓練出你自己的預測模型。

登入 Azure ML Studio,在空白的 Experiment 裡拉進”Pre-trained Cascade Image Classification”、“Import Images”、”Score Model”以及 “Execute R Script” 模組,並連結如以下:

image

在 “Import Images” 中設定你剛剛上傳影像的 Blob URL 位址。若你的 Blob 是設定為非公開存取的話,則需要再輸入帳號密碼。以 Public URL 為例:

image

然後在 “Execute R Script” 模組中,貼入以下 R Script。其重點在 Line 4,這行程式是把偵測人臉預測結果的三個欄位取出來。

   1: # Map 1-based optional input ports to variables

   2: dataset1 <- maml.mapInputPort(1) # class: data.frame

   3:  

   4: data.set = data.frame('Image Name'=dataset1['Image Name'], 'Score Labels'=dataset1['Scored Labels'], 'Label Probabilities'=dataset1['Scored Probabilities'])

   5:  

   6:  

   7: # Select data.frame to be sent to the output Dataset port

   8: maml.mapOutputPort("data.set");

步驟四:執行結果

按下 Run,等待執行結束。

我們先來看 “Import Images” 幫我們作了什麼事,選擇 Visualize 之後,會發現它幫每一個影像的每一個像素都轉換為 RGB 數值。觀察以下可發現,我們共匯入了 4 個影像,而因為每個影像是 640*427 像素,每一像素有 R, G, B 3 個值,所以每個影像後面有 640*427*3 = 819,480 個欄位:

image

我們再到 “Execute R Script” 觀察最後執行結果。

image

看來這個預先訓練的人臉辨識模型準確度不錯,第 1 張小狗照片判斷沒有人臉 (false),第 2 到 4 張都成功判別出有人臉 (true)。

image

備註:

1. “Import Images” 支援下列的影像格式:

  • Windows 點陣圖檔案:*.bmp、*.dib
  • JPEG 檔案:*.jpeg、*.jpg、*.jpe
  • JPEG 2000 檔案:*.jp2
  • 可攜式網路圖形:*.png
  • 可攜式影像格式:*.pbm、*.pgm、*.ppm
  • Sun 點陣:*.sr、*.ras
  • TIFF 檔案:*.tiff、*.tif

2. 請注意影像檔及 Blob 的技術細節,匯入過程中出現的錯誤通常來自這些規範:

  • 所有影像必須相同大小。
  • 所有影像必須具有相同的色頻。例如,您不能混用灰階 與 RGB 影像。
  • 每個影像的像素數目有其上限 (實際測試發現其上限數目其實遠大於官方文件說的 65536)。 不過,影像數目不受任何限制。
  • 如果您是將 Blob Container 作資料來源,則此 Container 中不能包含 Blob,只能包含影像檔。

3. “Import Images” 在第一次執行時會花較久的時間,但在影像 cached 之後即可省略匯入的動作。

延伸閱讀:

Azure 「機器學習」初體驗
Azure 「機器學習」FAQ
Azure 「機器學習」:我該用哪種演算法 (algorithms)?

[Azure 筆記] 上傳檔案到 Azure Blob 儲存體

電腦裡有硬碟可以儲存照片、影片、MP3 等檔案,微軟的公有雲上也有專門用來儲存這種非結構化資料的儲存體 Azure Blob。本文是紀錄如何設定 Azure Blob 並上傳一些照片,以作為後續使用。

步驟一:取得 Azure 帳號

如果您還沒有 Azure 帳號:

  1. 可以直接申請免費試用一個月,取得 NT$6,300 元的 Azure 信用額度。
  2. 如果你是成立不到五年的新創公司,可以免費申請 BizSpark 方案,享有每個月 NT$4,700 額度的 Azure credit。開通時無需輸入信用卡,所以沒有付費的風險。
  3. 如果你是 MSDN 訂閱用戶,本來就有 Azure 免費額度,只要開通即可。

步驟二:登入至 Azure 入口網站,新增一個 Blob

畫面左下角選擇 NEW –> Storage –> QUICK CREATE,給定一個 URL,建立一個 Storage。

image

然後點選剛剛新增出來的 Storage,選擇 Container,並新增一個 Blob:

image

至此,你已成功在 Azure 上建立了一個 Blob! 它的結構如以下,我們即可以開始上傳各種檔案。

Blob1

步驟三:上傳檔案到 Azure Blob

網路上有許多類似「檔案總管」的 Azure Storage 管理小工具,讓你能很簡單的上傳、下載、刪除、觀看檔案以及管理目錄。

我從中挑了一個開放源碼的 Azure Storage Explore 來使用。下載安裝之後,登入你的 Azure 帳號,瀏覽至剛剛建立的 Blob 中,點選 Upload 就能在硬碟中選擇你要上傳的檔案。

image

回到 Azure 管理畫面,即可看到有 4 張照片已被上傳成功讓其他應用程式使用,例如:在 Azure Machine Learning 中處理影像資料 (以辨識人臉為例)

image

在 Excel 裡使用 Azure 「機器學習」預測服務

不需要會寫程式,現在只要打開 Excel 就能直接呼叫 Azure 「機器學習」的服務來作預測。

步驟一:到 Office 市集中下載免費的 Excel Azure ML 增益集 (Add-in)

安裝時需要登入您的 Microsoft Account 帳號,日後不論您是使用 iOS、Android、桌面、甚至網頁版本的 Excel,就都能直接使用。

image

(是的! 現在增益集可以發佈至 Office 市集進行銷售囉! 有興趣開發的人可以到 Office 開發官網了解)

步驟二:打開 Excel 並選擇此 Add-in

image

步驟三:執行 (以「鐵達尼號生還率預測」為例)

各位可以先把以下資料複製後貼到 Excel,作為我們的預測資料。

PassengerClass Gender Age SiblingSpouse ParentChild FarePrice PortEmbarkation
2 female 40 2 1 50 C
1 male 20 1 3 200 C
2 female 55 0 1 50 C
3 female 90 4 2 50 C
1 male 20 2 1 90 C
1 male 2 2 2 80 C

 

選擇「鐵達尼號生還率預測」服務 (Titanic Survivor Predictor) 後:

  1. 在 Input 選取以上這個表格
  2. 在 output 輸入 H1 欄位
  3. 然後按下 Predict,就可看到預測結果了!

image

(女生生存率超高的! 男生只有 2 歲的小孩有高生存率。原因當然是當時以婦女及小孩為優先逃生)。

使用你自已的 Web Service

當然你可以使用自已設計出來的 Azure 機器學習服務,只要依此文的步驟取得 Web Service 的 URL 及 API Key 再貼上即可。

批次執行 (Batch Execution)

你可以在 Predict 的下拉選擇中選擇 As a batch,即能讓你在 Excel 中測試大量批次執行。

分享您的 Excel 工作表

許多公司及個人都已在使用 Excel 儲存及處理資料,如銷售紀錄、客戶資訊等等。只要透過這個 Excel Add-in 加入 Web Service 並儲存後,所有打開這個 Excel 檔案的人即能直接使用這個服務來預測自己的資料,無需知道背後其實使用了「機器學習」的服務,整個過程不需寫程式且操作方便。

其他功能及應用:

  • 打開 VIEW SCHEMA,即可了解 input 及 output 的所有資料欄位及格式

image

  • 自動預測

如果勾選 Auto Predict 的話,只要選取的表格資料有變動,就會自動更新預測結果。

image

延伸閱讀:

General Availability of Free Excel Add-In for Azure ML