Vision.frameworkとは
Appleが高度な画像解析処理を行うフレームワークのこと。
CoreMLが基礎になっている。Vision以外にも音声認識Speech,何の音か特定するSoundAnalysis、テキストを 処理するNatural Languageを提供している。
画像分析の流れ
VNRequest->画像の分析のリクエストを表す。分析したい種類によってそれぞれのサブクラスが用意されている。
VNImageRequestHandler/VNSequenceRequestHandler画像データを渡し、VNRequestを実際に実行する。
VNObservation 分析結果を表すクラス。
do {
// リクエスト作成
let request = VNDetectFaceRectanglesRequest()
// リクエストハンドラー作成
let requestHandelr = VNImageRequestHandler(cgImage: image,options: [:])
// 画像分析実行
try requestHandelr.perform([request])
// 結果を得る
let result = request.results?.first! as! VNFaceObservation
} catch {
print(error.localizedDescription)
}
分析できるもの
顔の短形(VNDetectFaceRectanglesRequest)
目,鼻,口,あご,顔の特徴を検出(VNDetectFaceLandmarksRequest)
文字検出(VNDetectTextRectanglesRequest)
文字を認識(VNRecognizeTextRequest)
バーコードを検出(VNDetectBarcodesRequest)
長方形の物体を検出(VNDetectRectanglesRequest)
ビデオフレーム画像から物体を追跡(VNTrackObjectRequest)
VNRequest
画像分析のリクエストを行う。引数なしでイニシャライザをするか、VNRequestとError?を引数にもつクロージャーを入れる。
init(completionHandler: VNRequestCompletionHandler? = nil)
VNImageRequestHandler,VNSequenceRequestHandler
VNImageRequestHandler->同じ画像データにリクエストを複数実行
一つの画像に対してリクエストを実行するから効率的に分析できる。
VNSequenceRequestHandler→連続画像フレームにリクエストを実行
カメラからの連続フレーム画像に対してリクエストを実行するためのクラス。ビデオフレーム画像からトラッキングを行う場合に利用する。
また、これらのリクエストハンドラーで画像の向きを指定する(上向き)が正しく設定されているかどうか。
VNObservation
分析結果を表す。プロパティのconfidenceの精度を読み取れる。
var confidence: VNConfidence
このVNObservationを親クラスとしてサブクラスが何を分析したかにより分かれる。