Vision 是 Apple 在 WWDC 2017 推出的圖像識別框架漾橙,它基于 Core ML边锁,所以可以理解成 Apple 的工程師設計了一種算法模型,然后利用 Core ML 訓練吃既,最后整合成一個新的框架斧蜕,相比開源模型然后讓開發(fā)者自己整合起來渺杉,這種方式更安全也更方便我們使用蛇数。
那么既然是圖像識別框架,那就是用來識別圖像的是越,具體識別啥耳舅?我們可以看看官方文檔:
- Face Detection and Recognition:面部檢測
- Machine Learning Image Analysis:機器學習圖像分析
- Barcode Detection:矩陣碼/條形碼檢測
- Image Alignment Analysis:圖像對齊分析
- Text Detection:文字檢測
- Horizon Detection:水平面檢測
- Object Detection and Tracking:物體檢測和追蹤
可以看到,能做的事還是很多的倚评,在此之前我們許多類似的工作都是利用第三方識別框架浦徊,例如面部識別,現(xiàn)在我們可以嘗試使用官方提供的框架天梧。當然盔性,不能做的事情也有,比如面部特征對比腿倚,物體特征對比纯出,這些功能或許以后會有蚯妇。
那么敷燎,具體該怎么用呢。Apple 在 Vision 框架中提供了非常統(tǒng)一的調(diào)用方式箩言,我們想要獲取系統(tǒng)檢測到的數(shù)據(jù)如同從字典里獲取數(shù)據(jù)一樣簡單硬贯。
1.首先,每一種識別類型都有對應的 Request 方法陨收,例如面部特征檢測就有 VNDetectFaceLandmarksRequest饭豹,Barcode 檢測有 VNDetectBarcodesRequest
2.在創(chuàng)建 Request 的時候,指定你的 completeHandler务漩,Handler 可以是一個閉包拄衰,也可以是一個方法,只要類型一致即可
3.現(xiàn)在有了 Request饵骨,我們還需要一個容器翘悉,這個容器存放即將處理的圖片以及一些配置信息,處理單一圖片使用 VNImageRequestHandler居触,處理圖片序列使用 VNSequenceRequestHandler
4.如果我們使用的是 VNImageRequestHandler妖混,那么在初始化時就提供需要處理的圖片,初始化以后使用 perform(_:) 方法執(zhí)行我們的 Request
5.在第二步提供的 Handler 中處理系統(tǒng)提供的分析數(shù)據(jù)
看起來似乎很麻煩轮洋,實際上代碼量很少制市,這個框架最麻煩的地方不在于 API 的使用,而在于圖片處理方案的取舍弊予,以及分析數(shù)據(jù)的使用祥楣。
在這里大家可以看一看我的使用 Vision 識別照片的人物面部,這是一個利用 VNDetectFaceLandmarksRequest 來檢測面部矩形區(qū)域的最基本的樣例,如果我有空的話會寫更多的樣例误褪,同時也會更新在這里(拖延癥如是說 (?_?))