10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vision.frameworkで画像解析の入門

Last updated at Posted at 2019-07-17

本稿について

Vision.frameworkを通じて機械学習について触れる、くらいの簡単な内容になっているわ。
簡単にどんなことができるのかな?くらいのレベルなのでまったくのど素人だぜ!って人向けよ。
多分ググっていくらでも出てくる情報なので過度な期待はしちゃいやよ。

Vision.frameworkとは

画像を解析したりしてくれる便利なフレームワークだわ。
CoreML(機械学習)のお手軽インターフェースって感じかしら。。
もっと深入りしたい人はCoreMLの学習が必要そうね。

何ができるのかしら?

Apple のリファレンス(https://developer.apple.com/documentation/vision?language=objc)
によると、

名前 内容
Object Tracking カメラでオブジェクトをトラッキングする
Rectangle Detection 長方形検出
Face Detection 顔検出
Barcode Detection バーコード検出
Human and Animal Detection 人間と動物の検出
Text Recognition テキスト認識
Text Detection テキスト検出

この辺がフレームワークに組み込まれている機械学習モデルを使ってできるようね。
もちろん、モデルをつくって独自に行うこともできるわ!

ちなみに
https://developer.apple.com/machine-learning/models/
こちらからモデルをダウンロードすることも可能となっているわ。
ぜひ使ってみてね☆

実装

今回は参考までに、顔検出のVNDetectFaceLandmarksのソースコードを貼っておくわね。
最低限な感じになっているから、この先にどんな実装をするかはあなた次第だわ。

@IBAction func leftEyebrow() {
    let request = VNDetectFaceLandmarksRequest { (request, error) in
        for observation in request.results as! [VNFaceObservation] {
            let points = observation.landmarks?.leftEyebrow?.pointsInImage(imageSize: self.originalImageView.frame.size)
            
            // points(CGPointの配列)で、imageViewに描画していくなどの処理を行う
        }
    }
    if let cgImage = self.originalImageView.image?.cgImage {
        let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
        try? handler.perform([request])
    }
}

超簡単に説明すると、適当なボタンを用意してタップすると、

  1. VNRequestのサブクラスのオブジェクトを作る(ここではVNDetectFaceLandmarksRequest)
  2. request発行
  3. 返却されたCGpointの配列を取得
  4. 描画など何かしらの処理
    上記が行われます。

このサンプルではleftEyebrow(向かって左眉)の座標を取得することができます。

今回はself.originalImageViewというUIImageViewのプロパティをを使っていますが、
応用していろいろなことをやってみると面白いですね。

今後は...

今回はVNDetectFaceLandmarksRequestでしたが、上述の通りVNTrackObjectRequestなど色々な解析方法があります。
だいたい同じような感じでいけると思いますので、。ぜひ試してみてください。

個人的には早く日本語のテキストの検出ができたら色々なところで使えそうだなーって思っています。
お楽しみに。

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?