App 設計:我該從哪開始?

[感謝微軟學生大使、清華大學計量財務金融學系賴虹安同學,協助翻譯原發佈於 Building Apps for Windows 部落格中的文章:Getting Started With App Design]

在軟體產業裡,我們總是常常聽到設計者和程式開發者在溝通上有代溝,因次希望能藉由本篇文章,介紹大家一些設計 App 的小撇步,幫助大家設計出更吸引人、比別人更成功的 App,同時也能減少工程師和設計者之間的隔閡!

淺顯易懂的設計 Demystifying Design

就跟工程師一樣,「設計」也是需要藉由不停的練習,才能將自身的技能結合想傳達的資訊,完美的傳遞給使用者。一些基本的技能包括:

  • 排版 Typography
  • 色彩學 Color Theory
  • 視覺平衡 Visual Balance
  • 圖像研究 Iconography
  • 導航列設計 Navigation
  • 設計素描 Sketching

當你學會並且時常練習這些基礎功後,你將會發覺許多以往你可能忽略的色彩美學或排版技巧,甚至,你更有可能藉此知道往後該如何修正自己的 App,讓現有的作品擁有更美觀的視覺呈現。

讓我們開始吧!Getting Started!

設計,絕不能等程式開發完的最後一刻才開始動工。做為一個 App 開發者,你可能已經發現 App 的功能和其設計息息相關。舉例來說,一旦你在功能選單放入太多項目,有些重要的功能常常在最後看起來已沒那麼重要;你也有可能發現,在設計完 App 的主視覺、編寫程式後,自己像是擁有兩個 App 而非一個。然而,設計者們卻有不少能力能解決上述這些狀況。

– 這個 App 的重點是什麼?

在開始著手設計前,請先記得了解自己的 App 的用途為何、你希望 App 使用者能夠如何使用。如果你是一個偏好視覺走向的開發者,那麼就想像這裡有一個完全空白的畫布,並且思考你要放什麼內容進去;如果你喜好利用語言、文字來表達,那麼建議你採用清單條列式來呈現。若你不屬於上述二者,那麼就先把所有你覺得你用的到的功能、希望的色彩和選單都先放上去。

接下來的重頭戲便是「簡化」。雖然這可能讓人心煩,尤其是在當你把所有心血都放上去後,但是現代 App 設計最重要也是唯一的大準則便是:化繁為簡。太多的重點和功能會混淆使用者,過多的畫面則會讓使用者難以瀏覽及記住剛剛瀏覽過的項目在哪,所以請開始動手「簡化」吧!

你可以畫一條線刪掉那些其實你並不需要的功能,然後再畫一條線,刪掉那些你覺得你需要但是其實並不適合其他清單上的項目;在反覆此步驟後,你就會發現你已經將你的 App 簡化成它最單純的樣子囉!

– 了解你的消費者

現在你需要了解你的 App 究竟是為誰而設計。

你的 App 是為孩童或是成人而設計?是為繁忙的專業人士還是賦閒在家的人所設計?這個 App 是用來做為科技知識突破所用還是給那些需要協助的人們所用?釐清這些問題將幫助你構思出整體外觀、給人的感覺以及排版設計。舉例來說,繁忙的專業人士沒有太多時間閱讀過多的文字,然而針對那些較少接觸科技的人來說,他們需要較多提示及線索來使用 App;此外,比起仿舊風,孩童大多較喜歡明亮的顏色設計。

2_inspiration

了解你的目標消費者後,起身去和他們聊天吧!不要覺得這個舉動很多此一舉,一旦你付出越多了解你的消費者,往後設計app時你將更得心應手。在和他們談話時,可以徵求他們的同意後,錄下談話時的影片並且觀察他們、詢問他們相關問題,從中發現他們希望從你的 App 中得到什麼樣的幫助或便利。

– 靈感啟發

記得主動找尋靈感!無論是蒐集照片、字體、名言佳句、文章、或是任何和你的 App 及消費者相關的設計,甚至是那些你驚鴻一瞥的小事物,把這些材料都拿來當作你設計及程式開發的靈感來源吧!當然,你得在原創作者同意下再把這些元素加入你的 App 裡。此外,你可以觀察其他已開發的同性質 App,同時思考是否有哪些地方是你可以做為借鏡,改善自己的 App。

1_inspiration

同樣重要的是,別忘記繪製草稿!把握所有機會,拿起筆或是蠟筆在紙上畫下 App 的設計草圖,這同時也是幫助你的「設計腦」永保靈活的一項練習。將你所有草圖都保存在安全的地方,並在開發 App 進入尾聲時將當初的草圖們都拿出來溫習,你會很開心能看見這個 App 一路的蛻變。

– 原型開發

不論是畫草圖 (sketch) 還是線框稿 (wireframe),根據消費者給你的意見回饋建構出各種不同的畫面設計,並且,想像消費者在執行任務時所會採用的流程。你可以使用任何對你有利的方法建構原型,假設對你而言在 Visual Studio 或 Blend 上做介面設計是較快速的,那麼就使用這些工具吧!但務必注意,在這個階段你不需要太專業的軟體或是具備非常頂尖的繪畫能力,使用記事本或是繪圖板就可以了。更棒的是,你可以直接在便利貼上設計你的 App,如此一來你就可以更輕易的移動畫面元件來看不同的排列組合所呈現出來的樣貌,你甚至可以在發現排列組合的結果不是你所期望後,輕鬆地把它們放回去。

如果你不確定該從何處下手,建議你可以先看看那些和你的 App 類似的作品並且發現是否有適合你的 App 的設計流程。

3_prototypes

現在,試試看移動畫面上的元件,如果你原本是從上方導覽 (top navigation) 開始,那你可以改試著將導覽從左邊開始;如果你原本設計的介面是擁有大型的文字頁首 (header),那你可以嘗試將他移到畫面的底端;按鈕 (buttons) 和內容儀表板 (content panels) 也可以隨意的移至其他地方;將文字和按鈕分離或是將連結 (links) 和文字分開;透過這些更動,你會在最後找到最適合這個 App 的設計。

4_sketching

– 鼓起你的勇氣

現在去找一些測試者 (至少5人),請他們在看過你的原型 (prototype) 後給予你意見,在此強調,這種易用性測試 (usability testing) 或市場調查 (market research) 比起一般的問答測驗 (QA testing) 來的好。

5_iterate

如果你找不到任何人願意協助你,那麼就試著想像自己是第一次使用這個 App,並思考這個 App給你的第一印象會是什麼?當你看著它是否就能夠猜出它的功能是什麼?是否就能了解下一步該怎麼做?

如果上述問題有任何答案是讓你不滿意的,那就再次拿起你的便利貼,重新尋找最佳的設計方法。先前那些你用來構思草圖的便利貼及付出的時間與心力都需要善加保存與紀錄,這些將協助你找到最終的完美解答。

大功告成 Wrapping Up

在每一步驟開始前審慎思考 App的設計會幫助你判斷程式開發與介面設計相對應的優先順序。按照本篇文章的引導,你將可以更早發現問題並解決,同時避免往後可能面臨之一切重大錯誤。

若想獲得更多資訊,歡迎瀏覽「Plan Your Universal Windows Platform (UWP) App」。

在 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

如何利用 Azure 「機器學習」贏得黑客松 (Hackathon)?

預測某個 YouBike 租借站在某個時間點是否還有車可以借、是否還有車位可以停;預測某個城市在不同的時間發生犯罪的機率;依據下眼瞼的照片判斷貧血的程度;找出不同的開車模式和車禍發生機率的關係。以上都是你可以利用 Azure  Machine Learning「機器學習」贏得一場黑客松 (Hackathon) 的題目,甚至成為你開始新創公司的契機!

本文將介紹使用 Azure 「機器學習」的步驟及各種資源,方便你在黑客松活動中使用。其中前二個步驟可以在參加之前即先行完成。

步驟一:開通 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 Machine Learning Studio

如果你是機器學習的完全初學者,除了可先閱讀專門爲初學者所寫的二篇文章之外:

Azure 「機器學習」初體驗
如果你搭上了鐵達尼號,有機會生還嗎?

強列建議走一遍官方中文教學:在 Azure Machine Learning Studio 中建立您的第一個實驗

步驟三:尋找合適的訓練資料

如同文章一開始所提出的各種問題,Azure 「機器學習」的強項即是能根據歷史資料作數值預測 (Regression)、分類  (Classification) 或是分群 (Clustering),成為解決這些問題的強力工具。請記得,能問出一個好問題、進而定出一個好題目,常常是贏得一場黑客松非常重要的關鍵!

定出題目之後,就要尋找合適的資料作為機器學習模組的訓練之用了。資料集 (datasets) 的提供可以透過直接上傳(如 .csv 格式)、或是提供連結 (如 OData feed provider) 的方式。若要使用公開資料,以下是幾個常用的國內外站點:政府資料開發平台美國政府開放平台KaggleUC Irvine Machine Learning Repository 等。

步驟四:建構你的學習模型

「機器學習」之中,若是作為數值預測 (Regression) 或分類 (Classification) 之用途.皆是屬於監督式學習 (Supervised Learning) 的範疇。監督式學習基本上會遵守以下的流程:

image

別小看了其中”資料清理”的工作喔! 因為你所選擇的訓練資料,可能有缺漏或不全之處需要補全或是移除、有些欄位 (如姓名、ID等) 不應該作為訓練之用、有些資料需要先”類別化” (Categorized) 以作為訓練之用並讓使用者選擇 (如性別、鐵達尼號的上船港口等)。建議大家可看看”鐵達尼號”的模型如何作資料清理,並據此學習。

步驟五:選擇合適的演算法

在此文章中有介紹各種不同演算法,及各自的使用時機,大方向如下:

  • 如果您期望的解答是一個數值的話 => Regression (迴歸分析)
  • 如果您的問題能夠以 Yes/No 來回答 => Classification (分類)
  • 如果您想將具相同特性的資料群集分類 => Clustering (分群)

微軟也製作了一個 PDF 小抄可供下載,方便大家依步驟判斷,以選擇最合適的演算法:

Machine Learning Algorithm cheat sheet: Learn how to choose a Machine Learning algorithm.

步驟六:優化你的訓練模型

個人覺得 Azure Machine Learning Studio 這個工具最酷的地方,就是可以自動找到最適合的演算法設定參數了。例如,我用了決策樹 (Decision Tree) 演算法,但我怎麼知道節點或是葉子的數目該設為多少呢?

預設的單一參數 (Single Parameter) 設定:

image2

你只要更改為參數區間 (Parameter Range),就能設定參數範圍 (以等差或等比遞增)、指定數個參數、或是混合設定。訓練模型就會自動根據你的設定找出最佳的參數!

image3

選擇參數來最佳化 Azure Machine Learning 中的演算法

同時也不要忘記,可在 “Score Model” 及 “Evaluate Model” 中檢視你的模型預測準確度。

多元分類評估結果

在 Azure Machine Learning 中評估模型效能

在 Azure Machine Learning 中解譯模型結果

步驟七:發佈為 Web Service

模型優化之後,就可以發佈為 Web Service 以進行預測了。在下方選擇 “SET UP WEB SERVICE” => “Predictive Web Service” ,再點選 “DEPLOY WEB SERVICE” 即可佈署使用。

Convert to scoring experiment

Deploy the web service

部署 Azure Machine Learning Web 服務

步驟八:使用 Web Service

最貼心的是,還提供 C#, Python 及 R 語言的 sample code,協助大家節省時間贏得比賽!

image

Web Service 提供了兩種呼叫方式

1. Request/Response: 提供快速可延展的呼叫服務,接受一或多筆資料作為輸入、也可輸出一或多筆結果,適合用在單筆且快速回應的需求,例如即時回應使用者對股市收盤行情的預測。

2. Batch Execution:適合處理批次、大量、非同步的資料,例如批次性的處理 IoT 在一段時間之中收集的所有資料。

希望以上對大家有幫助,值得一提的是,2015 年 8 月舉辦的台大 HackNTU 中,前 2 名都是與 Azure Machine Learning 有關的喔!

image

其中第一名使用了Project Oxford 服務,包括 Speech APIs (Speech recognition + Text to Speech Conversion 等),其背後機制即是微軟的「機器學習」;第二名則是運用 Azure 機器學習來訓練六種手語手勢。

千人黑客松HackNTU得獎團隊揭曉 語言學習App、手語辨識系統、救災無人機獲獎

image

延伸閱讀:

1. How to win a hackathon using Azure Machine Learning – 作者為微軟總部高級主管 Jennifer Marsman,本篇主題及內容來自她的文章,並已取得她的同意作適當的翻譯及在地化。

2. 本部落格所有機器學習相關文章: http://blogs.msdn.com/b/mengtsai/archive/tags/machine+learning/

Azure 校園免費方案整理 (學生及老師適用)

1. 所有學生:“Azure for Students” 方案開放給所有學生,不用信用卡即能開始使用,直接至 Microsoft Azure for DreamSpark 認證您的學生身份,即可免費使用多種 Azure 公有雲服務,目前包含以下 4 種,將會不定期持續新增:

  • Azure App Service Web Apps is a part of a fully managed cloud offering that enables you to build and deploy web apps in seconds. Use ASP.NET, Java, PHP, Node.js or Python. Run popular web apps and CMS solutions. Set up continuous integration and deployment workflows with VSO, GitHub, TeamCity, Hudson or BitBucket – enabling you to automatically build, test and deploy your web app on each successful code check-in or integration tests.
  • MySQL Database from ClearDB adds the power of MySQL to your Web Apps. With clearDB MySQL you can deploy more kinds of web apps and CMS solutions such as WordPress, Joomla, Acquia Drupal, phpBB, and more.
  • Application Insights provides a 360° view across availability, performance and usage of your ASP.NET services and mobile applications for Windows Phone, iOS and Android platforms. Search and analyze your data to continuously improve your application, prioritize future investments and improve overall customer experience.
  • Visual Studio Online is the fastest and easiest way yet to plan, build, and ship software across a variety of platforms. Get up and running in minutes on our cloud infrastructure without having to install or configure a single server.

2. 學校開課Microsoft Educator Grant Program provides access to Azure for use in the classroom by university students and their professor.

請直接填寫相關資料即可申請: http://www.microsoftazurepass.com/azureu

  • Faculty will receive a 12 month, $250/month account
  • Students will receive a 6 month, $100/month account

3. 研究專案Microsoft Azure for Research 目前有 Ebola Research,Azure Machine Learning, Climate Data Initiative 等不同的專案可申請:http://research.microsoft.com/en-US/projects/azure/awards.aspx

我看起來幾歲 How old do I look? 幕後花絮

【原文來自: 台灣微軟雲端與企業平台事業部副總經理葉怡君網誌

這幾天有款 App (or 網站?) http://how-old.net/# 爆紅 – “How Old Do I Look?” (我看起來幾歲?), 短短 48 個小時就有一百萬人上去 PO 照片測試. 我的臉書幾乎被大家的自拍照片洗版, 大部份的人都很滿意他們的測試結果, 因為都比實際年齡少了許多, 連我 91 歲的阿嬤也立馬叫她的朋友來試, 因為她有一張笑開懷的照片看起來只有 76 …

當然囉, 也有一些例外, 但基本上是款相當討喜的軟體,所以也被瘋狂轉載. 也因為基本上蠻準的(特別對老人及小孩), 也或是很不準(特別是涷齡的東方女生), 所以引起很多討論, 包含:

  • 這到底怎麼猜的? 怎麼這麼準?
  • 這到底怎麼猜的? 為什麼我表情不一樣, 猜的年齡也不一樣?      
  • 這到底怎麼猜的? 為什麼我一直被猜出是女生? 我明明是男的? (Who knows?)       
  • 這到底怎麼猜的?我PO上去的照片會不會被Microsoft拿去使用?

由於這個網站是敝公司做的, 當初只是為了開發者大會 (//Build) 做的一款 demo, 用了蠻多物聯網及大數據的技術, 所以我就去查了一下幕後花絮, 結果發現一些有趣的故事.

樣本那裡來?

一開始那個開發團隊只想找 50 個人, 結果最後弄到了3萬5仟個人參加 (而且2萬9仟人來自土耳其, 土耳其!!!! 只能說要讓全世界看到, 一定要積極參與國際事務). 總共上傳了21萬張照片, 再用Microsoft Azure 雲端服務上的 Face detection APIs 去找到人臉, 去分類, 去看是不是同一個人。

個人覺得很準, 因為我拿我們家阿布的臉去測, 即使他很帥, 還是測不出來的.

性別跟年齡怎麼猜出來

要在一兩天就寫出這款討喜的App, 當然不能不能從研究演算法開始, 當然也站在巨人的肩膀上摘水果, 所以這個開發團隊用了微軟的機器學習套件 – Azure Machine Learning Gallery 中, 由一個叫 “牛津專案” (Project Oxford) 所做出來的雲端智能服務, 包含Face, Speech, and Vision. 另外, 考量大家除了測自已跟家人的年齡外, 也一定想惡搞一番, 去找名人或古人的照片, 所以再用了Bing Search API 去搜尋網路上的有趣照片.

Microsoft 到底會不會把上傳的照片存下來?

真的不會. 這是官網上的說明:

We’ve had some questions so we updated this post to be more clear. To answer the top one: No we don’t store photos, we don’t share them and we only use them to guess your age and gender. The photos are discarded from memory once we guess. While the terms of service very common in our industry, and similar to most other online services, we have chosen not to store or use the photos in any way other than to temporarily process them to guess your age.

那大家一定會問, 真的嗎? 照片一直不斷的傳上來, 你不存起來怎麼分析, 怎麼學習?

問的好, 重點來了, 這就是大數據即時分析的神妙之處啊啊啊. 別忘了有 Azure 啊.

資料的匯集跟派送可以用 Azure Event Hubs, 可以一秒鐘進出幾百萬份資料, 你的照片不會被存下, 我們存下的是從照片萃取出來的資料, 是什麼資料呢? 我同事說是叫”顏值” 的資料, 也就是青春的軌跡吧. 所以大家放心. 你的照片不會被留下來.

但對於寫程式的人來說, 怎麼抽出這些像是性別, 年齡資料, 來做即時呈現呢? 大家上傳照片一定想要立馬知道結果, 没有人想過幾天再開獎, 又不是全身健檢… 當然, 又得靠工具了. Azure Stream Analytics 可以讓開發者用簡單的 SQL query 語法捉到即時的串流資訊, 立馬回報.

比起別的國家來, 台灣人是不是看起來比實際年齡年輕?

我不確定, 但根據這幾天我所看到的結果, 好像我們普徧看起來年輕很多 (只要不要亂做鬼臉, 拍太暗…). 但如果你真的有心想要開發新的App來統計一下, 也有好用的工具來做圖表分析, 那就是(噹噹噹…) PowerBI http://www.powerbi.com!

還是那句話, 實際幾歲不重要, 看起來幾歲比較重要, 去玩玩看吧, 或許你會找到讓自已看起來年輕的秘訣. 還有, 如果你是開發者, 發揮想像力吧, 利用 Azure 這些 API,

看你可以寫出什麼讓大家瘋傳的 App!

原文參見 http://blog.how-old.net/

(應用程式篇) 免費取得程式編碼軟體 Microsoft Imagine Access

羅列 Microsoft Imagine Access 網站中,所有免費編寫應用程式的軟體及資源,依初學者至專業遊戲開發排列如下。

使用 Windows App Studio 創作您的第一個簡單型應用程式

花費數分鐘即可直接在網頁瀏覽器中創作應用程式! 您可以透過 Windows App Studio 使用預先製作好的範本來設計應用程式,然後填入您的文字與圖片。

建立您的第一個 Windows App Studio 應用程式
瀏覽 Windows App Studio 應用程式

了解如何使用 SmallBasic 編寫所有類型的應用程式

使用免費的學生程式設計工具 SmallBasic,進一步實際體驗編寫程式碼。 雖然只有 20 個可運用的命令,卻足以建立整個世界的應用程式,這是學習編寫程式碼基本知識的簡易方式。

免費下載 SmallBasic
了解如何編寫程式碼
瀏覽 SmallBasic 應用程式

了解如何使用 WebMatrix 編寫網站

想要製作自己的網站嗎? 立刻免費下載 WebMatrix 3,然後學習編寫網站的基本知識。 您很快就能建置非常棒的網站。

下載 WebMatrix 3
學習編寫網站的基本知識

使用這些免費的專業工具開發您的應用程式

您可以透過 Microsoft Visual Studio 取得與專業人員相同的開發應用程式工具! 此外,還可以透過免費的 Windows 市集開發人員帳戶,在 Windows 和 Windows Phone 市集販賣您的應用程式。

下載 Visual Studio
免費取得 Windows 市集開發人員帳戶

經由免費的線上學習即可和專業人員一樣地開發應用程式

準備好深入了解嗎? 如果您是已具經驗的學生開發人員,可以取得免費的線上課程影片、程式碼編寫指南和文件,而且是為自己獲取增進第一份工作之技能的大好機會。

在 Microsoft Developer Network 尋找免費的線上影片課程以及其他內容

延伸閱讀

1. 學生免費公有雲服務 “Azure for Students”

2. 免費取得程式編碼軟體 Microsoft Imagine Access (遊戲篇)

(遊戲篇) 免費取得程式編碼軟體 Microsoft Imagine Access

羅列 Microsoft Imagine Access 網站中,所有免費編寫遊戲的軟體及資源,依初學者至專業遊戲開發排列如下。

Kodu Game Lab

使用 Kodu Game Lab 創作您的第一個視訊遊戲

免費下載 Kodu,就可以在 Windows 電腦上建立刺激的遊戲。 不論是賽車遊戲、動作遊戲和策略遊戲或其他遊戲,您可以即刻創作您最愛的遊戲類型!

免費下載 Kodu Game Lab
創作您的第一個遊戲
瀏覽 Kodu 遊戲

了解如何使用 Project Spark 編寫神奇的世界

如果您有 Xbox One 或 Windows 8.1 的電腦,可免費下載 Project Spark,您會很驚訝竟然可以創造出如此神奇的世界。 然後立刻可以使用視覺化程式設計語言編寫程式,讓所有想像成真!

下載 Project Spark for Xbox One
下載 Project Spark for Windows 8.1
建立您的第一個 Project Spark 遊戲

了解如何使用 SmallBasic 編寫遊戲

使用免費的學生程式設計工具 SmallBasic,進一步實際體驗編寫程式碼! 學習非常基本的程式編寫知識,只需運用 20 個命令,即可創作整個世界的遊戲。

免費下載 SmallBasic
了解如何編寫程式碼
瀏覽 SmallBasic 遊戲

使用免費的專業工具開發您的遊戲

您可以使用 Microsoft Visual StudioUnity 遊戲引擎,像專業人員一樣地創作遊戲。 此外,您還能免費獲得發行作品所需的一切所需!

下載 Visual Studio
下載 UnityVS 外掛程式
下載 Unity 遊戲引擎

透過免費的線上學習即可和專業人員一樣地開發遊戲

準備好深入了解嗎? Microsoft Virtual Academy (MVA) 有免費的線上影片課程,您隨時都可以上課。 已有經驗的學生透過適當的課程,能了解專業遊戲開發的基本知識!

在 MVA 尋找遊戲開發人員的免費線上課程影片

延伸閱讀

1. 學生免費公有雲服務 “Azure for Students”

2. 免費取得程式編碼軟體 Microsoft Imagine Access (應用程式篇)

初探「機器學習」投影片下載

分別於今年 2 月及 4 月於松山文創美國創意中心演講的課程投影片,簡介 Azure Machine Learning 以及微軟提供的各項創業所需要的資源,如 BizSpark 等:

[AIC課程] 初探「機器學習」與創業資源

相關閱讀:

1. 本部落格 Machine Learning 系列文章 (中文): http://blogs.msdn.com/b/mengtsai/archive/tags/machine+learning/

2. Microsoft Azure 機器學習官方學習網站 (含教學影片及文件): http://azure.microsoft.com/zh-tw/documentation/services/machine-learning/

3. 美國創意中心 (American Innovation Center) FB: https://www.facebook.com/twaic?fref=ts