關(guān)于 iOS 11 Vision 框架與機(jī)器學(xué)習(xí)

從名字就大概能猜到,Vision 可以執(zhí)行計(jì)算機(jī)視覺任務(wù)。過去我們大概只能用 OpenCV 來做,但現(xiàn)在 iOS 終于有了自己的 API。

Vision 可以執(zhí)行的任務(wù)有以下種類:

  • 找出圖片里的面部。每張臉都有一個(gè)矩形。
  • 尋找詳細(xì)的面部特征,例如眼睛和嘴巴的位置,頭的形狀等等。
  • 找出圖片里矩形的東西,如路標(biāo)。
  • 跟蹤視頻里物體的移動(dòng)。
  • 確定 horizon 的角度。
  • 轉(zhuǎn)換兩張圖片使內(nèi)容對(duì)齊。對(duì)于拼接圖片很有用。
  • 檢測(cè)圖片中包含文本的區(qū)域。
  • 檢測(cè)和識(shí)別條形碼。

利用 Core Image 和 AVFoundation 已經(jīng)能夠?qū)崿F(xiàn)上述的某些任務(wù),但它們現(xiàn)在都被集中在同一個(gè)框架里,有統(tǒng)一的 API。

如果你的 App 需要做這些計(jì)算器視覺任務(wù),就不再需要自己實(shí)現(xiàn)或用其他人的庫(kù)了——用 Vision 框架即可。也可以把它和 Core Image 結(jié)合使用,以獲得更強(qiáng)的圖像處理能力。

還有更好的:Vision 可以用于驅(qū)動(dòng) Core ML,利用這些計(jì)算機(jī)視覺技術(shù)來預(yù)處理你的神經(jīng)網(wǎng)絡(luò)。例如,可以使用 Vision 來檢測(cè)人臉的位置和尺寸,裁剪該區(qū)域的視頻幀并在面部位置運(yùn)行神經(jīng)網(wǎng)絡(luò)。

事實(shí)上,只要對(duì)圖片或視頻使用 Core ML,就應(yīng)該使用 Vision。如果只用 Core ML,就需要確保輸入圖像是模型所需的格式,但有了 Vision 框架就可以調(diào)整圖像的大小。省事。

使用 Vision 驅(qū)動(dòng) Core ML 的代碼如下所示:

// Core ML 機(jī)器學(xué)習(xí)模型
let modelCoreML = ResNet50()

// 將 Core ML 模型連接到 Vision
let visionModel = try? VNCoreMLModel(for: modelCoreML.model)

let classificationRequest = VNCoreMLRequest(model: visionModel) { 
  request, error in
  if let observations = request.results as? [VNClassificationObservation] {
    /* 利用預(yù)測(cè)完成任務(wù) */
  }
}

let handler = VNImageRequestHandler(cgImage: yourImage)
try? handler.perform([classificationRequest])

注意可以給 VNImageRequestHandler 請(qǐng)求對(duì)象的數(shù)組,以把幾個(gè)計(jì)算機(jī)視覺任務(wù)連在一起,像這樣:

try? handler.perform([faceDetectionRequest, classificationRequest])

Vision 讓計(jì)算機(jī)視覺真的變得易于使用。但對(duì)于喜歡機(jī)器學(xué)習(xí)的人來說,則可以把計(jì)算機(jī)視覺任務(wù)的輸出輸入到 Core ML 模型中。再結(jié)合 Core Image 的力量,就可以造出無比強(qiáng)大的圖像處理管道!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容