Microsoft AI - Custom Vision

来源:https://www.cnblogs.com/shaomeng/archive/2018/03/23/8625572.html
-Advertisement-
Play Games

概述 前幾天的 Windows Developer Day 正式發佈了 Windows AI Platform,而作為 Windows AI Platform 的模型定義和訓練,更多還是需要藉助雲端來實現。Azure 無疑是一個很好的選擇。 Azure 作為微軟近幾年主推的雲服務,在 AI 和 Ma ...


概述

前幾天的 Windows Developer Day 正式發佈了 Windows AI Platform,而作為 Windows AI Platform 的模型定義和訓練,更多還是需要藉助雲端來實現。Azure 無疑是一個很好的選擇。

Azure 作為微軟近幾年主推的雲服務,在 AI 和 Machine Learning 方面也處於領先水平。目前 Azure 提供的 AI 能力涵蓋了機器視覺、語義語音、語言理解、語言翻譯、認知服務等各個領域。它們大多以封裝的 API 出現,開發者不需要關心訓練數據集的採集,不需要關心訓練過程和訓練後的數據模型,只需要調用 API,輸入你的數據拿到理想的輸出就可以了,可以說是非常方便了,比如 Azure 的 Face API、Computer Vision API 等。但是,如果我們的數據集不是通用數據集,我們想使用自定義的特征,制定自己的分類呢?這種封裝好的 API 似乎就不那麼適合了。

針對這種場景,微軟推出了 Custom Vision Service(自定義影像服務),包含在 Cognitive Services(認知服務)中,目前還處於 PREVIEW 階段。雖然叫做 Custom Vision,但是目前只提供了圖像自定義,或者叫做圖像分類功能,在正式發佈使用後應該會擴充影像定義的其他領域。

 

服務體驗

基本概念

Custom Vision - Visual Intelligence Made Easy

這是 Custom Vision 的 Slogan,讓視覺智能變得簡單。而為什麼叫做自定義呢,看看官網的一張使用流程圖:

  • Upload Images - 上傳圖片並做標記
  • Train - 使用標記圖片訓練模型
  • Evaluate - 對訓練後的模型進行訓練

使用過程

Custom Vision 的管理單位是項目,登錄微軟賬號後,點擊 “New Project” 我們就可以開始創建新的項目了:

輸入項目名字和描述,選擇一個域,就成功創建出一個項目了。這裡我們重點看一下目前提供的域:General、Food、Landmarks、Retail、Adault、General (compact)、Landmarks (compact)、Retail (compact)。其中標註為 compact 的三個域,訓練後的模型都是可以導出的。可以看出,因為還在預覽階段,所以提供的域還很少,對於開發者來說,如果可以確定為某個域的識別,就選擇那個域,如果不能確定,就選定為 General。

項目創建成功後,我們來看一下項目主頁面:

  • Training Images - 上傳你的訓練圖片數據集,上傳後給每張圖片做標記;在 Workspace 中對圖片和標記進行管理;
  • Performance - 針對訓練數據的表現,可以看到每個分類訓練後的表現數值,來調整自己的表現閾值;
  • Predictions - 針對訓練後的模型,評估和預測對測試圖片的分類準確度表現;
  • Train - 準備好訓練圖片數據集後,點擊 Train 按鈕開始訓練任務;
  • Quick Test - 訓練完成後,可以用測試圖片線上進行簡單快速的測試;

接下來我們結合實際應用場景,實際體驗一下使用過程。我們針對 5 個分類的手繪草稿進行分類識別,每個分類 10 張圖片,分類分別是:airplane,alarmclock,ambulance,ant,arm:

需要註意的是,Custom Vision 對分類的數量和每個分類的圖片量都有要求,至少兩個分類,每個分類至少五張圖片;

另外,因為 Custom Vision 還是預覽版,所以對圖片和項目的上限也有限制,每個項目只能上傳 1000 張圖片,50 個分類,20 次迭代。另外創建項目總數限製為 20 個項目,預測的 key 上限是每天 1000 個。如果使用 Azure 賬號登錄,數量限制會被取消,對應的是一個收費策略,針對 Azure 國際版用戶:

 

現在開始通過我們的 50 張圖片的數據集來訓練模型:

可以看到,因為我們上傳圖片的量級很小,而且數據特征不是很穩定,所以每個分類訓練的準確度都不太穩定,召回率也是一樣。 

數據模型訓練完成後,我們先用最簡單的方式 “Quick Test” 來測試一下分類準確度:

首先用一張在分類內的圖片 airplane 來測試,可以看到,識別為 airplane 的幾率明顯大於其他幾個分類。

再用一張不在分類內的 fish 來測試,因為 fish 不在我們的 5 個分類里,而且這張手繪草稿中的特征和分類里的也不相近,所以識別結果比較平均,且都比較低,這個結果在預期內。

API 結果驗證

除了 "Quick Test" 的簡單線上測試方式,還支持 API Prediction 方式,對於批量自動化測試更適合。在 Prediction Tab,可以看到這個項目對應的 API 地址和 Key 信息:

 

為了驗證簡潔,我們使用 Postman 按照上面指引的方式來設置參數和輸入圖片:

我們使用本地文件進行測試,設置 Headers 和 binary 類型的 Body 後,得到以下結果:

這裡的 airplane 文件其實就是上面 Quick Test 的第一張圖片,所以可以看出,檢測結果也是一樣的,這也驗證了兩種驗證方式的結果。

模型導出

上面我們說過,帶有 compact 字樣的模型是可以導出的,目前 Custom Vision 平臺支持的導出方式有兩種:

  • iOS 11 (Core ML) - .mkmodel 文件格式
  • Android (Tensorflow)  - .pb 文件格式

看到這裡,不禁想吐槽一把,大家還記得前面介紹過的 Windows AI Platform 嗎,它支持的 onnx 模型文件格式,在 Custom Vision 中並不支持,這還是一家人嗎?

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 先上個例題: 描述 使用STL中的優先隊列,將n個點按照橫坐標從小到大順序排序,如果橫坐標相同,按照縱坐標從小到大排序。 輸入 第一行為正整數n,接下來有n行,每行一個點,包含橫坐標和縱坐標,均為整數。 第一行為正整數n,接下來有n行,每行一個點,包含橫坐標和縱坐標,均為整數。 輸出 每組輸出排序後 ...
  • 搞笑系統採用PHP+MySQL實現, 支持電腦版,手機版線上觀看搞笑圖片 有會員制觀看功能 電腦端img: 手機端img: 這是一款不錯的搞笑網站系統源碼 專業的團隊、高效的執行效率 有需要的朋友聯繫我們微信:kjwenlc q:3328752804 ...
  • ping & telnet 實現類: import org.springframework.data.web.JsonPath; import java.io.IOException; import java.net.*; public class PTUtil { /*** * ping操作 * ...
  • 歸併排序就這麼簡單 從前面已經講解了冒泡排序、選擇排序、插入排序,快速排序了,本章主要講解的是 歸併排序 ,希望大家看完能夠理解並手寫出歸併排序快速排序的代碼,然後就通過面試了!如果我寫得有錯誤的地方也請大家在評論下指出。 歸併排序的介紹 來源百度百科: 歸併排序(MERGE SORT)是建立在歸併 ...
  • 最近重構某項目過程中發現的,有同事反饋調試不正常,很久以前也發生過,雖然搜索了一下找到解決方案,但個人覺得還是有必要再記錄一下。 調試某CS結構的應用程式,大致效果可以看下圖: 我們組最終解決方案是:將編譯的目標平臺設置為X64而不是AnyCPU或者X86。 這個問題,我在前廠開發過一個OCR(光學 ...
  • nuget獲取Newtonsoft.Json github地址: "Newtonsoft.Json" ...
  • //定義報表模板 private GridppReport Report = new GridppReport(); //載入報表模板數據 Report.LoadFromFile(GridppReportDemo.Utility.GetReportTemplatePath() + "program\ ...
  • 1、添加引用Newtonsoft.Json.dll 2、具體代碼: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...