iOSエンジニア諸氏のツイートを見ているとSwiftUIが圧倒的インパクトっぽい今回のWWDCですが、そのへんは識者の方々にお任せして、「その他フレームワーク」で気になった新APIを見ていきたいと思います。
まずはVision。
Visionもかなりアツい。
— Shuichi Tsutsumi (@shu223) June 3, 2019
- VNRecognizeTextRequest(今までの文字領域検出じゃなくて文字認識、いわゆるOCR!)
- VNDetectHumanRectanglesRequest
- VNAnimalDetector(今のところイヌネコw)#iOS13#WWDC19
"Analyzing Image Similarity with Feature Print"っていうサンプルによると、画像の類似度の計算もできるようになったっぽい
— Shuichi Tsutsumi (@shu223) June 3, 2019
人間検出
VNDetectHumanRectanglesRequest
人間を矩形で検出。
↓はOpenCV使ったやつですが、こういうのです。
ARKitのpeople segmentationがインパクトありすぎて「矩形で検出」というのは印象薄いですが、「こういうのもあったな」と頭の片隅に置いておくといつか用途があるかもしれません。
文字認識
VNRecognizeTextRequest
文字認識。今まであった文字領域検出じゃなくて、文字認識、いわゆるOCR的なやつです。
今まで無料で使えるやつだとtesseractとSwiftOCRぐらいしか選択肢がなかったのが、ついに標準でサポート・・・!感無量です。(対応言語は後で調べる)
対応言語はsupportedRecognitionLanguages(for:revision:)
というメソッドをたたけば調べられそう。あとでやってみます。
動物検出
VNDetectAnimalRectanglesReques
VNAnimalDetector
のtype propertyとして今のところcat
とdog
が用意されており、つまりイヌネコ認識が可能となります。ペットが写ってる写真とかを判別できるようになったわけですね。
画像の類似度を計算
VNGenerateImageFeaturePrintRequest
VNFeaturePrintObservation
"Analyzing Image Similarity with Feature Print"というサンプルが公開されており、画像間の類似度が計算できるようになったようです。後でコード読んでみます。
画像分類?
VNClassifyImageRequest
画像分類は前からできたはずだけど、この新クラスは何だろう?
Image Saliency
State of the Unionでも出てきたこのキーワード。"silent"は辞書によると「顕著な」(英英では"most noticeable or important.")の意味。
VNGenerateAttentionBasedSaliencyImageRequest
Generates a heat map that identifies the parts of an image most likely to draw attention.
画像内で、もっとも注意を引く部分を特定するヒートマップを生成・・・?"draw attention"な箇所ってのがよくわかりませんね。試してみます。
VNGenerateObjectnessBasedSaliencyImageRequest
Generates a heat map that identifies the parts of an image most likely to represent objects.
画像内で、もっともオブジェクトを表している部分を特定するヒートマップを生成する。ここでいう「オブジェクト」はこちらで指定できるのでしょうか。あとでもうちょっとAPIを見てみます。
VNSaliencyImageObservation
上2つのrequestの結果として得られるクラス。VNPixelBufferObservation
を継承し、グレースケールのヒートマップデータを持つ。
var salientObjects: [VNRectangleObservation]? { get }
というプロパティを持っていて、salient Objectsの矩形を複数保持できるようになっています。
Saliencyのサンプルコードとドキュメント
この"Saliency"関連では、"Highlighting Areas of Interest in an Image Using Saliency"というサンプルコードと、"Cropping Images Using Saliency"というドキュメントがあります。